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.

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 Jesús
21/09/2007 - 10:06 | Informe spam
Gracias por tu ayuda Juan.
Empezaré a usar tablas temporales para los informes.

"Juan Diego Bueno" wrote:

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.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida