IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Problème d'accent dans une datagridview


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Par défaut Problème d'accent dans une datagridview
    Bonjour/Bonsoir tous le monde,

    Donc voilà je travail sur un développement et j'ai une requête suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
        Const SQLSelect = "Select arCode As 'Code Article', arLibelle As 'Libelle' , " & _
                            "CONCAT(Cast(arDimensionPignon as Char),'x', Cast(arDimensionProfondeur As Char)) As 'Dimension', arEssenceBardage, " & _
                            "Case arEssenceBardage When 'DO' Then 'Douglas' When 'RC' Then 'RedCedar' When 'TA' Then 'Autoclave' When 'CH' Then 'Chène' When 'AU' Then 'Aucun' else 'Autre' End 'Essence Bois', " & _
                            "arNombrePente, Case arNombrePente When 1 Then '1 Pente' When 2 Then '2 pentes' When 0 Then 'Toit Plat' Else 'Autre' End 'Nombre de Pente',  " & _
                            "arCodeParticularite As 'Particularité', arValeurVenteTTC As 'Prix de Vente' " & _
                            "From _articles "
     
        Const SQLOrderBy = "Order By arCode"
     
        Private Sub BttStartSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BttStartSearch.Click
            Dim Modele As String = SearchOnDataTable("Libelle", "aaCode", CbBoxModele.Text, DataTableModele)
            Dim Toiture As String = Replace(SearchOnDataTable("Libelle", "arNombrePente", CbBoxToiture.Text, DataTableToiture), ",", ".")
            Dim DimensionPignon As String = Replace(SearchOnDataTable("Libelle", "arDimensionPignon", CbBoxDimension.Text, DataTableDimension), ",", ".")
            Dim DimensionProfondeur As String = Replace(SearchOnDataTable("Libelle", "arDimensionProfondeur", CbBoxDimension.Text, DataTableDimension), ",", ".")
            Dim EssenceBois As String = SearchOnDataTable("Libelle", "arEssenceBardage", CbBoxEssence.Text, DataTableEssence)
            SQLWhere = " Where arCode <> ''"
            'Création de la requete SQL
            If CbBoxModele.Text <> "" Then SQLWhere = SQLWhere & " and arCodeModele = '" & Modele & "' "
            If CbBoxToiture.Text <> "" Then SQLWhere = SQLWhere & " and arNombrePente = '" & Toiture & "' "
            If CbBoxDimension.Text <> "" Then SQLWhere = SQLWhere & " and arDimensionPignon = " & DimensionPignon & " And arDimensionProfondeur = " & DimensionProfondeur
            If CbBoxEssence.Text <> "" Then SQLWhere = SQLWhere & " and arEssenceBardage = '" & EssenceBois & "' "
     
            If AffichePoseOnly.Checked = True Then SQLWhere = SQLWhere & "And arEstPose = '1' "
     
            SQL = SQLSelect & SQLWhere & SQLOrderBy
     
            AfficheDateTable = MySQL_DataTable(SQL)
     
            DataGridAffichage.DataSource = AfficheDateTable
     
        End Sub
     
        Public Function SearchOnDataTable(ByVal NameColonneSearch As String, ByVal NameColonneRecupVal As String, ByVal ValeurSearch As String, ByVal NameTable As DataTable) As String
            SearchOnDataTable = ""
     
            For i As Integer = 0 To NameTable.Rows.Count - 1
                If NameTable.Rows(i)(NameColonneSearch).ToString = ValeurSearch Then
                    SearchOnDataTable = NameTable.Rows(i)(NameColonneRecupVal).ToString
                End If
            Next
     
            Return SearchOnDataTable
     
        End Function
    Donc jusque là aucun soucis, hors dans la datagridview quand il récupère les information la colonne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arCodeParticularite As 'Particularité'
    le 'é' n'est pas visible il y a a la place un truc genre 'ParticularitÅi'

    Je te test ma requête dans Mysql directement rien à dire elle fonctionne très bien

    Si quelqu'un à un idée ? car du coup si dans les lignes j'ai des accents à mon avis çà doit se répéter.

    Merci

  2. #2
    Membre émérite Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Par défaut
    Bonjour,

    Dans votre datatable, en mode pas à pas avec un espion, les "accents" sont-ils présents ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Par défaut
    Bonjour,

    Après un formatage vue que mon application avait des bugs j'ai retenté et idem.

    Dans la table elle même il y à le bug d'accent donc cela doit venir de ma connexion MySQL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
        Function MySQL_Connect() As MySqlConnection
                    OpenConnect = New MySqlConnection()
                    OpenConnect.ConnectionString = "server=LocalHost;user id=Utilisateur;password=Motdepasse;database=" & Connexion.NameDataBase
                    OpenConnect.Open()
                    Return OpenConnect
                Catch e As Exception
                    MsgBox("Erreur de connexion à la base de donnée" & Chr(10) & "Veuillez contacter l'administrateur", MsgBoxStyle.Critical, "ERREUR !")
                    End
                End Try
        End Function
     
        Function MySQL_DataTable(ByVal SQL As String) As DataTable
            OpenConnect = MySQL_Connect()
     
            Dim myCommand As New MySqlCommand(SQL, OpenConnect)
            Dim MyAdapt As New MySqlDataAdapter
            Dim MyDataTable As New DataTable
            MyDataTable.Clear()
     
            With MyAdapt
                .SelectCommand = myCommand
                .Fill(MyDataTable)
            End With
     
            MySQL_DataTable = MyDataTable
     
        End Function

  4. #4
    Membre émérite Avatar de methylene
    Profil pro
    Inscrit en
    Février 2010
    Messages
    659
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2010
    Messages : 659
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arCodeParticularite As 'Particularité'
    'Particularié' entre guillemets simple je ne comprend pas logiquement c'est du "commentaire" dès que l'on met un guillemet simple.

    Ensuite si dans votre base .mdb, vous avez des accents, vous devez les retrouver dans votre datatable, le problème pourrait venir du fait que vous ayez une conversion, mais je n'en vois pas.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Par défaut
    Coucou,

    Merci de te pencher sur mon soucis.

    Donc je viens de tester 'Particularité' et "Particularité" mais le problème persiste, il y a peut être un type d'encodage à ajouter dans mes lignes de connexion ?

    C'est bizarre

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Par défaut
    Bonjour,

    J'ai trouvé la solution, pour ceux qui auront un soucis similaire, il suffit d'aller dans le fichier my.ini de MySQL et de remplacer le Latin1 par utf8.

    Attention il y en à deux.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2004
    Messages : 54
    Par défaut CHARACTER SET utf8
    Bonjour,

    Selon moi, c'est probablement un problème d'encodage à solutionner en corrigeant le paramètrage de MySQL

    Dans ce cas, il faut connaître la version actuelle de MySQL, vérifier que la version utilisée pour remplir les tables est la même que celle utilisée actuellement et vérifier également si le programme qui a alimenté la base et le même que celui qui l'exploite actuellement

    Pour spécifier un encodage différent de l'encodage par défaut, il faut utiliser
    CHARACTER SET tel que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE DATABASE toto_utf
    CHARACTER SET utf8
    Ne pas oublier que l'encodage par défaut peut varier d'une version MySQL à l'autre

    Comme le problème ne semble pas être lié à un langage de programmation, il faudrait vérifier les réponses fournies par MySQL à une requête fournie en mode console.

    Il me semble essentiel de savoir sous quel(s) encodage(s) les tables ont été alimentées.

    Des bizarreries peuvent survenir si la base a été alimentée par un programme utilisant l'encodage 1 puis alimentée par un nouveau programme utilisant l'encodage 2 ... La base est alors corrompue ... (bon courage pour la réparer)

    Si la base n'est pas corrompue, alors ne ce n'est pas grave, il suffit d'utiliser le même encodage pour l'exploitation des données que pour leur insertion.

    Une petite lecture de la doc de MySQL ne peut pas faire de tort.
    http://dev.mysql.com/doc/refman/5.0/fr/charset.html

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'accent dans une GridView
    Par harry25 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 02/09/2009, 14h40
  2. Réponses: 2
    Dernier message: 20/05/2009, 14h34
  3. Problème d'accents dans une page asp
    Par funkycoincoin dans le forum SharePoint
    Réponses: 0
    Dernier message: 30/11/2007, 10h16
  4. Problème d'accent dans une base
    Par mLk92 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 28/07/2006, 19h34
  5. problème d'accent dans une chaine
    Par dom_dev dans le forum Langage
    Réponses: 4
    Dernier message: 23/06/2006, 10h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo