Os paso un procedimiento para resetear un autonumérico y que vuelva a numerar a partir de uno, sin tener que compactar la base de datos. He de decir que comparto totalmente la opinión de Víctor en cuanto a que los autonuméricos son unos campos que deben usarse para hacer de identificador de registros y no como campos contadores, para eso es mejor implementar una rutina tal y como él indica. Esta es una idea que empezó cuando al Búho se le metió entre ceja y ceja conocer el valor del siguiente autonumérico y una cosa lleva a la otra... Para llamar a este procedimiento hay que pasarle como argumentos el nombre de la tabla, el nombre del campo autonumérico y opcionalmente un objeto database (lo declaro Object por si las moscas). Si no se le pasa el argumento referente al objeto database, entonces entenderá que se quiere hacer en la base de datos actual. Hay una línea de código que se ejecutará sólo para Access 97, pues el método tiene un pequeño matiz (una vez borrados los registros hay que numerar a partir de -1) para esta versión que no es necesaria para las versiones posteriores. También, y dado que se trata de borrar registros, he puesto las consultas de acción entre instrucciones "Trans", para, en caso de error, dejar las cosas como estaban. Al procedimiento se le puede llamar así: resetAutonum "MiTabla", "MiAutonum" o bien, si se quiere hacer en otra base de datos: Dim db As Object Set db = DBEngine.OpenDatabase("c:\BaseLejana.mdb") resetAutonum "MiTabla", "MiAutonum", db Set db = Nothing y aquí el código: '******************************************* ' Función: resetAutonum ' ' Propósito: resetear un campo autonumérico ' y que empiece a contar desde 1, sin tener ' que compactar la base de datos. ' ' Autor: Juan M. Afán de Ribera y Francisco ' García Aguado (Búho) ' ' Enero 2003. ' ' *********** CÓDIGO *********************** Sub resetAutonum(tblName As String, _ fldAutonum As String, Optional db As Object) Dim strSQLDel As String Dim strSQLIns97 As String Dim strSQLIns As String strSQLDel = "Delete * From " & tblName strSQLIns97 = "Insert Into " & tblName & _ "(" & fldAutonum & ") Select -1 As tmp" strSQLIns = "Insert Into " & tblName & _ "(" & fldAutonum & ") Select 0 As tmp" If db Is Nothing Then Set db = CurrentDb On Error GoTo err_Trans DBEngine.BeginTrans db.Execute strSQLDel, 128 '128=dbFailOnError If SysCmd(acSysCmdAccessVer) = "8.0" Then db.Execute strSQLIns97, 128 End If db.Execute strSQLIns, 128 db.Execute strSQLDel, 128 DBEngine.CommitTrans Exit Sub err_Trans: MsgBox "Error: " & Err.Number & vbCrLf _ & Err.Description DBEngine.Rollback End Sub ' ************ FIN CÓDIGO **************************