Autor Tema: Como asignar un valor específico a un registro  (Leído 28 veces)

Desconectado xavi

  • Administrador
  • Habitual
  • *****
  • Mensajes: 222
Como asignar un valor específico a un registro
« en: Abril 15, 2025, 04:41:21 pm »
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
Código: [Seleccionar]
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
Código: [Seleccionar]
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