Recuperar el resultado de un select en un datagridview
JeanMarc
-
Usuario anónimo -
Usuario anónimo -
Bonjour.
Estoy trabajando en un proyecto de gestión de alquiler de coches.
He creado un formulario para buscar información sobre clientes que ya existen en mi base de datos (Access).
He escrito una consulta SQL en el evento TextChanged de un textBox que me devuelve, en un DataGridView, la información sobre los clientes cuyos nombres comienzan con la letra que he especificado en el textBox, pero la consulta no se ejecuta.
Aquí está mi código:
Private Sub txtRecherche_TextChanged(sender As Object, e As EventArgs) Handles txtRecherche.TextChanged
dtgResult.Rows.Clear()
infocon.mareq = "Select MatCli, NomCli, PrenomCli from CLIENT where NomCli LIKE '" & Trim(txtRecherche.Text) & "*'"
Try
infocon.proc_connexion()
If infocon.rdr.Read Then
dtgResult.Rows.Add(infocon.rdr(0), infocon.rdr(1), infocon.rdr(2))
While infocon.rdr.Read
dtgResult.Rows.Add(infocon.rdr(0), infocon.rdr(1), infocon.rdr(2))
End While
End If
Catch ex As Exception
End Try
End Sub
Estoy trabajando en un proyecto de gestión de alquiler de coches.
He creado un formulario para buscar información sobre clientes que ya existen en mi base de datos (Access).
He escrito una consulta SQL en el evento TextChanged de un textBox que me devuelve, en un DataGridView, la información sobre los clientes cuyos nombres comienzan con la letra que he especificado en el textBox, pero la consulta no se ejecuta.
Aquí está mi código:
Private Sub txtRecherche_TextChanged(sender As Object, e As EventArgs) Handles txtRecherche.TextChanged
dtgResult.Rows.Clear()
infocon.mareq = "Select MatCli, NomCli, PrenomCli from CLIENT where NomCli LIKE '" & Trim(txtRecherche.Text) & "*'"
Try
infocon.proc_connexion()
If infocon.rdr.Read Then
dtgResult.Rows.Add(infocon.rdr(0), infocon.rdr(1), infocon.rdr(2))
While infocon.rdr.Read
dtgResult.Rows.Add(infocon.rdr(0), infocon.rdr(1), infocon.rdr(2))
End While
End If
Catch ex As Exception
End Try
End Sub
5 respuestas
-
Hola
Para publicar un código legible, gracias por usar las etiquetas de código, consulta este pequeño tutorial https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Por otro lado, tu título habla de un datagrid (control WPF) y el cuerpo del mensaje de datagridview (control Winform), no son las mismas tecnologías ni los mismos controles.
¿Puedes confirmar cuál estás utilizando?
--
Cuando era pequeño, el Mar Muerto solo estaba enfermo.
George Burns-
Bonjour.
Gracias por su respuesta.
De hecho, estoy utilizando un DataGridView en mi código y el código está en vb.net.
Aquí está el código:Private Sub txtRecherche_TextChanged(sender As Object, e As EventArgs) Handles txtRecherche.TextChanged dtgResult.Rows.Clear() infocon.mareq = "Select MatCli, NomCli, PrenomCli from CLIENT where NomCli LIKE '" & Trim(txtRecherche.Text) & "*'" Try infocon.proc_connexion() If infocon.rdr.Read Then dtgResult.Rows.Add(infocon.rdr(0), infocon.rdr(1), infocon.rdr(2)) While infocon.rdr.Read dtgResult.Rows.Add(infocon.rdr(0), infocon.rdr(1), infocon.rdr(2)) End While End If Catch ex As Exception End Try End Sub
Gracias de antemano por sus respuestas.
-
-
Sí, el código behind está en vb.net, pero la tecnología de la interfaz es winform.
En .net puedes tener varias otras tecnologías de interfaz- wpf
- asp
- uiApp
- etc….
¿Cuál es el tipo del objeto infocon?
¿El datagridview está vacío en ese momento? Si no, entonces debería empezar por vaciarlo
--
Cuando era pequeño, el Mar Muerto solo estaba enfermo.
George Burns-
-
L'objet infocon es de tipo InfoConnection, que es una clase que he creado. Esta clase me permite gestionar la conexión con la base de datos y la ejecución de consultas.
Aquí está su código:Public Class InfoConnexion Public cnn As SqlConnection Private macon As New OleDbConnection 'Declara una variable macon de tipo oledb conexión e instanciada(New) Public rdr As OleDbDataReader Private strcon As String Private cmd As OleDbCommand Public mareq As String Friend meq As String 'procedimiento que permite hacer la conexión y ejecutar los comandos sql Public Sub proc_connexion() strcon = connect 'permite la conexión a la base de datos macon = New OleDbConnection(strcon) macon.Open() cmd = New OleDbCommand(mareq, macon) rdr = cmd.ExecuteReader() End Sub Public Sub pro_deconnexion() rdr.Close() macon.Close() End Sub Public Function la_table() As DataTable strcon = connect 'permite la conexión a la bd macon = New OleDbConnection(strcon) macon.Open() cmd = New OleDbCommand(mareq, macon) ' Dim dt As New DataSet Dim ds As DataTable = New DataTable Dim dat As New OleDbDataAdapter(cmd) dat.Fill(ds) 'ds = dt.Tables(0) macon.Close() Return (ds) End Function End Class
-
Ok
No has respondido a la segunda pregunta, es decir, ¿está vacío el datagridview?
Por otro lado, si la conexión ya está establecida, creo que eso puede causar problemas.
¿Has ejecutado el código paso a paso para ver qué está sucediendo?
--
Cuando era pequeño, el Mar Muerto solo estaba enfermo.
George Burns-
Sí, el DataGridView está vacío. Lo vacié con la primera línea de código.
dtgResult.Rows.clear()
Ejecuté paso a paso y no hubo ningún error durante la ejecución. Solo que al llegar al nivel de la condición if :
If infocon.rdr.Read Then dtgResult.Rows.Add(infocon.rdr(0), infocon.rdr(1), infocon.rdr(2)) While infocon.rdr.Read dtgResult.Rows.Add(infocon.rdr(0), infocon.rdr(1), infocon.rdr(2)) End While End If
El código dentro de la estructura no se ejecuta.
Es decir, la condición no se verifica. Pensé que podría ser un problema con mi consulta, así que cambié la consulta y funcionó correctamente. Es en este punto donde estoy atascado.
-
-
Nunca utilizo un datareader, así que por si acaso, Read es un método pero no has puesto los paréntesis.
--
Cuando era pequeño, el Mar Muerto solo estaba enfermo.
George Burns -
¡Hola a todos! En relación con la visualización de un Select en un datagridview, también pueden ver este enlace: https://www.youtube.com/watch?v=H4DmXqMOY8I&feature=youtu.be
-
Hola Jacob.
No, no iré a ver tu video, aquí https://forums.commentcamarche.net/forum/affich-36859630-cours-sur-le-c#10 por qué.
-