Access - Generar numero consecutivo en campo de tabla

 
Vista:
sin imagen de perfil

Generar numero consecutivo en campo de tabla

Publicado por Gino (38 intervenciones) el 07/09/2012 05:00:51
Hola, por favor, necesito de su ayuda.

Tengo una tabla llamada productos con dos campos ( ID y producto ), en dicha tabla tengo 20 registros.

Lo que necesito es crear un codigo o macro que me permita llenar el campo ID con numeros consecutivos para las cantidad de registros existentes (Para este caso del 1 al 20, pero podria ser mas o tambien menos)

Y claro, si podria ingresar el 1er numero en un Imputbox seria mejor (por ejemplo si quisiera que empieze por algun numero especifico)

Por favor, espero haber sido claro para que puedan ayudarme

Gracias por su apoyo
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
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Generar numero consecutivo en campo de tabla

Publicado por Neckkito (1157 intervenciones) el 07/09/2012 15:56:00
Hola otra vez:
Creo que he leído tu consulta demasiado rápido, puesto que la solución que te he dado es para crear un autonumérico manual a medida que metes datos.
Puedes echar un vistazo a este otro ejemplo, que creo que resuelve mejor lo que pides: http://neckkito.eu5.org/index.php?option=com_content&view=article&id=169:rellenado-autonumerico-en-form-continuo&catid=42:ejemplos-de-formularios&Itemid=55
A ver si ahora sí
Saludos,
Neckkito
... http://neckkito.eu5.org ...
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
sin imagen de perfil

Generar numero consecutivo en campo de tabla

Publicado por Gino (38 intervenciones) el 10/09/2012 22:47:08
Neckkito, gracias por el apoyo.
Me sirvio de mucho este codigo; solo me queda una duda.

He observado que para que este codigo funcione es necesario que el origen de registro (Tabla donde se encuentra el campo ID) este vinculado al form.

Como seria si no quisiera vincular la tabla al formulario, osea, que lo genere mediante le recorset diecto a la tabla.

Gracias


Private Sub Form_Open(Cancel As Integer)
'Declaramos las variables
Dim num As Long
Dim rst As DAO.Recordset
'Inicializamos el contador
num = 1
'Duplicamos el recordset del formulario
Set rst = Me.Recordset.Clone
'Si no hay registros salimos del proceso
If rst.RecordCount = 0 Then GoTo Salida
'Nos movemos al primer registro
With rst
.MoveFirst
'Comenzamos el proceso de recorrido de registros
Do Until .EOF
'Cambiamos la numeración del registro actual
.Edit
.Fields("ID").Value = num
.Update
'Añadimos una unidad al contador
num = num + 1
'Nos movemos al siguiente registro
.MoveNext
Loop
End With
'Refrescamos la información del formulario
Me.Refresh
Salida:
'Cerramos conexiones y liberamos memoria
rst.Close
Set rst = Nothing


End Sub


Ah, y Felicitaciones por la pagina de acces, muy buena ayuda.. Excelente
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
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Generar numero consecutivo en campo de tabla

Publicado por Neckkito (1157 intervenciones) el 10/09/2012 23:32:28
Hola!
Ante todo muchas gracias por tus amables palabras: me alegra mucho saber que la página te ha gustado y te ha sido de ayuda.

La solución a tu duda es muy sencilla: basta que definas el recordset como quieras. Por ejemplo, si la tabla que quieres "manipular" se llama TGino deberías definir el recordset como

Set rst = currentdb.openrecorset("TGino",dbOpenTable)

Lógicamente, los Fields que se editen deberán corresponderse a los campos que existan en TGino (es obvio, pero lo puntualizo por si acaso).

Evidentemente, el código anterior (el que tu apuntas en tu mensaje) está asociado al evento "Al abrir" del formulario, pero no hay problema con asignarlo al evento "Al hacer click" de un botón de comando.

Y poca cosa más. A ver si con esto "despejo esa duda"

Un saludo,

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
sin imagen de perfil

Generar numero consecutivo en campo de tabla

Publicado por Gino (38 intervenciones) el 13/09/2012 17:42:49
Neckkito, gracias por compartir tus conocimientos.

Modifique el codigo y me queda asi:

Private Sub Comando12_Click()
'//Requiere registrar la librería "Microsoft DAO 3.6 Object Library" o módulo equivalente//
'Declaramos las variables
Dim num As Long
Dim rst As DAO.Recordset
'Inicializamos el contador
num = 1
'Duplicamos el recordset del formulario

'Set rst = Me.Recordset.Clone
Set rst = CurrentDb.openrecorset("TMP_Informe_NC_ERR", dbOpenTable)

'Si no hay registros salimos del proceso
If rst.RecordCount = 0 Then GoTo Salida
'Nos movemos al primer registro
With rst
.MoveFirst
'Comenzamos el proceso de recorrido de registros
Do Until .EOF
'Cambiamos la numeración del registro actual
.Edit
.Fields("ID").Value = num
.Update
'Añadimos una unidad al contador
num = num + 1
'Nos movemos al siguiente registro
.MoveNext
Loop
End With
'Refrescamos la información del formulario
Me.Refresh
Salida:
'Cerramos conexiones y liberamos memoria
rst.Close
Set rst = Nothing


End Sub


Sin em bargo al ejecutar me sale un msje de error de complicacion que dice que no se encontro el metodo o el dato mienbro en la line a de codigo Set rst = CurrentDb.openrecorset("TMP_Informe_NC_ERR", dbOpenTable).

Yo no conosco mucho del codigo que brindas, pero estoy investigando.

Por favor, nuevamente tu apoyo Nikkito
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
Imágen de perfil de Neckkito
Val: 529
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Generar numero consecutivo en campo de tabla

Publicado por Neckkito (1157 intervenciones) el 13/09/2012 18:31:39
Hola!
Comprueba que tengas registrada la referencia "Microsoft DAO 3.6 Object Library". Si no sabes cómo se hace eso te lo explico:
- Te vas al editor de VB (con Access abierto, pulsa ALT+F11)
- Te vas a menú -> Herramientas -> Referencias...
- En la ventana que se te abre buscas esa referencia
- Marcas su check y aceptas.

A ver si así te reconoce el DAO.Recordset.

Un saludo,

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

Generar numero consecutivo en campo de tabla

Publicado por Iván (1 intervención) el 26/01/2015 23:17:15
Respecto al error que refieres (de que no se encontró el método o el dato miembro en la line a de código "Set rst = CurrentDb.openrecorset("TMP_Informe_NC_ERR", dbOpenTable)" se debe simplemente a un error de escritura el script que amable nos compartió Neckkito ya que no está bien escrita la palabra "Recordset", esto es, si observamos bien, escribió "openrecorset" en lugar de "OpenRecordset". Una vez que corrijas esto todo será felicitad :).
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