Anexar registros a una tabla.

Todoexpertos",
En una Base de Datos Access 2003 Oficial situada en red de cierta complejidad, tengo una Tabla de Proveedores llamada "entradas-salidas"; el primer campo de cada registro es "id", campo autonumérico, sin clave primaria, indexado= SÍ, SIN duplicados.
Con cada nuevo registro, el campo "id" se va incrementando. Al mismo tiempo, el número "id" es utilizado para buscar un registro histórico dado y para imprimir el registro actual que se muestra en un formulario. Por ello, no se puede alterar la numeración de ese campo "id" en la Base oficial.
La cuestión es que ha veces la red va muy lenta y trabajo con una copia de la Base de Datos "fuera de línea" (en modo local). El resultado son -por ejemplo-, 50 registros nuevos que van numerados según el campo "id" del 1 al 50. No me importa que esos registros nuevos se renumeren aleatoriamente (su campo "id") al incluirlos en la Base Oficial.
El problema es como pasar esos (por ejemplo) 50 registros nuevos desde la Base local a la Base de Datos oficial. Una simple consulta de datos anexados da error de 50 filas que no se anexarán debido a infracciones de clave. Ello es lógico porque Access intenta anexar esos registros duplicando los números 1 al 50 del campo "id" lo que está prohibido por ser un campo que no admite duplicados.
La solución sería que esos nuevos registros se anexaran encima o a continuación del último registro existente. Por ejemplo, si en la Base de Datos oficial, el último registro es el 100, se debería cambiar el valor de los nuevos registros a añadir, del rango 1-50 al rango 101-150 y luego anexarlos.
La cuestión es ¿Cómo lo hago de forma automatizada mediante consultas?
Disculpa si no me he explicado correctamente.

1 respuesta

Respuesta
1
Pues... oh no me he enterado o no entiendo el problema, si esos 50 registros los anexas sin seleccionar el campo Id, en la tabla Oficial se numerarán con la numeración correlativa.
Es decir anexas todos los campos menos el Id para que se cree.
Me cuentas.
Hola. Pues sí lo has entendido. Es eso lo que buscaba y estaba confuso. Muchas gracias.
Ahora, si me permites, voy a ampliar mi pregunta.
Quiero mediante un botón en un formulario, llamar por código VBA a dos consultas; una que me anexe los datos y otra que borre todos los registros de la tabla para prepararla para una nueva sesión.
Las consultas serían:
INSERT INTO [proveedores] ( NIF, Direccion, CP ) IN 'C:\Proveedores.mdb'
SELECT [proveedores].NIF, [proveedores].Direccion, [proveedores].CP
FROM [proveedores];
DELETE FROM proveedores;
¿Cual sería el código VBA para ejecutar esas consultas? He probado esto:
Private Sub Comando1_Click()
On Error GoTo Err_Comando1_Click
Dim sql As String
strSQL = ". etcétera;"
cl.Execute strSQL
strSQL = ". etcétera;"
cl.Execute strSQL
Exit_Comando1_Click:
Exit Sub
Err_Comando1_Click:
MsgBox Err.Description
Resume Exit_Comando1_Click
End Sub
Y evidentemente no funciona. Access dice "Se requiere un objeto."
¿Me puedes echar una mano?
Muchas Gracias.
Con el método DoCmd.RunSql "Insert Into..................."

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas