Visual Basic - varias bases de datos

Life is soft - evento anual de software empresarial
 
Vista:

varias bases de datos

Publicado por aldo (111 intervenciones) el 03/08/2007 21:45:15
Hola,
como hago la relacion (inner join) cuando las tablas estan en distintas bases de datos.
Las bases estan en SQL Server 7.0, pero las tablas que tengo que relacionar estan en distintas bases de datos...

por ejemplo...

quiero relacionar la tabla internaciones con la tabla afiliados para que cuando se cargue una internacion (base de datos INTERNACION), me pueda traer los datos del afiliado que esta en la base de datos AFILIADOS.

si estuvieran las dos tablas en la misma base de datos seria simple...

set rs=new recordset
rs.open "select i.*,a.apellido,a.nombre from internacion i inner join afilia a " & _
"on i.nroafi=a.nroafi", dbafi, adOpenDynamic, adLockOptimistic

donde dbafi es la conexion...

pero como hago cuando tengo que relacionar 2 tablas que estan cada una en una base de datos distinta???

se que tengo que crear dos conexiones para cada base de datos... por ej. para AFILIADOS una conexion que se llame (por ej) DBAFI, y para INTERNACION otra conexion que se llame DBINT.
Hasta ahi todo ok, pero a la hora de relacionar para traer los datos del afiliado como hago??

se entiende??

gracias por su ayuda...
saludos,
Aldo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:varias bases de datos

Publicado por kdlc (226 intervenciones) el 07/08/2007 21:17:59
Mira este SQL de ejemplo:
Select BaseDatos1.dbo.Clientes.ClienteID, BaseDatos1.dbo.Clientes.Nombre, BaseDatos2.dbo.Ordenes.FechaOrden from BaseDatos1.dbo.Clientes inner JOIN
BaseDatos2.dbo.Ordenes ON BaseDatos1.dbo.Clientes.ClienteID = BaseDatos2.dbo.Ordenes.ClienteID

BaseDatos1 = Primera BAse De Datos
Clientes = Tabla en Base Datos 1
BaseDatos2 = Segunda Base de Datos
Ordenes = Tabla en Base Datos 2
DBO = el dueno de la tabla


El select debes hacerlo de esta manera para seleccionar informacion de tablas en diferentes Bases de Datos

espero te sirva de algo.

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:varias bases de datos

Publicado por aldo (111 intervenciones) el 07/08/2007 21:36:35
hola...
gracias por tu respuesta!

lo voy a probar, aunque tengo algunas dudas...

yo hago lo siguiente...
rs.open "select ..........."

vos decis que escriba toda esa secuencia de sql dentre del rs.open??
y otra duda...
no se si me va a dar bolilla lo de dbo (que no se bien a que se refiere).

de todos modos, lo voy a probar...
muchisimas gracias por tu tiempo y ayuda!

saludos,
Aldo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:varias bases de datos

Publicado por kdlc (226 intervenciones) el 08/08/2007 00:03:46
Si, a eso me refiero pero en vez de poner toda ese SQL hazlo de esta manera
con respecto a DBO solo dejalo tal cual ... haz entendio todo lo demas?

dim sSQL as string
sSQL = "Select la consulta de datos que vas a enviar al SQL Server ...."
rs.open sSQL, tuconnection, el_cursor, el_lock, adcmdtext

Do while rs.eof = false
'Procesa la informacion que trajiste con la consulta SQL ...
...
Loop

Listo, a ver que sale ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:varias bases de datos

Publicado por aldo (111 intervenciones) el 08/08/2007 18:49:19
lo voy a probar...
te agradezco infinitamente tu predisposicion para ayudarme...
un pingazo!

te aviso en estos dias...
un saludo,
Aldo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:varias bases de datos

Publicado por aldo (111 intervenciones) el 08/08/2007 22:34:20
Hola...

probe con esta sentencia...

StrSql = "Select dbaccess.dbo.tramites.*,dbafi.dbo.afilia.apenom from dbaccess.dbo.tramites inner join dbafi.dbo.afilia on dbaccess.dbo.tramites.numero=dbafi.dbo.afilia.numero
where dbaccess.dbo.tramites.carnet=" & Val(txtCarnet) & " and dbaccess.dbo.tramites.niv=" & Val(txtNiv)

me sale el siguiente error...

"Error de sintaxis en la operacion JOIN"

esto me alienta un poco, ya que a lo mejor estoy escribiendo algo mal y la conexion a mas de una base de datos se puede realizar...

de todos modos probe con esto otro.... (que es muy parecido pero le quite algunas cosas)

StrSql = "Select dbaccess.dbo.tramites.*,dbafi.dbo.afilia.apenom from dbaccess.dbo.tramites inner join dbafi.dbo.afilia on dbaccess.dbo.tramites.numero=dbafi.dbo.afilia.numero
where carnet=" & Val(txtCarnet) & " and niv=" & Val(txtNiv)

y me salio el mismo error...

te agradezco tu tiempo...!
un saludo
Aldo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:varias bases de datos

Publicado por kdlc (226 intervenciones) el 09/08/2007 18:08:40
Hola Aldo,
Te sugiero que entres tu query en el Enterprise Manager de SQL en una VISTA para validarla y te aseguras que funciona correctamente antes de ponerla en VB6.

si esta consulta es estatica y no cambia, podrias crear una VISTA en desde VB6 solo consultar la VISTA.

Suerte,

PD: por lo de pngazo, de donde cresta eres?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:varias bases de datos

Publicado por aldo (111 intervenciones) el 09/08/2007 21:20:33
Hola...
gracias nuevamente!

te cuento,
lo de la vista a traves del Enterprise no va a funcionar, ya que mis tablas estan armadas de la siguiente manera...

me conecto desde una pc con XP a un servidor Unix con SCO, donde se encuentran las dbf.
Cada sistema (hecho en FoxPro 2.6) esta en un directorio diferente...
por ej. el sistema de Afiliados esta en /????/Afilia, el sistema contable en /????/Conta, y asi con todos los sistemas.
La conexion que yo hice fue la siguiente:

Sistema donde voy a buscar la tabla tramites...
Set dbTram = New Connection
dbTram.Provider = "Microsoft.Jet.OLEDB.4.0"
dbTram.ConnectionString = "//Sistnvo/ibank"
dbTram.Properties("Extended Properties") = "dBASE 5.0;"";"
dbTram.Open

Sistema de Afiliados
Set dbAfi = New Connection
dbAfi.Provider = "Microsoft.Jet.OLEDB.4.0"
dbAfi.ConnectionString = "//Sistnvo/prusamba"
dbAfi.Properties("Extended Properties") = "dBASE 5.0;"";"
dbAfi.Open

Entonces... no puedo usar el Enterprise para vistas porque no utilizo SQL como motor de bases de datos.

Se entendio mas o menos??

Con respecto a lo de pingazo...! soy de Argentina, y el termino pingazo es sinonimo de buen tipo, de una persona que hace favores sin nada a cambio, algo parecido a eso...

saludos,
y gracias por todo!
Aldo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:varias bases de datos

Publicado por kdlc (226 intervenciones) el 10/08/2007 20:46:43
Aldo,
Descarta todo lo que dije anteriormente, pense que estabas usando MS SQL Server. en fin, te recomiendo crear una base de access y hagas un link a cada una de las tablas DBF fue necesitas. una vez que ya tienes las tablas linkeadas crea tu recordset como cualquier otro y realiza la consulta. ahora como tienes todas las tablas linkeadas en lo que ADO respecta todas ellas estan agrupadas dentro de la misma DB de access. bueno a ver si funciona esta idea.

saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:varias bases de datos

Publicado por aldo (111 intervenciones) el 13/08/2007 18:03:31
Voy a tratar de aprender bien todo lo que me recomendas y luego te digo que suerte tuve...
nunca hice lo que me aconsejaste...

muchas gracias por tu tiempo, luego te comento
saludos,
Aldo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:varias bases de datos

Publicado por aldo (111 intervenciones) el 15/08/2007 23:10:43
Hola, como estas?
bueno, probe linkear las dbf desde access y consegui hacer la que queria.

Pero la realidad es que se hace terriblemente lenta la conexion...
esto es asi? o estoy haciendo algo mal??

tarda alrededor de 3 segundos en traerme los datos...
si por cada consulta o transaccion que haga con tablas, me va a tardar eso, me echan del laburo...
y solo hice la prueba con dos tablas, no me quiero imaginar si la consulta la tengo que hacer con 3 o mas.

te parece una solucion viable esta?
o estoy haciendo algo mal yo??

gracias por tu tiempo nuevamente...
saludos,
Aldo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar