none
Consulta a varias tablas de una base de datos RRS feed

  • Pregunta

  • Tengo una base de datos en SQL Server 2008, esta base de datos tiene varias tablas como ventas, partidas ventas, articulos, proveedores, etc. Mi pregunta es ¿Que tipo de consulta tengo que hacer para llenar un datagridview con los datos de varias tablas? 
    miércoles, 8 de mayo de 2013 20:06

Respuestas

  • yo usaria

    Public Function Llenardgv(cadSql As String) As DataTable
        Using  cnn As New SqlConnection(cadcon)
            
            Dim da As New SqlDataAdapter(cadSql, cnn)
            Dim dt As New DataTable
            da.Fill(dt)
            Return dt
            
        End Using
    End Function

    y luego lo unes

    Dim query As String = "Select Id_cliente,Nombre_Cliente,Apellidos,Direccion,Telefono,Sexo,Email,RFC,Ciudad from Clientes"

    DataGridView1.DataSource = Llenardgv(query)

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Propuesto como respuesta Sergio Parra miércoles, 8 de mayo de 2013 20:41
    • Marcado como respuesta Omar Ortiz miércoles, 22 de mayo de 2013 16:45
    miércoles, 8 de mayo de 2013 20:38
  • Hola bastaría con unir las tablas claro si es que estas se encuentran relacionadas con un INNER JOIN:

    Examples Inner Join

    Si tienes alguna duda entre el Inner Join, Left Join y Right Join revisa este enlace donde se explican sus diferencias:

    Foro SQL Server


    Si se solucionó tu consulta no olvides marcar la respuesta. Saludos

    • Marcado como respuesta Ciao Manuel miércoles, 23 de marzo de 2016 3:50
    miércoles, 8 de mayo de 2013 20:10
  • hola

    las tablas que quieres mostrar tienen algun tipo de relacion ? hay algun campo que las una

    porque podria ser

    SELECT V.fecha, PV.campo1, A.Descripcion
       FROM ventas V INNER JOIN [partidas ventas] PV ON V.id= PV.ventasid
       INNER JOIN articulos A ON V.articuloid = A.id
    como veras hay campos en las tablas para relacionar

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Ciao Manuel miércoles, 23 de marzo de 2016 3:50
    miércoles, 8 de mayo de 2013 20:20

Todas las respuestas

  • Hola bastaría con unir las tablas claro si es que estas se encuentran relacionadas con un INNER JOIN:

    Examples Inner Join

    Si tienes alguna duda entre el Inner Join, Left Join y Right Join revisa este enlace donde se explican sus diferencias:

    Foro SQL Server


    Si se solucionó tu consulta no olvides marcar la respuesta. Saludos

    • Marcado como respuesta Ciao Manuel miércoles, 23 de marzo de 2016 3:50
    miércoles, 8 de mayo de 2013 20:10
  • Para completar lo dicho por José, y después crear un DataTable por ejemplo y establecerlo a la Propiedad DataSource del Grid

    http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.datasource.aspx


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    miércoles, 8 de mayo de 2013 20:14
  • hola

    las tablas que quieres mostrar tienen algun tipo de relacion ? hay algun campo que las una

    porque podria ser

    SELECT V.fecha, PV.campo1, A.Descripcion
       FROM ventas V INNER JOIN [partidas ventas] PV ON V.id= PV.ventasid
       INNER JOIN articulos A ON V.articuloid = A.id
    como veras hay campos en las tablas para relacionar

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta Ciao Manuel miércoles, 23 de marzo de 2016 3:50
    miércoles, 8 de mayo de 2013 20:20
  • Muchas gracias por contestar tan rápido, lo voy a revisar. Tan pronto lo aplique a mi proyecto, escribiré como me fue...
    miércoles, 8 de mayo de 2013 20:22
  • Gracias por responder. Bueno yo cargo los datos en el datagridview de la siguiente manera: 

    Este código en un Modulo:

    Public Function Llenardgv(ByVal dgv As DataGridView, ByVal cadSql As String) As DataGridView
            Dim cnn As New SqlConnection(cadcon)
            Dim da As New SqlDataAdapter(cadSql, cnn)
            Dim ds As New DataSet
            cnn.Open()
            da.Fill(ds, "dt")
            cnn.Close()
            dgv.DataSource = ds.Tables(0)
            Return dgv
        End Function

    y este código en el formulario en donde tenga el datagridview:

     Llenardgv(DataGridView1, "Select Id_cliente,Nombre_Cliente,Apellidos,Direccion,Telefono,Sexo,Email,RFC,Ciudad from Clientes")

    No se si sea la manera mas correcta...

    miércoles, 8 de mayo de 2013 20:27
  • yo usaria

    Public Function Llenardgv(cadSql As String) As DataTable
        Using  cnn As New SqlConnection(cadcon)
            
            Dim da As New SqlDataAdapter(cadSql, cnn)
            Dim dt As New DataTable
            da.Fill(dt)
            Return dt
            
        End Using
    End Function

    y luego lo unes

    Dim query As String = "Select Id_cliente,Nombre_Cliente,Apellidos,Direccion,Telefono,Sexo,Email,RFC,Ciudad from Clientes"

    DataGridView1.DataSource = Llenardgv(query)

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Propuesto como respuesta Sergio Parra miércoles, 8 de mayo de 2013 20:41
    • Marcado como respuesta Omar Ortiz miércoles, 22 de mayo de 2013 16:45
    miércoles, 8 de mayo de 2013 20:38
  • Muchas gracias Leandro por contestar. Pues tengo tablas que tiene campos en común, por ejemplo la tabla artículos y proveedores. La tabla artículos tiene los siguientes campos: id_articulo, id_proveedor, nombre, fabricante, cantidad, etc y la tabla provedores los siguientes: id_proveedor, proveedor, direccion, telefono, etc. 

    miércoles, 8 de mayo de 2013 20:42
  • Gracias leandro. Perdona mi ignorancia, pero ¿Que diferencia hay entre la clase datagridview y datatable? 
    miércoles, 8 de mayo de 2013 20:58