Problema con busqueda por caracteres
Publicado por Veronica (28 intervenciones) el 25/09/2009 14:48:01
Hola gente!
Primero q nada, gracias de antemano a quien pueda ayudarme.
Estoy metiendo mano a diestra y siniestra en el VB .NET, y me ha surgido un problema intentando hacer un código para que realice una búsqueda a medida q voy ingresando un texto...la cosa q este problema me esta volviendo loca y no logro dar con una solución.
Logro hacer el filtro, me muestra y hasta me deja seleccionar, es más puedo pasar el dato hacia otro formulario. Pero cuando intento abrir nuevamente el formulario como para poder elegir otra opción (en caso de haber sido la equivocada) me tira un error de excepción q me dice q la fila fue eliminada (es larguísimo pero si hace falta copio acá el error exacto q da) y cuando hago clic en aceptar (único botón q sale en la ventana) me muestra lo mas bien la grilla con todos los campos de la tabla.
¿Alguien tiene idea q puede ser?
Para más datos, enlazo la grilla con el dataset mediante el botón q la misma posee en su parte superior.
Acá les dejo el código del procedimiento q llama al formulario:
Private Sub cmdSeleccionarLocalidad_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdSeleccionarLocalidad.Click
frmSeleccionarlocalidad.showdialog()
If (frmseleccionarlocalidad.DialogResult = Windows.Forms.DialogResult.OK) Then
Me.txtCP.Text = frmseleccionarlocalidad.cp
End If
End Sub
-------------------------------------------------
Y del formulario donde esta todo y hace la búsqueda:
Public Class frmSeleccionarLocalidad
Public cp As Integer
'Dim BS As Windows.Forms.BindingSource = New BindingSource
Private Sub frmSeleccionarLocalidad_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.LocalidadesDataSet.Clear()
Me.LocalidadesTableAdapter.Fill(Me.LocalidadesData Set.Localidades)
dtgLocalidades.Refresh()
Me.txtBuscar.Clear()
Me.txtBuscar.Select()
End Sub
Private Sub txtBuscar_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtBuscar.TextChanged
Dim mitabla As DataTable = Me.LocalidadesDataSet.Localidades
Dim filas() As DataRow
filas = mitabla.Select("Localidad LIKE '" & txtBuscar.Text & "%'")
If filas.Length > 0 Then
dtgLocalidades.DataSource = filas
dtgLocalidades.Refresh()
End If
End Sub
Private Sub dtgLocalidades_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dtgLocalidades.CellDoubleClick
ObtenerCP()
End Sub
Private Sub ObtenerCP()
Dim row As Integer = Me.dtgLocalidades.CurrentRow.Index
cp = Me.dtgLocalidades.Item(0, row).Value.ToString
Me.DialogResult = Windows.Forms.DialogResult.OK
Me.Close()
End Sub
End Class
Primero q nada, gracias de antemano a quien pueda ayudarme.
Estoy metiendo mano a diestra y siniestra en el VB .NET, y me ha surgido un problema intentando hacer un código para que realice una búsqueda a medida q voy ingresando un texto...la cosa q este problema me esta volviendo loca y no logro dar con una solución.
Logro hacer el filtro, me muestra y hasta me deja seleccionar, es más puedo pasar el dato hacia otro formulario. Pero cuando intento abrir nuevamente el formulario como para poder elegir otra opción (en caso de haber sido la equivocada) me tira un error de excepción q me dice q la fila fue eliminada (es larguísimo pero si hace falta copio acá el error exacto q da) y cuando hago clic en aceptar (único botón q sale en la ventana) me muestra lo mas bien la grilla con todos los campos de la tabla.
¿Alguien tiene idea q puede ser?
Para más datos, enlazo la grilla con el dataset mediante el botón q la misma posee en su parte superior.
Acá les dejo el código del procedimiento q llama al formulario:
Private Sub cmdSeleccionarLocalidad_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdSeleccionarLocalidad.Click
frmSeleccionarlocalidad.showdialog()
If (frmseleccionarlocalidad.DialogResult = Windows.Forms.DialogResult.OK) Then
Me.txtCP.Text = frmseleccionarlocalidad.cp
End If
End Sub
-------------------------------------------------
Y del formulario donde esta todo y hace la búsqueda:
Public Class frmSeleccionarLocalidad
Public cp As Integer
'Dim BS As Windows.Forms.BindingSource = New BindingSource
Private Sub frmSeleccionarLocalidad_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.LocalidadesDataSet.Clear()
Me.LocalidadesTableAdapter.Fill(Me.LocalidadesData Set.Localidades)
dtgLocalidades.Refresh()
Me.txtBuscar.Clear()
Me.txtBuscar.Select()
End Sub
Private Sub txtBuscar_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtBuscar.TextChanged
Dim mitabla As DataTable = Me.LocalidadesDataSet.Localidades
Dim filas() As DataRow
filas = mitabla.Select("Localidad LIKE '" & txtBuscar.Text & "%'")
If filas.Length > 0 Then
dtgLocalidades.DataSource = filas
dtgLocalidades.Refresh()
End If
End Sub
Private Sub dtgLocalidades_CellDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dtgLocalidades.CellDoubleClick
ObtenerCP()
End Sub
Private Sub ObtenerCP()
Dim row As Integer = Me.dtgLocalidades.CurrentRow.Index
cp = Me.dtgLocalidades.Item(0, row).Value.ToString
Me.DialogResult = Windows.Forms.DialogResult.OK
Me.Close()
End Sub
End Class
Valora esta pregunta


0