Autor Tema: Ayuda con rellenar datagridview con select desde base datos Visual Basic  (Leído 9568 veces)

lucas1234

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 17
    • Ver Perfil
Hola, un auxilio
La funcion va muy bien. Al hacewr 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


Código: [Seleccionar]
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

« Última modificación: 15 de Septiembre 2014, 13:49 por Alex Rodríguez »

lucas1234

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 17
    • Ver Perfil
Re:Ayuda con rellenar datagridview
« Respuesta #1 en: 26 de Marzo 2014, 14:15 »
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

lucas1234

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 17
    • Ver Perfil
Re:Ayuda con rellenar datagridview
« Respuesta #2 en: 26 de Marzo 2014, 14:24 »
Estaba probando y probando y copie mal mi funcion
Aqui va la correcta

Código: [Seleccionar]
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

« Última modificación: 26 de Marzo 2014, 14:46 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Ayuda con rellenar datagridview
« Respuesta #3 en: 26 de Marzo 2014, 14:47 »
Hola lucas, para pegar código usa el icono # del editor del foro y escribe el código entre las etiquetas [ code ]  ...  [ / code], si no lo haces así el código resultará difícil de leer.
Responsable de departamento de producción aprenderaprogramar.com

lucas1234

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 17
    • Ver Perfil
Re:Ayuda con rellenar datagridview
« Respuesta #4 en: 26 de Marzo 2014, 18:08 »
Metiéndolo como código
A ver...
Código: [Seleccionar]
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

helvetico26

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 14
    • Ver Perfil
Re:Ayuda con rellenar datagridview
« Respuesta #5 en: 26 de Marzo 2014, 21:55 »
Prueba con esto:

myDataTable2.table("tablita").clear
MyAdapter2.fill(myDataTable2,"tablita")
BindingSource1.datasource = myDataTable2.table("tablita")
DataGridView2.DataSource = bindingsource1


lucas1234

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 17
    • Ver Perfil
Re:Ayuda con rellenar datagridview
« Respuesta #6 en: 26 de Marzo 2014, 23:31 »
Buena idea, pero aun no quiere andar el segundo datagridview
tmabien probé con resetear los datatbles despues de usarlos para rellenar el datagridview, pero nada
Que será?

lucas1234

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 17
    • Ver Perfil
Re:Ayuda con rellenar datagridview
« Respuesta #7 en: 26 de Marzo 2014, 23:51 »
Sigo probando, pero sin éxito

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?

Código: [Seleccionar]
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

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".