Connection VB6 => MySQL => récupération UNICODE => Caractere Chinois

Signaler
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
Salut à tous.
Aller une petite question à la c.n...
Apres une recherche non satisfaisante sur VBFRANCE (et sur google)
(NB: D'ailleurs je ne vois pas comment mais je crois qu il faut améliorer le moteur de recherche, j'ai l'impression de ne jamais trouver ce que je cherche = > Mais la n'est pas le sujet)

Je suis sous W2K, VB6 SP6, MySQL 4.1.4
Je me connecte actuellement à ma base de données MySQL à l'aide du driver MySQL ODBC 3.51 Driver

Je développe actuellement la version d'un logiciel en CHINOIS.

Nous avons réussi à passer des caracteres Chinois au  VB6 de base (composants de bases) à l'aide d'un soft à part (NJ Star communicator).
Nous avons aussi résussi à stoker ces même caracteres dans une table d'une base de données MYSQL en modifiant le DEFAUT CHARSET latin1 ... en <gras>DEFAUT CHARSET utf8</gras>.

Mais à présent le prochain stade est de ce connecter à cette base de données en lui précisant lors de sa connection que l'on va recuperer des champs suceptibles d'être en UTF8.

En effet depuis la modification du DEFAUT CHARSET la connection "plante" et donne l'erreur suivante.

Je pense qu'a present il doit manquer un parametre lors de la connection.

Ma question est la suivante: est ce quelqu'un connait la chaine de connection correspondante en ADO.(ou le parametre a ajouter) pour pouvoir contourner ce probleme.
Nous avons essayé d'ajouter le parametre CHARSET=UTF8; mais cela ne fonctionne pas.

Voici la chaine de connection actuelle:
"DRIVER={MySQL ODBC 3.51 Driver};SERVER=" & SERV_DB & ";DATABASE=" & sNomBaseMySQL

Un petit coup de pouce serait le bienvenu
Merci d'avance

@+,   Ju£i?n
PS: je vais aussi poster sur SQLFrance (bien entendu)

3 réponses

Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
74
J'ignore si c'est au moment de la connection que cela dois se jouer....
tu as ce message à quel moment ?

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
salut Julien,

voici pour la petite intro pour tout le monde :
http://dev.mysql.com/doc/refman/5.0/fr/charset-charsets.html

et ici çà à l'air pas trop mal, mais toujours rien pour VB

et pour finir, un bout de code trouvé ici, dénuméroté à ton attention

Private Sub afficher_Click() 
    Dim oCon As Connection    ' Connexion vers la BD
    Dim oRst As Recordset     ' Ensemble de données d'une table
    Dim strConnect As String  ' Chaîne de connexion vers la BD
    Dim strSql As String 

    strConnect =  "DRIVER={MySQL ODBC 3.51 Driver};" & _ 
                 "SERVER=%server%;DATABASE=%database%;PORT=%port%;" & _ 
                 "UID=%userid%;PASSWORD=%password%;" & _ 
                 "OPTION=3;STMT=;" 

    ' Insertion des paramètres dans la chaîne de connexion
    strConnect =  Replace (strConnect, "%server%", "localhost")       ' Nom ou IP du serveur BD
    strConnect  = Replace(strConnect, "%port%", "3306")              ' Port du serveur BD
    strConnect =   Replace (strConnect, "%database%", "College")        ' Nom de la BD
    strConnect  = Replace(strConnect, "%userid%", "root")        ' Login pour la BD
    strConnect =   Replace (strConnect, "%password%", "plouf")    ' Mot de passe pour le login

    Set oCon  = New Connection 
    Call oCon.Open(strConnect) 

    ' Initialisation d'une requête
    strSql =  "select civiliteAdh as Civilité, nomAdh as Nom, prenomAdh as Prenom, adresseAdh as Adresse, villeAdh as Ville, cpAdh as CodePostal, disciplineAdh as Discipline, niveauAdh as ceinture From adherants order by disciplineAdh , nomAdh" 
    Set oRst = New Recordset 

    ' adOpenForwardOnly -> meilleur choix pour un parcours du recordset du début à la fin
    ' adCmdText -> on précise qu'il s'agit d'une requête
    Call oRst.Open(strSql, oCon, adOpenForwardOnly, adLockReadOnly, adCmdText) 
    Do While Not oRst.EOF 
        ' Output dans l'immediate window
        Debug.Print oRst!College < ---l  'erreur
        oRst.MoveNext 
    Loop 

    ' Fermeture propre des connexions et destruction des objets
    oRst.Close 
    Set oRst = Nothing 
    oCon.Close 
    Set conx = Nothing 
End Sub

<small> Coloration
syntaxique automatique [AFCK] </small>
       

espérant que çà t'aide.... (je ne peux évidemment pas tester sans base unicode)

++

<hr size ="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Merci d'avoir répondu
>2359 Renfield: Ce message d'erreur survient lorsque j'essaie d'ouvrir un Recordset de selection sur une table (en adOpenKeyset, adLockOptimistic)
Et en passant en parametre la connetion active (ouverte auparavant avec la chaine de connection:  "DRIVER ={MySQL ODBC 3.51 Driver};SERVER= " & SERV_DB & ";DATABASE=" & sNomBaseMySQL

Avant de partir hier soir j ai fait une modifcation dans My.ini   j'ai ajouté

[mysql]
default-character-set =utf8

Plus d'erreur ce matin apres un redémarrage  mais plus les caractere chinois non plus.

> PCPT: Merci pour le code je vais le tester. Merci pour le lien (bien que je suis souvent sur ce site depuis hier, je n'avais pas vu cette page.)
Si quelqu un d'autre a une idée .
Merci d'avance.

@+,   Ju£i?n