none
Campos DataGridView no muestran tildes de BBDD mySQL RRS feed

  • Pregunta

  • Hola, este es mi primer mensaje en este foro y quisiera agradecer de antemano vuestro tiempo y conocimiento en dar con una respuesta válida.

    Estoy aprendiendo a programar con vb.net y me he quedado en un punto que no logro resolver por más que busco en internet.

    SITUACIÓN:

    Mediante un formulario con varios TextBox/ComboBox introduzco datos en una base de datos MySQL: Funciona correctamente.

    Mediante una función, cargo esos datos en un DataGridView: Funciona correctamente, mostrando todos los campos y registros.

    PROBLEMA:

    Únicamente los campos, o encabezados de las columnas del DataGrewView no muestran tildes y otros caracteres especiales. Dando el siguiente resultado:

    POBLACIÃ"N, PROVÃNCIA...

    ANOTACIÓN: Los registros (las filas) no presentan ningún tipo de problema, por lo que deduzco que no es cosa de la codificación de la base de datos mySQL.

    Por mis nociones en programación php y javascript, entiendo que es un tema de codificación, pero mis escasos conocimientos en vb.net me impiden entender y/o encontrar la forma o sintaxis correcta para resolver la situación.

    También destacar que obtengo los campos mediante còdigo, en la variable LBLTEXT_content y la LBLCBO_content. Cuando las imprimo, por ejemplo en un MsgBox, aparecen correctamente. Por lo tanto, deduzco que el problema viene de cuando DataGridView muestra los valores que se encuentran en la tabla mySQL.

    No sé si parte del código que escribí os puede ser de ayuda, pero adjunto la condición If/Else que determina si introduce datos o los muestra dentro de una mismo subproceso (se encuentra en un Try):

    -Editado por mí para eliminar el código escrito que no aporta información para la solución.

    Muchas gracias.



    • Editado Íncipit miércoles, 30 de enero de 2019 22:08 eliminar el código escrito que no aporta información para la solución.
    miércoles, 30 de enero de 2019 18:59

Respuestas

  • Hola,

    He estado probando y al final he resuelto lo sucedido.

    Aunque entiendo la solución que he aplicado, todavía estoy estudiando la lógica de la sintaxis que se usa, de todas maneras, anoto la solución por si a alguien más le sucede.

    Antes, respondiendo al usuario Victor Koch, añadiré que: Debo usar caracteres especiales y quiero usar caracteres especiales para entender y aplicar soluciones en un futuro con cualquier idioma. Añadir que no me han permitido enlazar una imagen para mostrar gráficamente lo que sucede (cuenta no verificada). Los encabezados del DataGridView son los campos. Es decir, aquello que nos indica qué datos va a contener la columna.

    También quisiera agradecer tu interés por mi pregunta en el foro.

    SOLUCIÓN: La solución ha sido muy sencilla. Cuando se realiza la conexión a la BBDD anotamos el servidor, el usuario, la contraseña y el nombre de la base de datos principalmente.

    Podemos encontrarlos de esta forma:

    Dim mivariableSQL = New MySqlConnection("Data Source=servidor;Database=base_de_datos;User 
    ID=usuario;Password=contraseña")

    También podemos encontrar esta manera:

        Dim mivariableSQL As New MySqlConnectionStringBuilder With {
                .Server = "servidor",
                .UserID = "usuario",
                .Password = "contraseña",
                .Database = "base_de_datos",
                }

    Pues bien, en ambos casos les faltaría la codificación, en mi caso utf8

    Quedando el código de la siguiente manera:

    Dim mivariableSQL = New MySqlConnection("Data Source=servidor;Database=base_de_datos;User 
    ID=usuario;Password=contraseña;CHARSET=utf8")

    o bien:

                Dim mivariableSQL As New MySqlConnectionStringBuilder With {
                .Server = "servidor",
                .UserID = "usuario",
                .Password = "contraseña",
                .Database = "base_de_datos",
                .CharacterSet = "utf8"
                }

    Añadiendo este punto, los campos/encabezados del DataGridView aparecen tal y como se encuentran en la base de datos mySQL, que a su vez contienen caracteres especiales.

    Partía de la base de que mi BBDD ya tenía la codificación y mi solución/proyecto también. Creí que el problema estaba en el DataGridView ya que me daba la sensación que le faltaba la codificación. Pero parece ser que recibe la codificación mediante el MySqlConnection.


    • Marcado como respuesta Íncipit miércoles, 30 de enero de 2019 22:12
    miércoles, 30 de enero de 2019 22:05

Todas las respuestas

  • Hola,

    Supongo que cuando decis los encabezados de las columnas de la grilla es porque dejas que se completen con los nombres de los campos de la tabla.  Si es asi te sugiero que para los nombres de los campos, como asi tambien para el nombre de las tablas, no utilices caracteres latinos tales como acentos, ñ, etc., etc.


    Victor Koch

    miércoles, 30 de enero de 2019 21:16
  • Hola,

    He estado probando y al final he resuelto lo sucedido.

    Aunque entiendo la solución que he aplicado, todavía estoy estudiando la lógica de la sintaxis que se usa, de todas maneras, anoto la solución por si a alguien más le sucede.

    Antes, respondiendo al usuario Victor Koch, añadiré que: Debo usar caracteres especiales y quiero usar caracteres especiales para entender y aplicar soluciones en un futuro con cualquier idioma. Añadir que no me han permitido enlazar una imagen para mostrar gráficamente lo que sucede (cuenta no verificada). Los encabezados del DataGridView son los campos. Es decir, aquello que nos indica qué datos va a contener la columna.

    También quisiera agradecer tu interés por mi pregunta en el foro.

    SOLUCIÓN: La solución ha sido muy sencilla. Cuando se realiza la conexión a la BBDD anotamos el servidor, el usuario, la contraseña y el nombre de la base de datos principalmente.

    Podemos encontrarlos de esta forma:

    Dim mivariableSQL = New MySqlConnection("Data Source=servidor;Database=base_de_datos;User 
    ID=usuario;Password=contraseña")

    También podemos encontrar esta manera:

        Dim mivariableSQL As New MySqlConnectionStringBuilder With {
                .Server = "servidor",
                .UserID = "usuario",
                .Password = "contraseña",
                .Database = "base_de_datos",
                }

    Pues bien, en ambos casos les faltaría la codificación, en mi caso utf8

    Quedando el código de la siguiente manera:

    Dim mivariableSQL = New MySqlConnection("Data Source=servidor;Database=base_de_datos;User 
    ID=usuario;Password=contraseña;CHARSET=utf8")

    o bien:

                Dim mivariableSQL As New MySqlConnectionStringBuilder With {
                .Server = "servidor",
                .UserID = "usuario",
                .Password = "contraseña",
                .Database = "base_de_datos",
                .CharacterSet = "utf8"
                }

    Añadiendo este punto, los campos/encabezados del DataGridView aparecen tal y como se encuentran en la base de datos mySQL, que a su vez contienen caracteres especiales.

    Partía de la base de que mi BBDD ya tenía la codificación y mi solución/proyecto también. Creí que el problema estaba en el DataGridView ya que me daba la sensación que le faltaba la codificación. Pero parece ser que recibe la codificación mediante el MySqlConnection.


    • Marcado como respuesta Íncipit miércoles, 30 de enero de 2019 22:12
    miércoles, 30 de enero de 2019 22:05