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

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 - 30 août 2006 à 17:36
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 - 31 août 2006 à 08:51
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

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 août 2006 à 18:43
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
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
30 août 2006 à 18:57
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
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
31 août 2006 à 08:51
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
0
Rejoignez-nous