Clausula INSERT INTO para tablas externas

Tengo dos bases de datos y pretendo copiar los registros de la consulta de una de ellas (qtCONDUCTORESDESTINO) en una tabla de la otra (tCONDUCTORES) utilizando la clausula de SQL ACCESS INSERTT INTO.

La base de datos externa (la de destino) la he creado previamente, dandole el nombre del valor de un combobox del formulario tCONDUCTORES, y lo hace sin problemas. Es por esto que en el codigo que a continuacion escribo extraigo la cadena de texto de la ruta de la base de datos de destino mediante "CurrentProject.Path" y el valor del cuadro de texto que le da nombre.

Este es mi codigo:

---------------------------------------------------------------------------

Public Sub CopiarBaseDeDatos()
Dim db As DAO.Database

Dim NombreBaseDatos as string

NombreBaseDatos  = CurrentProject.Path & "\" & Forms!tCONDUCTORES.cbxDestino & ".accdb"
Set db = currentDb
db .Execute "INSERT INTO tCONDUCTORES IN '" _
& NombreBaseDatos _
& "' SELECT * " _
& "FROM qtCONDUCTORESDESTINO;"
db.Close
Set db = Nothing

End Sub

------------------------------------------------------------------------------

Al ejecutar este codigo me da el siguiente error:

"Se ha producido el error '3061' en tiempo de ejecucion.

Pocos parametros. Se esperaba 1"

¿Qué estoy haciendo mal?.

1 Respuesta

Respuesta
1

Pues ni a tu código ni a tu SQL le veo nada incorrecto. Lo único que se me ocurre (y no sé si será el caso) es que tu consulta qtCONDUCTORESDESTINO sea una consulta parametrizada, por eso el mensaje de error de que te falta un parámetro.

Si estoy en lo cierto, coméntame y miro de darte una solución.

Hola (y muchas gracias por tu rapida respuesta).

Uno de los campos de la consulta qtCONDUCTORESDESTINO tiene un criterio que es precisamente el valor del combobox cbxDestino del formulario tCONDUCTORES.

En el fondo todo lo que pretendo es seleccionar un conjunto de registros de la tabla tCONDUCTORES de la tabla origen (concretamente los que coincidan en uno de sus campos con el valor del combo cbxDestino) e incorporalos como nuevos registros en la tabla del mismo nombre (tCONDUCTORES) de una base de datos externa.

Es por esto que he creado en la base de datos tCONDUCTORES de origen una consulta parametrizada, ..., con la idea de copiar solamente el recordset de esta consulta a la tabla tCONDUCTORES  de la base de datos externa. (perdona el trabalenguas, no estoy seguro si me explico correctamente),

Un saludo

Ok, justo como pensaba.

La solución más sencilla es que en el código VBA sustituyas el SELECT * FROM qtCONDUCTORESDESTINO, por la SQL de esa consulta, es decir, que te quede algo así:

db .Execute "INSERT INTO tCONDUCTORES IN '" _
& NombreBaseDatos _
& "' SELECT Campo1, Campo2,...CampoX " _
& "FROM tCONDUCTORES WHERE Destino='" & Me.cbxDestino & "';"

Suponiendo que Destino sea un campo de tipo texto, si no, tendrás que quitarle als comillas simples.

A ver si lo logras. Si no, ponme aquí la SQL de la consulta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas