Autonumerar campo en tabla o bien consulta.

Tengo una tabla (tabla1) que almacena una numeración, con solo un campo y registro... Y otra con distintos registros que puede variar cada vez (tabla2).

Como puedo hacer para que cada vez que se pulse un botón en un formulario me rellene un campo de la tabla2 aumentando en 1 cada registro.

¿O si se puede hacer mediante una consulta?

Respuesta
1

La mejor solución es que en la tabla2 tengas un campo autonumérico, así no tienes que hacer nada más. Cada vez que agregues un registro, el valor de ese campo se incrementará de forma automática.

Ante todo, gracias por tu tiempo y respuesta.

Pero esa opción no me serviría, necesitaría que coja el la numeración de ese campo de la tabla 1, y actualize los registros de la tabla 2.

ejemplo tabla 1 almacena el 26732

tabla 2

numeración campo2 campo3

26733 aaaa bbbbb

26734 ccccc dddddd

26735 eeeee ffffffff

gracias.

¿Y qué pasa si en la tabla 1 agregas un nuevo registro?, pasará del 26732 al 26733, que ya existe en la tabla 2.

No. Solo y siempre habrá un solo campo con un solo registro.

Gracias de nuevo

Y ese registro único, ¿cómo se actualiza?

cuando termine ese proceso que intento averiguar, se actualizara mediante una consulta de actualización. Ese ya lo tengo como hacerlo.

Lo que me falta ese este punto que me tiene bastante atascada.

Gracias nuevamente Salva por tu tiempo.

Sinceramente, no se para qué quieres tener ese jaleo de traspaso de números de un lado a otro... pero bueno.

Para que ese campo se incremente cuando pulses un botón has de poner lo siguiente en el evento Click:

Dim MiSql as string

' Donde pongo Tabla2 has de poner el nombre de la tabla, y donde pongo Numeración has de poner el nombre del campo.

MiSQL = "UPDATE Tabla2 SET Numeración = Numeración +1"

Currentdb. Execute MiSQL

Con esto, incrementarás el campo cada vez que pulses el botón. Aunque sigo sin entender para qué haces todos esos traspasos de datos... Ya me lo explicarás si quieres.

gracias de nuevo por tu pronta respuesta, pero no me sirve.

Te explico, a ver si tu ves otra forma mejor.

TABLA1, como te he dicho almacena una numera (NUMERO DE ALBARÁN),o (NUMERO FACTURA),

La tabla 2 es como una tabla temporal, que tiene las lineas de los pedidos de clientes.

Para asignarles numero de albarán, o de factura (a todos los pedidos de la tabla temporal,

mi idea era que se fuera a buscar a la tabla1 y "actualice" el campo de la tabla 2 con el número de albarán, incrementando cada registro en 1.

no se si ahora me he explicado mejor, de lo que ando buscando.

Gracias

Ahora entiendo lo que quieres hacer.

En la tabla 1 tienes los pedidos, cada uno con su albarán, y en la tabla 2 tienes los datos de los productos de ese pedido, ¿es correcto?.

Si es así, te estás complicando en exceso, lo más fácil es tener 2 tablas relacionadas, en la tabla 1 tienes un campo de tipo autonumérico que sea la clave primaria, ese campo será el que tiene el número de albarán o factura, y en la tabla 2 has de tener un campo que tenga el mismo nombre, el tipo de dato ha de ser entero largo.

Te vas a "Herramientas" -> "Relaciones", añades las 2 tablas y verás el campo que tiene la clave primaria resaltado en negrita, lo pinchas y lo arrastras encima del campo que tiene el mismo nombre en la tabla 2, aparecerá una ventana para que confirmes la relación, le das a "Aceptar" y Access te pintará una línea que une las 2 tablas.

A partir de ese momento, cuando agregues un registro (albarán nuevo) en la tabla 1, en la tabla 2 se pondrá ese mismo número en cada línea que sea de producto relativo a ese pedido. Es decir, relacionará cada producto con el albarán correspondiente.

Esta es la forma correcta de hacer un sistema de facturación.

Gracias de nuevo, pero ya te digo que no es lo que estoy buscando.

Solo busco esa solución, ya no solo para esto sino tambien para futuras cosas,

Tabla1 almacena una numeración 4623.

Tabla 2 distintos campos entre ellos Numalb

que mediante código, consulta, etc... asigne a cada registro de la Tabla 2: del campo Numalb la numeración +1, pero por cada registro pero que lo haga de golpe, no tener que ir registro por registro.

NumAlb campo2 campo3

4624 aaa bb

4625 ccc dd

4626 eee ff

....

Bueno, nuevamente gracias por tu tiempo.

Otra opción que me serviría seria que en una consulta

si tengo 10, 11 o lo que sea de registros apareciera un campo dentro de la consulta que me indique el numero de intentar de registro... No se si me explico.

Al igual que en un formulario en el selector de registros me sale el numero de registros que nos encontramos, que lo haga en un campo de una consulta...

Para hacerlo "de golpe" han de existir los registros antes de lanzar el proceso.

Si es así, se puede poner un botón para hacerlo.

Voy a montar una maqueta para ponerte algo que te funcione.

Gracias de nuevo por tu tiempo...

Sigo pensando que lo que haces no es correcto, y querer hacer algo no correcto para usarlo en el futuro no es una buena práctica, pero en fin, tú decides...

Necesito saber el nombre de las 2 tablas, del formulario, del campo correspondiente a la tabla1 que tiene el dato origen y el de la tabla2 que va a tener el dato de destino.

Un ejemplo sería el siguiente:

Sub Renumera()
Dim DatoOrigen as long
Dim Contador as long
Dim rs as recordset
DatoOrigen = Me CampoOrigenTabla1
Set rs = CurrentDb.OpenRecordset("Select * FROM Tabla2")
Contador = DatoOrigen + 1
Do Until rs.EOF
    Contador = Contador + 1
    rs.Edit
    rs.Fields("CampoDestino") = Contador    
    rs.Update
    rs.movenext
Loop
rs.Close
Set rs= Nothing
End Sub

Esto tendrás que modificarlo y adaptarlo a los nombres de controles, campos y tablas que tienes.

Gracias de nuevo por tu tiempo...

Probare este finde y te cuento.

Gracias

Si quieres, puedes poner la base de datos en un servidor tipo Dropbox, SkyDrive, GoogleDocs..., y pones el enlace por aquí,

Te la miro y te digo algo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas