Juanjo Luna

MVP Microsoft 365 Apps & Services 2023

LinkedIn Learning Instructor

Presidente de Access User Groups España

CEO Luna-Soft

Desarrollador

Consultor Informático

Juanjo Luna

MVP Microsoft 365 Apps & Services 2023

LinkedIn Learning Instructor

Presidente de Access User Groups España

CEO Luna-Soft

Desarrollador

Consultor Informático

Blog Post

ResetNumber: reinicializar por código un campo autonumérico

6 de febrero de 2024 ACCESS, El rincón de Happy, Tablas

Pregunta

¿Cómo puedo reinicializar por código un campo autonumérico?

Respuesta

 La función ResetNumber reinicializa un campo autonumérico, con opción a empezar a numerar en un número e intervalo concretos, tanto si el campo reside en una tabla de la base de datos actual como si reside en una tabla de otra base de datos.

Debo puntualizar que el propósito de los campos autonuméricos es para diferenciar de manera única a cada uno de los registros de una tabla. Para ello, el campo autonumérico debería tener la casilla “Indexado” con el valor “Sí(Sin duplicados)”.

Muchas veces los usuarios piensan que, tal vez por su nombre (Autonumérico), estos campos tienen como finalidad hacer las veces de campo contador. Pero aunque pueda parecer lo contrario, ese no es su cometido y el hecho de usarlos de esa manera traerá bastantes dolores de cabeza a quien lo intente. Si se quiere un campo contador, podeis buscar a pie de página, en la sección “Temas relacionados” para encontrar alternativas a los campos autonuméricos.

Argumentos

ArgumentoDescripción
TableNameRequerido. Nombre de la tabla que contiene el campo autonumérico
FieldNameRequerido. Nombre del campo autonumérico
FirstNumOpcional. Número por el que empezará a contar el autonumérico después de ser reinicializado
IntervalOpcional. Intervalo entre los números generados por el autonumérico
DBPathOpcional. Ruta y nombre de la base de datos donde reside el campo autonumérico. Si se omite este argumento o está vacío (“”), la función buscará en la base de datos actual

Ejemplo de uso

Dim ret As Long

    ret = ResetNumber("MiTabla", "Id", 1000, 1, "C:\MiBd.mdb")
    If ret = -1 Then
        MsgBox "El campo se reinicializó con éxito"
    Else
        MsgBox "Se ha producido el error: " & ret
    End If

Código

'---------------------------------------------------------
'
' ResetNumber
'
' Código escrito originalmente por Juan M Afán de Ribera.
' Estás autorizado a utilizarlo dentro de una aplicación
' siempre que esta nota de autor permanezca inalterada.
' En el caso de querer publicarlo en una página Web,
' por favor, contactar con el autor en
'
'     accessvbafaq@ya.com
'
' Este código se brinda por cortesía de
' Juan M. Afán de Ribera
'
Function ResetNumber( _
                     TableName As String, _
                     FieldName As String, _
                     Optional FirstNum As Long = 1, _
                     Optional Interval As Long = 1, _
                     Optional DBPath As String) As Long
                  
Dim db As Object 'DAO.Database
Dim SQL As String

    SQL = "ALTER TABLE " & TableName _
    & " ALTER COLUMN " & FieldName _
    & " COUNTER(" & FirstNum & ", " & Interval & ")"
    
    On Error GoTo err_ResetNumber
    If DBPath = "" Then
        Set db = CurrentDb
    Else
        Set db = DBEngine.OpenDatabase(DBPath)
    End If
    db.Execute SQL
    ResetNumber = -1
    
exit_Function:

    If Not db Is Nothing Then db.Close
    Set db = Nothing
    
    Exit Function
    
err_ResetNumber:

    ResetNumber = Err.Number
    Resume exit_Function
    
End Function
'---------------------------------------------------------

Créditos

con el fin de dar a conocer el trabajo de uno de los más grandes en el mundo de Access en español, y tras solicitar su permiso, replico este artículo de Juan M Afán de Ribera. Todos los derechos y autoría corresponden a él. Access & VBA FAQ – ResetNumber (archive.org)

Taggs:
Related Posts
Opciones de impresión a través de código

Pregunta Sé cómo imprimir un informe mediante código y sé cómo hacer para que aparezca el cuadro de diálogo imprimir,…

Totales por página

Cómo conseguir en un informe calcular sólo el total para cada página

Write a comment