Crear consecutivo en access desde una tabla temporal

Expertos sucede que tengo dos tablas una temporal y otra real, los dos manejan los mismos consecutivos, estoy creando una consulta que lleva los datos de la temporal a la real sin embargo muchas veces estos no se insertan pues contienen el mismo ID. Ejemplo

Tebla temporal:

id: 1, 2, 3, 4, 5

Tabla Real:

Id: 1, 2,6,7,8

En este caso cuando hago la consulta insertaría el id, 3,4 y 5. Lo que me gustaría es que al realizar la consulta me tomara la ultima + 1 asi:

Tabla real insertar:

Id: 1,2,6,7,8,9,10,11,12

1 respuesta

Respuesta
1

Lo que veo más sencillo de hacer es lo siguiente:

1.- En tu tabla temporal añade un nuevo campo y llámalo IdNuevo

2.- Crea la consulta de inserción de datos, supongamos que se llama CInserta, y para el campo Id de la tabla principal hazle la correspondencia con IdNuevo.

3.- En un botón de comando escribe el siguiente código:

...

Private Sub...

Dim elMax as long

Dim rst as dao.recordset

elMax=nz(dmax("Id","TablaReal"),0)

Set rst=currentdb.openrecordset("TablaTemp",dbOpenDynaset)

If rst.recordcount=0 then goto Salida

With rst

.movefirst

do until .eof

elMax=elMax+1

.edit

.fields("IdNuevo").value=elMax

.update

.movenext

Loop

end with

docmd.setwarnings false

docmd.openquery "CInserta"

docmd.setwarnings true

msgbox "Inserción correctamente realizada"

Salida:

rst.close

set rst=nothing

end sub

...

Ten en cuenta que te lo he escrito todo de memoria, así que te recomiendo que lo pruebes en una copia de tu bd. Si te sale algún error me comentas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas