Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: lucas1234 en 26 de Marzo 2014, 14:14
-
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
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
-
Estaba probando y probando y copie mal mi funcion
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
-
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.
-
Metiéndolo como código
A ver...
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
-
Prueba con esto:
myDataTable2.table("tablita").clear
MyAdapter2.fill(myDataTable2,"tablita")
BindingSource1.datasource = myDataTable2.table("tablita")
DataGridView2.DataSource = bindingsource1
-
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á?
-
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?
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