Otra vez yo !
Hola brother, disculpa la molestia
Esta vez lo que quiero hacer es volcar sobre un datagrid el resultado de una consulta de selección que relaciona a varias tablas.
El datagrid lo utilizo de forma "manual", todo por código, y solo quiero usarlo para mostrar el resultado de la selección, sin embargo solo me muestra el último registro de los que me devuelve.
Si son cuatro los registros a mostrar me deja 3 filas en blanco y en la última me muestra el último registro.
Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\EM3\EM3.mdb")
Dim obtener As New OleDbCommand("select * from profesores")
Dim obt As OleDbDataReader
Dim cop As String
con.Open()
obtener.Connection = con
obt = obtener.ExecuteReader()
While obt.Read()
If obt(1).ToString = ComboBox1.Text Then
cop = obt(0).ToString
End If
End While
con.Close()
***************************************
El código de arriba lo utilizo para obtener el código de un campo seleccionado de un combobox. Es decir, en el combobox hay una lista de nombres y al seleccionar uno yo busco en la base de datos su respectivo código y lo guardo en la variable "cop"
****************************************
Dim com As New OleDbCommand("select p.nombre , c.nom_curso , a.nombre ,r.dias , r.hora_ini , r.hora_fin " & _
" from registro r , profesores p , alumnos a , cursos c " & _
"where(r.cod_profesor = p.codigo And r.codigo = a.codigo And r.cod_curso = c.codigo) " & _
" and r.cod_profesor = " & cop)
Dim resulta As OleDbDataReader
con.Open()
com.Connection = con
resulta = com.ExecuteReader()
Dim f As Integer
f = 0
While resulta.Read()
DataGridView1.Item(0, f).Value = resulta(0)
DataGridView1.Item(1, f).Value = resulta(1)
DataGridView1.Item(2, f).Value = resulta(2)
DataGridView1.Item(3, f).Value = resulta(3)
DataGridView1.Item(4, f).Value = resulta(4)
DataGridView1.Item(5, f).Value = resulta(5)
DataGridView1.RowCount += 1
f += 1
End While
End Sub
Cuando hago el bucle "while resulta.read()" no me genera ningún error, pero no se muestran bien los datos en el datagrid. Es decir, Si son cuatro los registros a mostrar me deja 3 filas en blanco y en la última me muestra el último registro.
Esta vez lo que quiero hacer es volcar sobre un datagrid el resultado de una consulta de selección que relaciona a varias tablas.
El datagrid lo utilizo de forma "manual", todo por código, y solo quiero usarlo para mostrar el resultado de la selección, sin embargo solo me muestra el último registro de los que me devuelve.
Si son cuatro los registros a mostrar me deja 3 filas en blanco y en la última me muestra el último registro.
Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\EM3\EM3.mdb")
Dim obtener As New OleDbCommand("select * from profesores")
Dim obt As OleDbDataReader
Dim cop As String
con.Open()
obtener.Connection = con
obt = obtener.ExecuteReader()
While obt.Read()
If obt(1).ToString = ComboBox1.Text Then
cop = obt(0).ToString
End If
End While
con.Close()
***************************************
El código de arriba lo utilizo para obtener el código de un campo seleccionado de un combobox. Es decir, en el combobox hay una lista de nombres y al seleccionar uno yo busco en la base de datos su respectivo código y lo guardo en la variable "cop"
****************************************
Dim com As New OleDbCommand("select p.nombre , c.nom_curso , a.nombre ,r.dias , r.hora_ini , r.hora_fin " & _
" from registro r , profesores p , alumnos a , cursos c " & _
"where(r.cod_profesor = p.codigo And r.codigo = a.codigo And r.cod_curso = c.codigo) " & _
" and r.cod_profesor = " & cop)
Dim resulta As OleDbDataReader
con.Open()
com.Connection = con
resulta = com.ExecuteReader()
Dim f As Integer
f = 0
While resulta.Read()
DataGridView1.Item(0, f).Value = resulta(0)
DataGridView1.Item(1, f).Value = resulta(1)
DataGridView1.Item(2, f).Value = resulta(2)
DataGridView1.Item(3, f).Value = resulta(3)
DataGridView1.Item(4, f).Value = resulta(4)
DataGridView1.Item(5, f).Value = resulta(5)
DataGridView1.RowCount += 1
f += 1
End While
End Sub
Cuando hago el bucle "while resulta.read()" no me genera ningún error, pero no se muestran bien los datos en el datagrid. Es decir, Si son cuatro los registros a mostrar me deja 3 filas en blanco y en la última me muestra el último registro.
2 Respuestas
Respuesta de Roberto Alvarado
1
Respuesta de achavesm302
-1