Noticias:

Reinstalando todo...

Menú Principal

Como asignar un valor específico a un registro

Iniciado por xavi, Abril 15, 2025, 05:41:21 PM

Tema anterior - Siguiente tema

xavi

Por necesidades "x" se requiere introducir un registro en una determinada posición de una tabla con un determinado valor en el campo autonumérico. No existe una forma sencilla de hacerlo así que debemos tirar de astucia.

Happy nos enseña un par de funciones que, bien colocadas en otro procedimiento, pueden obtener el resultado esperado.

Yo creo que hay que hacerlo en 3 pasos:

GetSeed para saber el próximo autonumérico (y guardarlo para el paso 3)
SetSeed para establecer el siguiente registro
(insertar el registro)
SetSeed con el valor guardado en paso 1


Obtener el siguiente autonumérico

Public Function GetSeed(Tabla As String, Campo As String) As Long
Dim cat As Object
   
    On Error Resume Next
    Set cat = CreateObject("ADOX.Catalog")
    ' para otra base de datos externa a la actual
    ' sustituir CurrentProject.Connection por objecto ADODB.Connection ADODB
    ' conectado a la base externa
    cat.ActiveConnection = CurrentProject.Connection
    GetSeed = cat.Tables(Tabla).columns(Campo).Properties("Seed")
    Set cat = Nothing
    On Error GoTo 0
   
End Function


Establecer el siguiente autonumérico

Public Function SetSeed(Tabla As String, _
                        Campo As String, _
                        SiguienteNumero As Long, _
                        Optional Intervalo As Long) As Boolean
Dim cat As Object
   
    On Error Resume Next
    Set cat = CreateObject("ADOX.Catalog")
    ' para otra base de datos externa a la actual
    ' sustituir CurrentProject.Connection por objecto ADODB.Connection ADODB
    ' conectado a la base externa
    cat.ActiveConnection = CurrentProject.Connection
    cat.Tables(Tabla).columns(Campo).Properties("Seed") = SiguienteNumero
    If Intervalo <> 0 Then
        cat.Tables(Tabla).columns(Campo).Properties("Interval") = Intervalo
    End If
    Set cat = Nothing
    On Error GoTo 0

End Function