none
Problema Juntando Tablas de un .mdb y mostrarlas en un DataGrid RRS feed

  • Pregunta

  • Buenas tardes

    Lo que quiero hacer es:

    * Seleccionar un .mdb

    * Mostrar en un DataGrid 2 campos de Tabla1 y 1 de Tabla2

    * Guardar esta nueva tabla como otra base de datos

    Estoy estancado en el punto 2, puedo mostrar la tabla1 o tabla2 en el datagrid sin problemas, incluso cambiar el orden de las columnas, pero no logro hacer que me aparezcan 2 columnas de la tabla1 y 1 de la tabla2.

    He estado probando con INNER JOIN pero no me funciona, honestamente no sé que es lo que estoy haciendo mal.

    Mi mdb tiene 2 tablas, cada tabla contiene los campos: Campo1, Campo2, Campo3.

    quiero mostrar Tabla1.Campo1, Tabla1.Campo2, Tabla2.Campo3

    Acá dejo el código:

    Dim openFile As New OpenFileDialog()
            openFile.FileName = ""
            openFile.Filter = "Microsoft Access Application (*.mdb)|*.mdb"
    
            Dim res As System.Windows.Forms.DialogResult = openFile.ShowDialog()
            If res = System.Windows.Forms.DialogResult.Cancel Then
                Return
            End If
    
            Dim CONNECT_STRING As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " + openFile.FileName
            Dim cnn As New OleDbConnection(CONNECT_STRING)
            cnn.Open()
    
            Dim Sql As String = "SELECT Tabla1.Campo1, Tabla1.Campo2, Tabla1.Campo3"
            Sql += " FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.Campo3 = Tabla2.Campo3"
    
            Dim cmd As New OleDbCommand(Sql, cnn)
            Dim da As New OleDb.OleDbDataAdapter(cmd)
            Dim ds As New DataSet
            da = New OleDbDataAdapter(cmd)
            da.Fill(ds, "joined")
            dGrid.DataSource = ds.Tables("joined")
            cnn.Close()

    Como dije, mostrar información de una sola tabla no me dá problemas, pero al agregar Inner Join, me muestra la tabla vacía.

    Gracias por la ayuda

    viernes, 18 de diciembre de 2015 19:13

Respuestas

  • Todo parece correcto. Si te devuelve la tabla vacía al poner el inner join, la causa más probable es que la condición que has puesto en el ON no se cumple, es decir, que no existe ningún valor en el campo3 de la tabla 1 que sea igual que el campo3 de la tabla2, y en consecuencia no consigue emparejar ningún registro de la primera tabla con la segunda.
    • Marcado como respuesta Sologar lunes, 21 de diciembre de 2015 18:40
    sábado, 19 de diciembre de 2015 18:52

Todas las respuestas

  • Todo parece correcto. Si te devuelve la tabla vacía al poner el inner join, la causa más probable es que la condición que has puesto en el ON no se cumple, es decir, que no existe ningún valor en el campo3 de la tabla 1 que sea igual que el campo3 de la tabla2, y en consecuencia no consigue emparejar ningún registro de la primera tabla con la segunda.
    • Marcado como respuesta Sologar lunes, 21 de diciembre de 2015 18:40
    sábado, 19 de diciembre de 2015 18:52
  • Así es, ese era mi problema.

    muchas gracias por la ayuda.

    lo resolví creando una columna de ID y usé esa columna en el ON, para emparejar ambas tablas

    lunes, 21 de diciembre de 2015 18:40