Access - Consulta para generar autonumericos

   
Vista:
Imágen de perfil de Angel

Consulta para generar autonumericos

Publicado por Angel (8 intervenciones) el 10/08/2016 05:54:00
Hola Muchach@s, soy nuevo en el foro y recién me inicio en Access, ya he adquirido algunos conocimientos básicos, pero en la confección de mi base de datos me he encontrado con un problema.

Necesito que conforme vaya ingresando registros se genere un Id, que tenga los dos dígitos del año, el mes en número seguido de un auto numerico de 04 dígitos, y que se reinicie cada cambio de mes.

El Id quedaría así: 16080001 - 16080002

Este Id sería mi identificador, por más que he buscado no encuentro el código necesario, sólo he logrado colocar los dos dígitos del año.

De antemano agradezco sus respuestas.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Consulta para generar autonumericos

Publicado por Jefferson Jimenez (381 intervenciones) el 11/08/2016 08:12:11
Hola Angel

He preparado este código muy rápido, si tiene errores ruego me disculpes (tenia uff tiempo sin entrar a la web de programador)

De todas maneras, puedes sentirte libre de modificarlo a tu antojo (tu y quien lo desee)

Ok el código lo escribí, para que * -
* No solo reinicie con el mes, también reinicia con el cambio de año.
* Ademas puedes elegir la cantidad de ceros a la derecha que quieras colocar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
Option Compare Database
'************************************************************
'&                                                         &*
'&                       : || :                            &*
'&                         ||                              &*
'&                         ||                              &*
'&                         ||                              &*
'&                     . - || - .                          &*
'&                    (    ||    )                         &*
'&                     ) ( || ) (                          &*
'&                    /    ||    \                         &*
'&                   (     ||     )                        &*
'&                    `          `                         &*
'&                      ` ____ '                           &*
'&                                                         &*
'&               Jefferson Jimenez (JJJT)                  &*
'&                 Cabimas - Venezuela                     &*
'&                    Agosto - 2016                        &*
'&                                                         &*
'&                                                         &*
'&                                                         &*
'&                                                         &*
'&                                                         &*
'************************************************************
Enum ceros
Dos = 2
Tres = 3
Cuatro = 4
Cinco = 5
Seis = 6
End Enum
Function AutoNumerico(Id As String, Tabla As String, Campofrm As Control, cerosDer As ceros) As Long
Dim Ult, Pri, Sec, Def As String
Ult = Mid(DLast("" & Id & "", "" & Tabla & ""), 5)
If ComparaYear(Id, Tabla, Campofrm) = 0 Then
Pri = Format(Date, "yy")
Sec = Format(Date, "mm")
Select Case cerosDer
Case 2: Def = Format(1, "00")
Case 3: Def = Format(1, "000")
Case 4: Def = Format(1, "0000")
Case 5: Def = Format(1, "00000")
Case 6: Def = Format(1, "000000")
End Select
AutoNumerico = Pri & Sec & Def
Else
Pri = Left(DLast("" & Id & "", "" & Tabla & ""), 2)
If ComparaMes(Id, Tabla, Campofrm) = 0 Then
Sec = Format(Date, "mm")
Select Case cerosDer
Case 2: Def = Format(1, "00")
Case 3: Def = Format(1, "000")
Case 4: Def = Format(1, "0000")
Case 5: Def = Format(1, "00000")
Case 6: Def = Format(1, "000000")
End Select
AutoNumerico = Pri & Sec & Def
Else
Pri = Left(DLast("" & Id & "", "" & Tabla & ""), 2)
Sec = Mid(DLast("" & Id & "", "" & Tabla & ""), 3, 2)
Select Case cerosDer
Case 2: Def = Format(Ult + 1, "00")
Case 3: Def = Format(Ult + 1, "000")
Case 4: Def = Format(Ult + 1, "0000")
Case 5: Def = Format(Ult + 1, "00000")
Case 6: Def = Format(Ult + 1, "000000")
End Select
AutoNumerico = Pri & Sec & Def
End If
End If
End Function
Private Function ComparaMes(Id As String, Tabla As String, Campofrm As Control) As Integer
Dim db As DAO.Database
Dim rs As DAO.Recordset
  Set db = CurrentDb()
  Set rs = db.OpenRecordset(Tabla)
Do While Not rs.EOF()
  If Mid(rs(Id), 3, 2) = Format(Date, "mm") Then
   ComparaMes = ComparaMes + 1
  End If
   rs.MoveNext
 Loop
 rs.Close
  Set rs = Nothing
  Set db = Nothing
End Function
Private Function ComparaYear(Id As String, Tabla As String, Campofrm As Control) As Integer
Dim db As DAO.Database
Dim rs As DAO.Recordset
  Set db = CurrentDb()
  Set rs = db.OpenRecordset(Tabla)
Do While Not rs.EOF()
  If Left(rs(Id), 2) = Format(Date, "yy") Then
   ComparaYear = ComparaYear + 1
  End If
   rs.MoveNext
 Loop
 rs.Close
  Set rs = Nothing
  Set db = Nothing
End Function


Saludos desde Venezuela
Jefferson Jimenez
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Neckkito

Consulta para generar autonumericos

Publicado por Neckkito (1104 intervenciones) el 12/08/2016 11:36:33
Jefferson!!!! Menos mal que no cobras por líneas de código, que si no...!!!!! Ja, ja, ja... ;-)

¿Cómo estás? Me alegra muchísimo verte de nuevo por aquí. ¿Dónde andabas escondido? ;-)

Recibe un gran abrazo,

Neckkito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Angel

Consulta para generar autonumericos

Publicado por Angel (8 intervenciones) el 14/08/2016 13:59:45
Hola Muchas gracias por el código, he creado un formulario con un text box que he ligado al campo "Id", ahí pego el código, pero no funciona, me arroja error, estoy haciendo bien el procedimiento?, exactamente donde debo pegar el código??

Mi tabla se llamada "datos", el campo del id se llama "id" y el formulario se llama "ingreso"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Enrique Ramírez

Consulta para generar autonumericos

Publicado por Enrique Ramírez josenramroc@hotmail.com (617 intervenciones) el 23/08/2016 03:38:56
El código que subió Jefferson efectivamente no funciona ya que marca errores y como el autoriza a meterle mano pues ya lo hice funcionar, entren a mi sitio:

https://sites.google.com/site/jerrmex/ codigo access - descargas

busquen la opcion 113_GrabaAutoNumerico esta entre la opcion 10 y la 11 porque mi site ordena como texto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta para generar autonumericos

Publicado por Jefferson (381 intervenciones) el 23/08/2016 04:35:24
Hola a todos

Un abrazo gran amigo Miguel, siempre que pueda estaré colaborando con el foro.

También para ti Enrique años que no te leía en este foro (quizás porque casi no entro) igual te admiro como a los demás

Bueno Ángel aunque lo escribí muy rápido al momento, seguro estoy que si funciona (modestia aparte)

Sin ánimos de ofender, solo es cuestión de que analizaras el código y te fijaras que la function devuelve long (numero) significa que tu id de la tabla debe ser numérico

Obviamente la función debes dispararla en el evento antes de insertar los datos al formulario

Me.Id_del_formulario = AutoNumerico("nombre_id_en_la_tabla", "Nombre_de_tu_Tabla", Me.Id_del_formulario, Seis)

Ejemplo descarga el adjunto

Saludos Desde Venezuela
Jefferson Jimenez
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Angel

Consulta para generar autonumericos

Publicado por Angel (8 intervenciones) el 30/08/2016 07:26:32
Muchas Gracias Jefferson, he probado el código en tu archivo y funciona correctamente. Voy a insertarlo a un boton que he realizado en mi formulario. Un abrazo a la distancia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Angel

Consulta para generar autonumericos

Publicado por Angel (8 intervenciones) el 22/09/2016 20:23:29
Una consulta Jefferson, apelando a tus ganas de enseñar, en el archivo de ejemplo tu tienes una tabla llamada "tabla1" con el campo "Id". He analizado el código del Módulo 1 (donde esta la función autonumérico) y en ningún lugar aparece tabla1 -como para cambiar nombre a la tabla y que siga funcionando.
Lo que aparece en las primeras lineas es:
Function AutoNumerico(Id As String, Tabla As String, Campofrm As Control, cerosDer As ceros) As Long
Dim Ult, Pri, Sec, Def As String
Ult = Mid(DLast("" & Id & "", "" & Tabla & ""), 5)

Donde tendría que hacer la modificación para que funcione correctamente en mi tabla (que se llama "datos")
Por qué en tu código no aparece "tabla1", si esta existe en tu archivo.

Disculpa si las preguntas son "tontas", pero recién me inicio en access y tengo muchas dudas más..."
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Neckkito

Consulta para generar autonumericos

Publicado por Neckkito (1104 intervenciones) el 22/09/2016 22:32:52
Hola!

Con el permiso de Jefferson, te comentaré que las funciones pueden ser llamadas desde diferentes módulos. Sin haber visto el ejemplo, en alguna parte debe haber una llamada a la función y, a través de esos parámetros que tiene la función, se le pasan los valores que reclaman los argumentos de la función.

Por ponerte un ejemplo absurdo, si la función es

AutoNumerico(Id As String, Tabla As String, Campofrm As Control, cerosDer As ceros) As Long

La llamada podría ser (me lo invento):

i = AutoNumerico("CampoId", "Tabla1", "CampoX", 5)

Vete al ejemplo que colgó y, en el VBE, le das al botón de buscar, escribes el nombre de la función (Autonumerico) y marcas la opción "Buscar en todo el proyecto" (o algo parecido a eso). Le das a buscar siguiente - siguiente... etc. hasta que encuentres el código que hace la llamada a la función, y ahí verás cómo le pasa los parámetros, entre ellos, Tabla1 (entre comillas).

Saludos.

Neckkito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Angel

Consulta para generar autonumericos

Publicado por Angel (8 intervenciones) el 22/09/2016 23:20:16
Tienes razón, es "tal cual" dices. Muchas gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar