elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Consultar 2 tablas en 1 DataSet [SOLUCIONADO]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Consultar 2 tablas en 1 DataSet [SOLUCIONADO]  (Leído 10,716 veces)
novalida

Desconectado Desconectado

Mensajes: 160


Ver Perfil
Consultar 2 tablas en 1 DataSet [SOLUCIONADO]
« en: 25 Marzo 2010, 21:36 pm »

Hola!!!
Llevo un par de días dando vueltas a este problema y no doy con la solución. A ver si alguien me puede orientar un poquito :)
Desde un formulario quiero realizar una consulta de los libros prestados de una biblioteca.
Las tablas Libros y Prestamos están en un archivo Access y sus columnas son:

Libros
Id_libro / Título / Autor

Prestamos

Nif_socio (de la tabla Socios) / Id_libro

Parte de mi código para la definición de conexión y consulta:
Código:
    Private oConexion As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data source=C:\Biblioteca.mdb")
    Private oDataAdapter As OleDbDataAdapter
    Private oCommandBuilder As OleDbCommandBuilder
    Private oDataSet As DataSet
    Private SQL As String

Código:
Private Sub ConsultaBasePrestamos()
        Me.SQL = "select * from Libros, Prestamos"
        Me.oDataAdapter = New OleDbDataAdapter(Me.SQL, Me.oConexion)
        Me.oCommandBuilder = New OleDbCommandBuilder(Me.oDataAdapter)
        Me.oDataSet = New DataSet

        Me.oConexion.Open()
        Me.oDataAdapter.Fill(Me.oDataSet, "Prestamos")
        Me.oDataAdapter.Fill(Me.oDataSet, "Libros")
        Me.oConexion.Close()

        Dim oDataRow0 As DataRow ' Variable para trabajar con las filas de Prestamos
        Dim oDataRow1 As DataRow 'Variable apra trabajar con las filas de Libros
        Dim oDataTable As DataTable ? 'Tabla para almacenar la consulta

        ' Procedimiento para obtener los libros prestados
        For i As Integer = 0 To Me.oDataSet.Tables(0).Rows.Count - 1
            oDataRow0 = Me.oDataSet.Tables(0).Rows(i)
            For j As Integer = 0 To Me.oDataSet.Tables(1).Rows.Count - 1
                oDataRow1 = Me.oDataSet.Tables(1).Rows(j)
                If oDataRow0("Id_libro") = oDataRow1("Id_libro") Then
                    oDataTable = (oDataRow1.Table)
                End If
            Next
        Next
    End Sub

Al ejecutar me da el siguiente error: "La columna 'Id_libro' no pertenece a la tabla Prestamos."
La columna existe en la tabla, pero no sé por qué me da este error.
Alguien me puede ayudar?

Gracias :)


« Última modificación: 28 Marzo 2010, 13:13 pm por novalida » En línea

CeLaYa


Desconectado Desconectado

Mensajes: 543



Ver Perfil
Re: Consultar 2 tablas en 1 DataSet
« Respuesta #1 en: 26 Marzo 2010, 18:12 pm »

que tal buenos días


tu problema esta en la consulta sql "select * from Libros, Prestamos"
lo que pasa es que debes poner que campos tomara de cada tabla, ponla así:

SELECT L.Id_libro, L.Título, L.Autor, P.Nif_socio
FROM Libros L, Prestamos P
WHERE L.id_libro = P.id_Libro


con esto tendras una lista de los libros prestados y ya no es necesario los for anidados
--------------------------------------------------------------------
   ' Procedimiento para obtener los libros prestados
        For i As Integer = 0 To Me.oDataSet.Tables(0).Rows.Count - 1
            oDataRow0 = Me.oDataSet.Tables(0).Rows(i)
            For j As Integer = 0 To Me.oDataSet.Tables(1).Rows.Count - 1
                oDataRow1 = Me.oDataSet.Tables(1).Rows(j)
                If oDataRow0("Id_libro") = oDataRow1("Id_libro") Then
                    oDataTable = (oDataRow1.Table)
                End If
            Next
        Next
-------------------------------------------------------------------------------------------


En línea

"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.
novalida

Desconectado Desconectado

Mensajes: 160


Ver Perfil
Re: Consultar 2 tablas en 1 DataSet
« Respuesta #2 en: 28 Marzo 2010, 13:12 pm »

Hola!!!
Gracias por tu respuesta. Al final el código quedó de esta manera y funciona como yo quería :)

Código:
Me.oDataAdapter = New OleDbDataAdapter("select Libros.Id_libro, Titulo, Autor from libros, prestamos where Libros.Id_libro = Prestamos.Id_libro", Me.oConexion)
        Me.oCommandBuilder = New OleDbCommandBuilder(Me.oDataAdapter)
        Me.oDataSet = New DataSet()


        Me.oConexion.Open()
        Me.oDataAdapter.Fill(Me.oDataSet, "libros")
        Me.oConexion.Close()

        Me.DataGridView1.DataSource = Me.oDataSet.Tables("Libros")

Muchas gracias
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Dudas para instalar tablas en OPHCRACK 3.2 (solucionado) « 1 2 »
Seguridad
Norlak 10 34,215 Último mensaje 13 Enero 2013, 03:17 am
por scan_41
como hacer una consultar de 3 tablas
Bases de Datos
Crarmon 4 3,761 Último mensaje 10 Febrero 2015, 21:01 pm
por Crarmon
Consultar tablas relacionadas en java de MYSQL
Java
soy_nicanor 3 6,378 Último mensaje 15 Febrero 2015, 16:34 pm
por Usuario Invitado
Como consultar datos de tablas relacionadas en Symfony 4.4 ORM Doctrine
Desarrollo Web
Pentesting! 0 3,238 Último mensaje 14 Noviembre 2021, 19:16 pm
por Pentesting!
Como consultar un trozo de un parámetro en varias tablas?
Bases de Datos
@XSStringManolo 2 6,170 Último mensaje 5 Diciembre 2021, 04:20 am
por @XSStringManolo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines