none
Ayuda con rellenar datagridview RRS feed

  • Pregunta

  • Hola, un auxilio

    La funcion va muy bien. Al hacer click en una celda del datagridview1 me coloca ese valor en el Label_nombre_grande

    Luego consulta a la tabla todo sobre ese usuario Luego coloca bien los datos en Label_mes1, Label_consumo1, Label_mes2, Label_consumo2

    Pero, el datagridview2 siempre lo deja en blanco.

    Cuando hago la pueba manual desde mysql la consulta(la que dice en parte "MONTH(mes) = MOD(MONTH(CURDATE()), 12) - 2") que se usa para rellenar el datagridview2 me da resultados.. por eso supongo que hay algo en visual que estoy haciendo mal

    Cuando le digo que el datagridview2 lo rellene con mydatatable3 (la otra consulta que uso para rellenar los 4 label)... tambien me deja en blanco el datagridview2. Por eso comente esa linea

    A ver si pueden ayudarme a que visual me cargue la cosulta en mi datagridview2, la consulta ("select * from tablita Where nombre = ('" + Label_nombre_grande.Text + "') and MONTH(mes) = MOD(MONTH(CURDATE()), 12) - 2", con)

    Copio mi función que no entiendo

    Private Sub DataGridView1_CellContentClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
            If e.RowIndex = -1 Then
                Return
            End If
            'Dim loFila As DataGridViewRow = Me.DataGridView1.CurrentRow()
            Dim row As DataGridViewRow = DataGridView1.CurrentRow
            Label_nombre_grande.Text = CStr(row.Cells(0).Value)
    
            'Se crea un MySqlDataAdapter para obtener los datos de la base
            Dim MyAdapter3 As New MySqlDataAdapter("select * from tablita Where pagado = '0' and nombre = ('" + Label_nombre_grande.Text + "') and kwh is not null", con)
    
            'Se crea un DataTable que almacenará los datos desde donde se cargaran los datos al DataGridView
            Dim MyDataTable3 As New DataTable
    
            'Con la información del adaptador se rellena el DataTable
            MyAdapter3.Fill(MyDataTable3)
    
            'DataGridView2.DataSource = MyDataTable3
    
            If MyDataTable.Rows.Count >= 0 Then
                Label_mes1.Text = CStr(MyDataTable.Rows(0).Item("mes"))
                Label_consumo1.Text = CStr(MyDataTable.Rows(0).Item("kwh"))
    
                Label_mes2.Text = MyDataTable.Rows(1).Item("mes")
                Label_consumo2.Text = MyDataTable.Rows(1).Item("kwh")
    
                'Label22.Text = MyDataTable.Columns(1).ColumnName()
    
                'Se crea un MySqlDataAdapter para obtener los datos de la base
                Dim MyAdapter2 As New MySqlDataAdapter("select * from tablita Where nombre = ('" + Label_nombre_grande.Text + "') and MONTH(mes) = MOD(MONTH(CURDATE()), 12) - 2", con)
                '                                                                       cargar_registros("SELECT * FROM tablita WHERE MONTH(mes) = MOD(MONTH(CURDATE()), 12) - 1;", DataGridView1)
                'Se crea un DataTable que almacenará los datos desde donde se cargaran los datos al DataGridView
                Dim MyDataTable2 As New DataTable
    
                'Con la información del adaptador se rellena el DataTable
                MyAdapter2.Fill(MyDataTable2)
    
                DataGridView2.DataSource = MyDataTable2
                'Label_anterior.Text = CStr(MyDataTable2.Rows(0).Item("kwh"))
            Else
                MsgBox("ID no encontrado")
                Label_mes1.Text = ""
                Label_consumo1.Text = ""
         
              
    
            End If
    
        End Sub

    Por si acaso, la consulta (((("select * from tablita Where nombre = ('" + Label_nombre_grande.Text + "') and MONTH(mes) = MOD(MONTH(CURDATE()), 12) - 2", con)))) la uso en otro formulario y anda perfecto, y como decía, en misql me da resultados

    miércoles, 26 de marzo de 2014 13:19

Todas las respuestas

  • Copie mal la funcion por varioas pruebas que estaba haciendo

    Aqui va la correcta

    Private Sub DataGridView1_CellContentClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
            If e.RowIndex = -1 Then
                Return
            End If
            'Dim loFila As DataGridViewRow = Me.DataGridView1.CurrentRow()
            Dim row As DataGridViewRow = DataGridView1.CurrentRow
            Label_nombre_grande.Text = CStr(row.Cells(0).Value)

            'Se crea un MySqlDataAdapter para obtener los datos de la base
            Dim MyAdapter3 As New MySqlDataAdapter("select * from tablita Where pagado = '0' and nombre = ('" + Label_nombre_grande.Text + "') and kwh is not null", con)

            'Se crea un DataTable que almacenará los datos desde donde se cargaran los datos al DataGridView
            Dim MyDataTable3 As New DataTable

            'Con la información del adaptador se rellena el DataTable
            MyAdapter3.Fill(MyDataTable3)

            DataGridView2.DataSource = MyDataTable3

            If MyDataTable.Rows.Count >= 0 Then
                Label_mes1.Text = CStr(MyDataTable3.Rows(0).Item("mes"))
                Label_consumo1.Text = CStr(MyDataTable3.Rows(0).Item("kwh"))

                Label_mes2.Text = MyDataTable3.Rows(1).Item("mes")
                Label_consumo2.Text = MyDataTable3.Rows(1).Item("kwh")

                'Label22.Text = MyDataTable.Columns(1).ColumnName()

                'Se crea un MySqlDataAdapter para obtener los datos de la base
                Dim MyAdapter2 As New MySqlDataAdapter("select * from tablita Where nombre = ('" + Label_nombre_grande.Text + "') and MONTH(mes) = MOD(MONTH(CURDATE()), 12) - 2", con)
                '                                                                       cargar_registros("SELECT * FROM tablita WHERE MONTH(mes) = MOD(MONTH(CURDATE()), 12) - 1;", DataGridView1)
                'Se crea un DataTable que almacenará los datos desde donde se cargaran los datos al DataGridView
                Dim MyDataTable2 As New DataTable

                'Con la información del adaptador se rellena el DataTable
                MyAdapter2.Fill(MyDataTable2)

                'DataGridView2.DataSource = MyDataTable2
                'Label_anterior.Text = CStr(MyDataTable2.Rows(0).Item("kwh"))
            Else
                MsgBox("ID no encontrado")
                Label_mes1.Text = ""
                Label_consumo1.Text = ""
         
              

            End If

        End Sub

    miércoles, 26 de marzo de 2014 13:25
  • Buenas noches

    Mi pregunta es si se pueden usar dos datagridview en el mis formulario? Por alguna razón el segundo datagridview no funciona

    Cuando se abre este formulario carga un el datagridview1

    Cuando hago click en un nombre de la única columna de ese datagriview1, me rellena 5 labels y debería cargar el otro datagridview(DGV2). No lo hace. Al click en el datagridview1 crea una fila en el DGV2 pero en blanco y los nombres de las columnas y lo extraño es que son los nombres de la tabla "tablita", siendo que el DGV2 debería tener los datos de la tabla usuarios

    En una prueba que hice también me di cuenta que si al DGV2 le decía que me diera todos los campos de la tabla "cualquiera"(tabla que no existe) se comportaba de la misma manera que explicaba en el párrafo anterior. Ni siquiera me tiraba error

    En qué me equivoco?

    Imports MySql.Data.MySqlClient
    Imports MySql.Data
    
    Public Class deudores
    
        Dim con As MySqlConnection = New MySqlConnection("Server=localhost; user Id=user1; Password=multiredes; Database=prueba1")
        Dim cmd As MySqlCommand = New MySqlCommand()
    
        Public Sub deudores_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
            'Se crea un MySqlDataAdapter para obtener los datos de la base
            Dim MyAdapterNombres As New MySqlDataAdapter("select distinct(nombre) from tablita Where pagado = '0'", con)
    
            'Se crea un DataTable que almacenará los datos desde donde se cargaran los datos al DataGridView
            Dim MyDataTableNombres As New DataTable
    
            'Con la información del adaptador se rellena el DataTable
            MyAdapterNombres.Fill(MyDataTableNombres)
    
            'Se asigna el DataTable como origen de datos del DataGridView
            DataGridView1.DataSource = MyDataTableNombres
    
            MyDataTableNombres.Reset()
        End Sub
    
        Public Sub datagridviewsegunda()
    
            'Dim MyAdapter3 As New MySqlDataAdapter("select * from tablita Where nombre = ('" + Label_nombre_grande.Text + "') and MONTH(mes) = MOD(MONTH(CURDATE()), 12) - 2", con)
            Dim MyAdapterDGV2 As New MySqlDataAdapter("select * from usuarios", con)
    
            'Se crea un DataTable que almacenará los datos desde donde se cargaran los datos al DataGridView
            Dim MyDataTableDGV2 As New DataTable
    
            'Con la información del adaptador se rellena el DataTable
            MyAdapterDGV2.Fill(MyDataTableDGV2)
    
            DGV2.DataSource = MyDataTableDGV2
        End Sub
    
        Public Sub DataGridView1_CellContentClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
    
            'Dim loFila As DataGridViewRow = Me.DataGridView1.CurrentRow()
            Dim row As DataGridViewRow = DataGridView1.CurrentRow
            Label_nombre_grande.Text = CStr(row.Cells(0).Value)
    
            'Se crea un MySqlDataAdapter para obtener los datos de la base
            Dim MyAdapterLabels As New MySqlDataAdapter("select * from tablita Where pagado = '0' and nombre = ('" + Label_nombre_grande.Text + "') and kwh is not null", con)
    
            'Se crea un DataTable que almacenará los datos desde donde se cargaran los datos al DataGridView
            Dim MyDataTableLabels As New DataTable
    
            'Con la información del adaptador se rellena el DataTable
            MyAdapterLabels.Fill(MyDataTableLabels)
    
            MyDataTableLabels.Reset()
    
            If MyDataTableLabels.Rows.Count >= 0 Then
                'Label_nombre_grande.Text = CStr(MyDataTable2.Rows(0).Item("nombre"))
                Label_mes1.Text = CStr(MyDataTableLabels.Rows(0).Item("mes"))
                Label_consumo1.Text = CStr(MyDataTableLabels.Rows(0).Item("kwh"))
    
                Label_mes2.Text = MyDataTableLabels.Rows(1).Item("mes")
                Label_consumo2.Text = MyDataTableLabels.Rows(1).Item("kwh")
    
                datagridviewsegunda()
    
                'Label22.Text = MyDataTable.Columns(1).ColumnName()
    
            Else
                MsgBox("ID no encontrado")
                Label_mes1.Text = ""
                Label_consumo1.Text = ""
    
            End If
        End Sub
    
        Private Sub Button_volver_Click(sender As Object, e As EventArgs) Handles Button_volver.Click
            Me.Close()
        End Sub
    
    End Class

    miércoles, 26 de marzo de 2014 22:48
  • Hola:
    Veo que usas estas instrucciones

    MyDataTableNombres.Reset()
    MyDataTableLabels.Reset()

    Con esto consigues que el datatable se reinicie, es decir se quede sin datos.

    Un saludo desde Bilbo
    Carlos

    jueves, 27 de marzo de 2014 8:15
  • Hola:

    Podrias poner la estructura de la tabla "tablita"
    Lo que pretendes es que cuando haces click en una fila del DatagridView1, te muestre en el DatagridView2 los registros de ese nombre y ¿de que mes?

    Un saludo desde Bilbo
    Carlos

    jueves, 27 de marzo de 2014 9:32
  • Hola Juan Carlos. Si, lo hice pensando que las datatable entre sí tuvieran algún conflicto, por eso despues de llenar el datagridview con la informacion de la datatable, la vaciaba

    De cualquier forma, eliminando esos dos renglones en que reseteo las datatbles (MyDataTableLabels, MyDataTableNombres) se comporta igual

    Tambien probando en cambiar la fuente del DGV2, no funciona. Cómo puede ser que me cargue en los label la info de la datatable, y cargu el datagridview1, pero si le digo de cargar con la misma datatable el DGV2... no lo hace???

    Otra cosa mucho mas extraña. Eliminé la funcion datagridviewsegunda y DataGridView1_CellContentClick y agregué en la seccion deudores_Load la linea:

    DGV2.DataSource = MyDataTableNombres

    Que pasó? Muy extraño, al ejecutar, cargó bien el datagridview1, lo que es normal. Pero el DGV2 no lo cargó. Y como eliminé la función DataGridView1_CellContentClick , esperaba que no sucediera nada cuando hiciera click en ese datagrid, pero no. Al hacer click en el datagridview1, me cargó el DGV2, pero solo los nombre de las columnas, todo en blanco. COMO?! Guarda el visual algo en memoria??? Si eliminé todo el código que le decía que hacer al hacer click en el datagrid!

    Sí que no entiendo nada

    Ayuda

    jueves, 27 de marzo de 2014 13:44