Sentencia Insert Into tabla IN tablaExterna

22/12/2003 - 10:56 por Mario Barro | Informe spam
Hola a todos/as;

Tengo una consulta contra un servidor SQL-Server que recupera una serie de
registros y pretendo insertarlo en otra tabla pero de Access.

Es decir, con un objeto ADO Connection establecco el proveedor para
trabajar con Sql-Server y la consulta queda así´.

INSERT INTO tablaAccess IN Path_bbdd_ExternaAccess.mdb
SELECT campo1, campo2, FROM tablaSqlServer

El problema es exclusivo en la clausula IN, ya que el resto está bien, los
campos son coincidentes, etc.

Como utilizo el proveedor para SQL-Server no me permite la insercción
directa en la tabla de acces que necesita otro proveedor.
¿Cómo puedo indicarle que la tabla externa es de access, es decir, un
ejemplo de como quedaría la sentencia en la zona IN indicando el proveedor
correcto.

Agradeceré cualquier sugerencia, ya que no he logrado sacarla.
Saludos

Preguntas similare

Leer las respuestas

#1 Rubén Vigón
22/12/2003 - 11:12 | Informe spam
Puedes utilizar «OpenDataSource», que te permite conectar a un origen de
datos mediante su proveedor OLEDB correspondiente; por ejemplo:

INSERT INTO OpenDataSource('Microsoft.Jet.OLEDB.4.0', 'Data
Source="c:\archivo.mdb"')...Tabla (Campo) VALUES ('Hola mundo!')

También podrías utilizar «OpenDataSource» para hacer un SELECT; por ejemplo:

SELECT * FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0', 'Data
Source="c:\archivo.mdb"')...Tabla

PD: Además de «OpenDataSource» dispones de «OpenRowset», de funcionamiento
similar. Échale un vistazo a ambas funciones en los BOL de SQL Server para
ver cuál se ajusta más a tus necesidades

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
Respuesta Responder a este mensaje
#2 Mario Barro
22/12/2003 - 12:25 | Informe spam
Gracias por tu rápida respuesta.

OpenDataSource era lo que necesitaba. Aunque ahora me han surgido un par de
problemas (uno lo he solucionado y el otro).

He tenido que dar acceso en el registro del servidor para que se puedan
ejecutar consultas ad-hoc al proveedor en conctreto. "DisllowadhocAccess" 0;

Establezco la conexión bien con el servidor (he de decir que dicha consulta,
en modo texto, se efectua desde un pc en red hacia el servidor y que la
tabla externa está en local) con ADO connection, pero al ejecutar la
consulta me devuelve lo siguiente

*************
[OLE/DB provider returned message: 'C:\bbddAcces.mdb' no es una ruta de
acceso válida. Asegúrese de que la ruta está correctamente y que esté
conectado al servidor donde se encuentra el archivo.] Microsoft OLED DB
provider for SQL Server.
**************

Y en principio la conexión contra el servidor SQL-Server se realiza y la
ruta local de la bbdd es correcta.

¿Sugerencias?
Respuesta Responder a este mensaje
#3 Rubén Vigón
22/12/2003 - 12:32 | Informe spam
Recuerda que la consulta se ejecuta en el servidor, luego la ruta
"C:\bbddAcces.mdb" se refiere al disco C: del servidor ¿dónde está el
archivo "bbddAcces.mdb", en el disco C: del servidor o del cliente?

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
Respuesta Responder a este mensaje
#4 Mario Barro
22/12/2003 - 12:45 | Informe spam
Está en local en el cliente. La idea es traer los datos una consulta a una
tabla en local.

Y esto obligaría entonces a compartir un recurso para que el servidor
pudiera acceder a él y a la bbdd en concreto.

Se complica la cosa un poco entonces, ya que no es posible este sistema,
esto me obligará a cambiar la lógica entonces.
Los datos en un recordest y rellenar la tabla de la bbdd local a pedal.
Respuesta Responder a este mensaje
#5 Rubén Vigón
22/12/2003 - 12:57 | Informe spam
Sí, me temo que necesitarías compartir un recurso en el cliente para que el
servidor acceda a la base de datos...

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida