Visual Basic.NET - Error de tipo al rellenar un datagridview

 
Vista:
Imágen de perfil de Jose Angel Martínez

Error de tipo al rellenar un datagridview

Publicado por Jose Angel Martínez (4 intervenciones) el 29/11/2020 09:14:27
Hola amigos, a ver si me pueden ayudar

Mi intención es filtrar un datagridview que ya contiene registros para que muestre solo los registros de un campo coincidentes con lo que voy escribiendo en un TextBox.
En el datagridview solo he dejado el campo APELLIDOS, el resto de campos de la tabla CLIENTES no aparece

Primero he creado un filtro en el tableadapter en la siguiente forma: SELECT APELLIDOS FROM CLIENTES WHERE (APELLIDOS LIKE '%' + ? + '%')

El filtro se llama: GetDataByApellidos

En el evento TextChanged del TxtBox (txtBuscar), he puesto lo siguiente:

Private Sub TxtBuscar_TextChanged(sender As Object, e As EventArgs) Handles TxtBuscar.TextChanged

Me.CLIENTEDataGridView.DataSource = Me.CLIENTETableAdapter.GetDataByApellidos(Me.TxtBuscar.Text)

End Sub


Al compilar no hay errores, pero en la ejecución, al pulsar enter (después de introducir la letra "a" en el TextBox me da un error de tipo de datos, como el siguiente:

System.InvalidCastException: 'La conversión de la cadena "a" en el tipo 'Integer' no es válida.'
Excepción interna
FormatException: La cadena de entrada no tiene el formato correcto


Si quito el Me. del DGV y del TA, me da el error:

System.IndexOutOfRangeException: 'No hay ninguna fila en la posición 0.'

¿Cómo puedo corregir este error? ¿Qué es lo que no estoy haciendo bien?

Muchas gracias por adelantado
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Error de tipo al rellenar un datagridview

Publicado por Phil Rob (1554 intervenciones) el 29/11/2020 10:35:53
Hola,

No soy seguro ...

Si tu filtro es una cadena, debe ser escrita como esta (si ? es un parametro para el TextBox) :

1
Filtro =  "SELECT APELLIDOS FROM CLIENTES WHERE (APELLIDOS LIKE '" & ? & "%'")

Y dar la cadena SQL : SELECT APELLIDOS FROM CLIENTES WHERE (APELLIDOS LIKE 'ContenidoDelTexBox%'

...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de José Angel

Error de tipo al rellenar un datagridview

Publicado por José Angel (4 intervenciones) el 29/11/2020 12:37:26
Tal como está escrito el Filtro funciona bien en ejecutar consulta del asistente cuando la genero en el tableadapter, pero no en ejecución. El problema es un error de tipo de datos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Error de tipo al rellenar un datagridview

Publicado por Phil Rob (1554 intervenciones) el 29/11/2020 13:34:36
Lo siento ...

No puede reflexionar mas sin ver mas código.

También debería saber si e filtro es para una sola letra o para una palabra (si este es para una palabra, no puede funcionar en el procedimiento TxtBuscar.TextChanged).

...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de José Angel

Error de tipo al rellenar un datagridview

Publicado por José Angel (4 intervenciones) el 29/11/2020 14:42:03
No hace falta más código.
En el TextBox se van introduciendo letras con la intención de que se encuentre un registro conforme se va llenanado el textBox. Como decía antes, la consulta está bien porque funciona al dar ejecutar en el generador de consultas sustituyendo el valor null por la cadena, según voy escribiendo se va actualizando la tabla con los registros que coinciden con la cadena que voy entrando letra a letra.
Esta misma consulta cuando pongo el adaptador en el código, ahí es donde falla, indicando que no se puede convertir el string a integer.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Error de tipo al rellenar un datagridview

Publicado por Phil Rob (1554 intervenciones) el 29/11/2020 16:48:12
No puedo comprender sin mas código.

Pero no es bien de escribir este :
1
2
3
4
5
Private Sub TxtBuscar_TextChanged(sender As Object, e As EventArgs) Handles TxtBuscar.TextChanged
 
Me.CLIENTEDataGridView.DataSource = Me.CLIENTETableAdapter.GetDataByApellidos(Me.TxtBuscar.Text)
 
End Sub

Este código significar que si buscas "AZERTY", el DataSource es cambiado inútilmente con A, tras con AZ, tras con AZE, AZER, ...

Buena diversion con tu código ....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jose Angel Martínez

Error de tipo al rellenar un datagridview

Publicado por Jose Angel Martínez (4 intervenciones) el 29/11/2020 19:50:59
Entonces ¿alguna sugerencia?

He cambiado el evento TextChanged a KeyPress, pero sigue todo igual.

Ya lo he solucionado.
El datagridview tenía un campo más que el filtro, el código, que no estaba en la sentencia SELECT y por ser numérico era el origen del error.
Al filtro le he añadido todos los campos de la tabla para que al seleccionar en el datagridview me vuelque todos los campos a un conjunto de controles textbox en el mismo formulario, finalmente el código que se ejecuta correctamente es:

1
2
3
4
5
6
7
8
Private Sub TxtBuscar_TextChanged(sender As Object, e As EventArgs) Handles TxtBuscar.TextChanged
    Me.DgvCLIENTES.Visible = True
    Try
        Me.CLIENTESTableAdapter.FillBy(Me.DbCensosDataSet.CLIENTES, TxtBuscar.Text)
    Catch ex As Exception
        System.Windows.Forms.MessageBox.Show(ex.Message)
    End Try
End Sub

Espero que sirva a algún otro usuario
Muchas gracias por intentar ayudarme
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Error de tipo al rellenar un datagridview

Publicado por Phil Rob (1554 intervenciones) el 29/11/2020 22:22:27
Gracias para la información.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar