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?
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.
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.
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.
- Compartir respuesta