Problema con contador numérico en access

Tengo un campo Contador que cuenta registros con el siguiente formato número de registro-año Ejm. 001-2010, 002-2010,... 200-2010, utilizando Dmax
Cuenta = DMax("Contador", "TblRegistros")+1
luego el contador se reinició con el cambio de año, 001-2011.
Pero en vez de contar el siguiente registro como 002-2011, cuenta 201-2011, porque 200 es el valor más alto del campo Contador.
¿Por favor me puede ayudar para solucionar este problema?
¿O cuál es la forma correcta de realizar este contador que cuente registros y con el cambio de año se reinicie en conteo?

1 respuesta

Respuesta
1
A la tabla la he llamado CodigoCorrelativo y al campo Código.
Function CrearCorrelativo()
Dim db As Database
Dim rs As Recordset
Dim rs1 As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("CodigoCorrelativo")
Set rs1 = db.OpenRecordset("Select Max(val(Left(Codigo,4))) as Mayor From CodigoCorrelativo where Mid([Codigo],6,4)=Right(Str(Year(Date())),4)")
If IsNull(rs1!mayor) = True Then
rs.AddNew
rs!Codigo = "0001/" + Right(Str(Year(Date)), 4)
rs.Update
Else
rs.AddNew
rs!Codigo = String(4 - Len(Str(rs1!mayor) + 1), "0") + Trim(Str(rs1!mayor + 1)) + "/" + Right(Str(Year(Date)), 4)
rs.Update
End If
End Function
Me cuentas.
Muchas gracias por su respuesta, ¿por favor me puede indicar en que evento del formulario debo pegar la función?
Podrías ponerlo en un botón para ejecutarlo cuando quieras, creas un botón independiente y en las propiedades del botón, en la acción Al hacer clic ---> Procedimiento de Evento ---> Picas en el botón de la derecha, el de los ... y pones el código:
Dim db As Database
Dim rs As Recordset
Dim rs1 As Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("CodigoCorrelativo")
Set rs1 = db.OpenRecordset("Select Max(val(Left(Codigo,4))) as Mayor From CodigoCorrelativo where Mid([Codigo],6,4)=Right(Str(Year(Date())),4)")
If IsNull(rs1!mayor) = True Then
rs.AddNew
rs!Codigo = "0001/" + Right(Str(Year(Date)), 4)
rs.Update
Else
rs.AddNew
rs!Codigo = String(4 - Len(Str(rs1!mayor) + 1), "0") + Trim(Str(rs1!mayor + 1)) + "/" + Right(Str(Year(Date)), 4)
rs.Update
End If
De este modo cada vez que hagas clic en el botón se ejecutará el código.
Si por ejemplo quieres que se ejecute cada vez que abras el formulario en las propiedades del formulario en la acción Al abrir harías lo mismo. Lo que te quiero decir es que el código lo puedes poner en cualquier evento, tanto del formulario como de los objetos que lo componen.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas