Estás en: Inicio >> Foros >> Informática >> Programación
Programación /

[VB] Inner join

Participa en el tema [VB] Inner join en el foro Programación.
Tengo un problema y se que ustedes me pueden ayudar tengo 2 bases access, una ...

Buscar en este tema:
1 2 >
 
  •  
    #1 [VB] Inner join
    Tengo un problema y se que ustedes me pueden ayudar
    tengo 2 bases access, una tiene los clientes y otra los pedidos
    clientes.mdb
    codCli=integer
    razonSocial=string

    pedidos.mdb
    codCli=integer
    descripcion=string

    Tengo una conexion ado para cada una, el problema es que no puedo hacer un cruce (por codCli) entre las tablas porque estan en distintas bases. Alguien sabe como hacerlo?
    +
     
    0
    Me gusta
     
    | Más
  • #2 Re: Inner join

    Podrias vincular una de las tablas en una de las bases de datos, por ejemplo vincular la tabla "pedidos" en la base de datos de "clientes", solo la vinculas a la hora de hacer la consulta y luego la liberas.

    De esa forma vas a poder trabajar con la tabla vinculada "pedidos" como si fuera local en la base de datos "clientes.mdb" de forma totalmente transparente.

    Si necesitas un ejemplo de como hacerlo avisame.

    Saludos!
    Me gusta este mensaje
  • #3 Re: Inner join

    Gracias!
    Pregunta, al vincular, no aumenta el tamaño de la base?
    Vos decis que la vinculo y luego la libero, como se hace eso? porque si lo hago desde access queda de manera fija
    muchas gracias!!!
    Me gusta este mensaje
  • #4 Re: Inner join

    No cabeza, si la importaras ahi si te creceria el tamaño de la BD pero al vincularla vos nomas creas un puntero a la tabla en la otra BD.

    Aca te paso 2 metodos, uno para vicular y otro para desvincular tablas (necesitas una referencia a "ADO Ext. 2.x for DDL and Security"):

    Código:
    Public Function VincularTabla(pTabla As String) As Boolean
       
       Dim tblLink As ADOX.Table
        On Error GoTo ctrlErr
       Set catDB = New ADOX.Catalog
       Set catDB.ActiveConnection = ConexionDestino
        'ConexionDestino es la conexion de la Base de datos donde se creara el vinculo (es del tipo ADODB.Connection)
        
       If DesvincularTabla(pTabla) Then
           Set tblLink = New ADOX.Table
           
           With tblLink
              .Name = pTabla
              'nombre con el que te vas a referir a la tabla vinculada en tus consultas 
              Set .ParentCatalog = catDB
              
              .Properties("Jet OLEDB:Create Link") = True
              .Properties("Jet OLEDB:Link Datasource") = ConexionOrigen
              .Properties("Jet OLEDB:Remote Table Name") = pTabla
            'ConexionOrigen paso completo de la Base de datos de origen (la que contiene la tabla a vincular)
    'Remote Table Name nombre de la tabla a vincular
           End With
           
           catDB.Tables.Append tblLink
           
           VincularTabla = True
        Else
           VincularTabla = False
        End If
        
       Exit Function
    ctrlErr:
        VincularTabla = False
    End Function
     
    Public Function DesvincularTabla(pTabla As String) As Boolean
        On Error GoTo ctrlErr
        
        DesvincularTabla = True
        catDB.Tables.Delete (pTabla)
        
        Exit Function
    ctrlErr:
        If Err.Number <> 3265 Then
            DesvincularTabla = False
        End If
        
    End Function
    
    Como veras no es dificil hacerlo, a la primer funcion podrias pasarle "ConexionDestino" ya como parametro, pero queda a criterio de cada uno.

    Espero te sirva, cualquier cosa avisa como te fue, saludos!
    Me gusta este mensaje
  • #5 Re: Inner join

    Gracias campeon, lo pruebo y aviso
    Igual lo hice desde access y funciona bien, igual voy a probar el codigo
    Saludos y gracias nuevamente
    Me gusta este mensaje
  • #6 Re: Inner join

    Si estas trabajando con Access, que en cuanto se trata de trabajar los datos, relaciones y propiedades de una base de datos, se queda bastante corto, siempre es mas recomendable que las restricciones y los manejos esten en el codigo... siempre y cuando se trate de Access (y aca estoy dejando de lado toda la teoria de base de datos y de programacion, para darle paso a la experiencia... usa MSDE!!! o SQL 2005 Express Edition, son gratis y usan el motor del MSSQL .... o usa MySQL... algo que sea un poco mas confiable que un Access)
    Me gusta este mensaje
  • #7 Re: Inner join

    Hola, pronto voy a migrar todo a mysql
    Con respecto al codigo, me tira error en la siguiente linea y me estoy volviendo loco, alguien sabe porque?

    Set catDB.ActiveConnection = ConexionDestino
    'ConexionDestino es la conexion de la Base de datos donde se creara el vinculo (es del tipo ADODB.Connection)

    Yo tengo:
    Set catDB.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + App.Path + "\data.mdb"
    De ahi va directo a capturar el error

    Muchas gracias!!!
    Me gusta este mensaje
  • #8 Re: Inner join

    Código:
    Set catDB.ActiveConnection = ConexionDestino
        'ConexionDestino es la conexion de la Base de datos donde se creara el vinculo (es del tipo ADODB.Connection) 
    ConexionDestino es del tipo ADODB.Connection, vos le estas pasando un string de conexion nomas, son tipos distintos, primero crea una conexion y despues seteasela.
    Saludos!
    Me gusta este mensaje
  • #9 Re: Inner join

    En el load del form tengo esto:
    adoR1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\data.mdb"
    adoR1.RecordSource = "select * from clientes"
    adoR1.Refresh

    sin embargo, no se como asignarle el valor
    gracias por la paciencia maxonico
    Me gusta este mensaje
  • #10 Re: Inner join

    Código:
     adoR1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\data.mdb"
    adoR1.RecordSource = "select * from clientes"
    adoR1.Refresh
    
    No crazy, ahi estas trabajando con un recordset; lo que vos necesitas es una conexion, no tengo el VB6 a mano si queres pasame tu mail y te agrego al msn asi me pasas tu codigo y te lo hago funcionar.

    Saludos!
    Me gusta este mensaje
1 2 >
Estás en: Inicio >> Foros >> Informática >> Programación


Estadísticas del tema
  • 12 RESPUESTAS
  • 2172 VISTAS
  • 4 USUARIOS RESPONDIERON
 
Ir arriba
Contacto | Acerca de | Ayuda | Términos Legales | privacidad | Pautas de convivencia | Mapa de los foros | TrabajÁ con nosotros
©2008 Psicofxp.com S.A. - Todos los derechos reservados
Certifica IAB