Cambio de Access a SQL Server 2005 Express

19/09/2007 - 10:54 por Jesús | Informe spam
Buenos días:

Siempre he trabajado con BD de Access y es la primera vez que trabajo con
SQL Server.

Tengo una Aplicación de Gestión programada en VB6 con bases de datos de
Access.
Debido al tamaño que están adquiriendo la bases de datos estoy cambiándolo a
SQL Server 2005 Express.

Los listados e informes están hechos con Crystal Report 9.

Para hacer los informes tengo una base de datos en cada ordenador de los
usuarios llamada Informes.mdb donde creo tablas para guardar los registros
que luego leerá Crystal para imprimir.

Estoy haciendo algo parecido a esto para grabar en la BD de Informes.mdb,
pero va muy lento:

Dim sCNXInformes as string
Dim cnInfomes as New adodb.conection
sCNXInformes = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data
Source=C:eport\informes.mdb;"
cnInformes.Open cnxString

Dim sCNXSQL1 as string
Dim sCNXSQL2 as string
sCNXSQL1 = "ODBC;Driver={SQL Server};Server=SERVIDOR;Database=BaseDeDatos1"
sCNXSQL2 = "ODBC;Driver={SQL Server};Server=SERVIDOR;Database=BaseDeDatos2"

Dm sql as string
sql = "INSERT INTO Tabla (Campo1, Campo2, Campo3) " & _
"SELECT B1.Campo1, B2.Campo2, B2.Campo3 " & _
"FROM [" & sCNXSQL1 & "].TablaBD1 AS B1 " & _
"INNER JOIN [" & sCNXSQL2 & "].TablaBD2 AS B2 " &_
"ON B1.CampoX = B2.CampoY"
cnInformes.Execute sql

¿Alguien sabe alguna otra manera de hacer algo parecido a lo anterior, pero
que vaya más rápido?. Yo creo que puede ir lento por utilizar la conexión de
access (cnInformes) para ejecutar la consulta de acción.

Gracias.
 

Leer las respuestas

#1 Juan Diego Bueno
19/09/2007 - 13:26 | Informe spam
Dos cosas:

¿Por qué no usas el propio SQL Server para crear las tablas para los
informes? Si el problema es que cada usuario tiene los suyos propios, puedes
usar tablas temporales que contengan en su nombre el del equipo o el del
usuario que pide los informes.

Otra cosa que puedes hacer es acceder a SQL Server, pero no por ODBC, sino
por OLE DB (aunque igual prefieres ODBC por alguna razón especial).

De ser así:
www.connectionstrings.com

Saludos

"Jesús" escribió en el mensaje
news:
Buenos días:

Siempre he trabajado con BD de Access y es la primera vez que trabajo con
SQL Server.

Tengo una Aplicación de Gestión programada en VB6 con bases de datos de
Access.
Debido al tamaño que están adquiriendo la bases de datos estoy cambiándolo
a
SQL Server 2005 Express.

Los listados e informes están hechos con Crystal Report 9.

Para hacer los informes tengo una base de datos en cada ordenador de los
usuarios llamada Informes.mdb donde creo tablas para guardar los registros
que luego leerá Crystal para imprimir.

Estoy haciendo algo parecido a esto para grabar en la BD de Informes.mdb,
pero va muy lento:

Dim sCNXInformes as string
Dim cnInfomes as New adodb.conection
sCNXInformes = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data
Source=C:eport\informes.mdb;"
cnInformes.Open cnxString

Dim sCNXSQL1 as string
Dim sCNXSQL2 as string
sCNXSQL1 = "ODBC;Driver={SQL
Server};Server=SERVIDOR;Database=BaseDeDatos1"
sCNXSQL2 = "ODBC;Driver={SQL
Server};Server=SERVIDOR;Database=BaseDeDatos2"

Dm sql as string
sql = "INSERT INTO Tabla (Campo1, Campo2, Campo3) " & _
"SELECT B1.Campo1, B2.Campo2, B2.Campo3 " & _
"FROM [" & sCNXSQL1 & "].TablaBD1 AS B1 " & _
"INNER JOIN [" & sCNXSQL2 & "].TablaBD2 AS B2 " &_
"ON B1.CampoX = B2.CampoY"
cnInformes.Execute sql

¿Alguien sabe alguna otra manera de hacer algo parecido a lo anterior,
pero
que vaya más rápido?. Yo creo que puede ir lento por utilizar la conexión
de
access (cnInformes) para ejecutar la consulta de acción.

Gracias.

Preguntas similares