Codigo autonumerico en formulario access

Tengo un tabla llamada TUsuarios con varios campos entre otros uno llamado Codigo que es el que quiero que sea un autonumerico manual, el formualrio esta basado en la tabla en el evento al cargar tengo el siguiente codigo:

Private Sub Form_Current()

On Error GoTo Err_Form_Load
Dim miBD As Database, misRegistros As Recordset, miSql As String, miValor As Integer
Set miBD = CurrentDb
miSql = "SELECT Max(TUsuarios.Codigo) AS MáxDeId FROM TUsuarios;"
Set misRegistros = miBD.OpenRecordset(miSql, dbOpenSnapshot)
miValor = Nz(misRegistros!MáxDeId, 0) + 1
misRegistros.Close
Set miBD = Nothing
If Nz(Me.Codigo, -1) = -1 Then Me.Codigo = miValor
Exit_Form_Load:
Exit Sub
Err_Form_Load:
MsgBox Err.Description
Resume Exit_Form_Load
End Sub

tambien tengo un cmd  para añadir nuevos usuarios con el siguiente codigo:

DoCmd.GoToRecord , , acNewRec
On Error GoTo Err_Form_Load
Dim miBD As Database, misRegistros As Recordset, miSql As String, miValor As Integer
Set miBD = CurrentDb
miSql = "SELECT Max(TUsuarios.Codigo) AS MáxDeId FROM TUsuarios;"
Set misRegistros = miBD.OpenRecordset(miSql, dbOpenSnapshot)
miValor = Nz(misRegistros!MáxDeId, 0) + 1
misRegistros.Close
Set miBD = Nothing
If Nz(Me.Codigo, -1) = -1 Then Me.Codigo = miValor
Exit_Form_Load:
Exit Sub
Err_Form_Load:
MsgBox Err.Description
Resume Exit_Form_Load

Ni al cargar ni al dar a nuevo socio me funciona siempre me pone 0.

1 respuesta

Respuesta
1

¿Por qué lo complicas usando recordsets cuando con DMax lo haces más sencillo?

Dim miValor as Integer
miValor = Nz(DMax("Codigo","TUsuarios"), 0) + 1
If Nz(Me.Codigo, -1) = -1 Then Me.Codigo = miValor

O si no, mira el ejemplo Autonumérico manual de Neckkito.

El ejemplo de neckkito lo mire pero no me funciona tampoco

He colocado el codigo que me pasaste en el evento al cargar del formualrio y me pone 0 igualmente

Ya esta solucionado se me había colado un 0 como valor predeterminado

XD

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas