none
Quiero consultar 3 tablas al mismo tiempo para llenar un Datagridview. RRS feed

  • Pregunta

  • Hola estoy intentando hacer 3 consultas para llenar mi Datagridview desde el FromLoad haber si me pueden ayudar les dejo mi codigo:

    Nota: El Primer Query sin problema ya que tiene su propio Datagridview. y los otros 3 los quiero mostrar en otro DataGridView

    Y solo me muestra 1 colsulta de los 3 que quiero Gracias por la ayuda.


    miércoles, 25 de noviembre de 2020 1:14

Todas las respuestas

  • Hola:

    Haces 3 consultas que son Query, Query1 y Query2.

    El Primer Query sin problema ya que tiene su propio Datagridview. y los otros 3 los quiero mostrar en otro DataGridView <
    Si una consulta rellena un Datagridview, el otro Datagridview solo se podra rellenar con las otras 2 consultas.

    En el codigo pone lo siguiente

    GridLista.DataSource=Dt            'Se visualiza el datatable Dt en el Datagridview GridLista
    GridProducto.DataSource=Dt1        'Se visualiza el datatable Dt1 en el Datagridview GridProducto
    GridProducto.DataSource=Dt2        ''Se visualiza el datatable Dt2 en el Datagridview GridProducto

    Resumiendo en el GridProducto cargas primero el DataTable Dt1 y despues cargas el DataTable Dt2, con lo que desaparece el Dt1

    Con este codigo yo no me entero que es lo que quieres hacer


    Un saludo desde Bilbo
    Carlos
    miércoles, 25 de noviembre de 2020 13:43
  • Lo que quiero hacer es que aparezcan los campos asiganos de esas tablas es decir 3 tablas ya que una esta cometada.

    miércoles, 25 de noviembre de 2020 16:34
  • Hola:
    Segun la imagen que has puesto las lineas comentadas son

    Dim Query3 As String = ................
    Dim adaptador3 ...........
    Dim Dt3 As New DataTable
    GridProducto.DataSource=Dt3

    En mi anterior post, NO hago referencia a ninguna de esas lineas.
    Sigo sin saber que es lo que realmente quieres, ¿Puedes explicarlo un poco mas?

    Un saludo desde Bilbo
    Carlos
    miércoles, 25 de noviembre de 2020 17:26
  • Hola 75Solis, 

      

    ¿Alguna novedad sobre la consulta realizada? ¿Han sido útiles las  respuestas proporcionadas?  

    Espero su respuesta.  

    Gracias por usar los foros de MSDN.  

    Andres Aguilar 

    ____________________________  

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN sientase en la libertad de contactar  MSDNFSF@microsoft.com. 

    jueves, 26 de noviembre de 2020 15:19
    Moderador
  • Si Claro, en dicha forma lo que hago es calcular los costos de productos y sus utiliades de cada producto.

    esto ya lo tengo y una vez calculado el costo y sus utilidades guardo en 3 Tablas Distintas las cuales son:

    Tb_Gastos otra Tb_GuardaProductos y lo ultima es Tb_Utilidades una vez guardado la  informacion en estas 3 tablas las quiero reflejar en un DataGridView llamado GridProducto por eso hago los 3 querys el problema que es que solo me muestra 1  y no todos es decir los 3 que hice.

    Gracias


    • Editado 75Solis jueves, 26 de noviembre de 2020 17:48
    jueves, 26 de noviembre de 2020 17:45
  • Hola:
    > Tb_Gastos otra Tb_GuardaProductos y lo ultima es Tb_Utilidades una vez guardado la  informacion en estas 3 tablas las quiero reflejar en un DataGridView llamado GridProducto por eso hago los 3 querys el problema que es que solo me muestra 1  y no todos es decir los 3 que hice. <
    En mi primer post te puse
    > Resumiendo en el GridProducto cargas primero el DataTable Dt1 y despues cargas el DataTable Dt2, con lo que desaparece el Dt1 <
    En un DataGridView NO se puede mostrar mas de 1 DataTable., siempre te mostrara el ultimo datatable que le asignes a la propiedad DataSource del DataGridView.
    Para comprobarlo mira el siguiente ejemplo

    En un Form como el de la imagen



    Copia y pega el siguiente codigo

    Option Explicit On
    Option Strict On
    Imports System.Data.SqlClient

    Public Class Form3
        Private msCadenaSQL As String = "Data Source=.\SQLEXPRESS;Initial Catalog=NorthWind;Integrated Security=True"

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim lsQuery1 As String = "SELECT CategoryID, CategoryName FROM Categories"
            Dim DT1 As New DataTable
            Dim lsQuery2 As String = "SELECT CustomerID, CompanyName FROM Customers"
            Dim DT2 As New DataTable
            Dim lsQuery3 As String = "SELECT ProductID, ProductName FROM Products"
            Dim DT3 As New DataTable
            Try
                Using lConexion As New SqlConnection(msCadenaSQL)
                    Using lDataAdapter1 As New SqlDataAdapter(lsQuery1, lConexion)
                        lDataAdapter1.Fill(DT1)
                    End Using
                    Using lDataAdapter2 As New SqlDataAdapter(lsQuery2, lConexion)
                        lDataAdapter2.Fill(DT2)
                    End Using
                    Using lDataAdapter3 As New SqlDataAdapter(lsQuery3, lConexion)
                        lDataAdapter3.Fill(DT3)
                    End Using
                End Using
            Catch ex As Exception
                Me.Cursor = Cursors.Default
                MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
            DataGridView1.DataSource = DT2
            DataGridView1.DataSource = DT3
            DataGridView1.DataSource = DT1
        End Sub

        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            Dim lsQuery1 As String = "SELECT CategoryID, CategoryName FROM Categories"
            Dim DT1 As New DataTable
            Dim lsQuery2 As String = "SELECT CustomerID, CompanyName FROM Customers"
            Dim DT2 As New DataTable
            Dim lsQuery3 As String = "SELECT ProductID, ProductName FROM Products"
            Dim DT3 As New DataTable
            Try
                Using lConexion As New SqlConnection(msCadenaSQL)
                    Using lDataAdapter1 As New SqlDataAdapter(lsQuery1, lConexion)
                        lDataAdapter1.Fill(DT1)
                    End Using
                    Using lDataAdapter2 As New SqlDataAdapter(lsQuery2, lConexion)
                        lDataAdapter2.Fill(DT2)
                    End Using
                    Using lDataAdapter3 As New SqlDataAdapter(lsQuery3, lConexion)
                        lDataAdapter3.Fill(DT3)
                    End Using
                End Using
            Catch ex As Exception
                Me.Cursor = Cursors.Default
                MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
            DataGridView1.DataSource = DT1
            DataGridView1.DataSource = DT3
            DataGridView1.DataSource = DT2
        End Sub

        Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
            Dim lsQuery1 As String = "SELECT CategoryID, CategoryName FROM Categories"
            Dim DT1 As New DataTable
            Dim lsQuery2 As String = "SELECT CustomerID, CompanyName FROM Customers"
            Dim DT2 As New DataTable
            Dim lsQuery3 As String = "SELECT ProductID, ProductName FROM Products"
            Dim DT3 As New DataTable
            Try
                Using lConexion As New SqlConnection(msCadenaSQL)
                    Using lDataAdapter1 As New SqlDataAdapter(lsQuery1, lConexion)
                        lDataAdapter1.Fill(DT1)
                    End Using
                    Using lDataAdapter2 As New SqlDataAdapter(lsQuery2, lConexion)
                        lDataAdapter2.Fill(DT2)
                    End Using
                    Using lDataAdapter3 As New SqlDataAdapter(lsQuery3, lConexion)
                        lDataAdapter3.Fill(DT3)
                    End Using
                End Using
            Catch ex As Exception
                Me.Cursor = Cursors.Default
                MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End Try
            DataGridView1.DataSource = DT1
            DataGridView1.DataSource = DT2
            DataGridView1.DataSource = DT3
        End Sub
    End Class

    Un saludo desde Bilbo
    Carlos
    viernes, 27 de noviembre de 2020 15:33