XL 2016 Problème d'encodage de texte

Polobe36

XLDnaute Occasionnel
Bonjour à tous,

Je rencontre un problème depuis que nous avons changé de version de GMAO.

J'ai une macro qui effectue une requête dans la base de données et restitue les résultats dans une feuille excel, notamment des commentaires qui sont, je pense, traités ou encodés d'une façon particulière dans la GMAO.

J'ai allégé la macro pour exposer mon problème et voici ce que renvoie le "rs(3)" pris en capture d'écran:
1028500


J'ai trouvé çà dans la GMAO, qui pourrait peut-être orienter:
1028463


Je vous remercie par avance de votre aide :)
 

Pièces jointes

  • Image1.png
    Image1.png
    33.8 KB · Affichages: 36
Dernière édition:

Polobe36

XLDnaute Occasionnel
Bonjour à tous, BrunoM45,

J'ai tenté d'avancer de mon côté mais toujours rien..

Lorsque je met un debug.print sur rs(1) à rs(5), je ne rencontre un problème que sur rs(3), aucune valeur n'est retranscrite (alors qu'il y a bien du contenu).
Par contre, lorsque je met un espion sur rs(3).value, là on peut visualiser quelque chose, mais en amont au moment de "Set rs = cmd.Execute"
Je ne comprend pas.

Voici le code entier:

VB:
Sub ExtractionOT

Dim cnn As ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As ADODB.Recordset

    Set cnn = New ADODB.Connection
    cnn.Open "***********;" & "***********;" & "***********"
    cmd.ActiveConnection = cnn
    cmd.CommandType = ADODB.CommandTypeEnum.adCmdText

SqlString = "SELECT CARL_CS02.CSWO_WO.CODE, CARL_CS02.CSRE_TECHNICIAN.CODE, CARL_CS02.CSSY_ACTOR.FULLNAME, CARL_CS02.CSSY_DESCRIPTION.RAWDESCRIPTION, CARL_CS02.CSWO_OCCUPATION.OCCUPATIONDATE, CARL_CS02.CSWO_OCCUPATION.DURATION"
SqlString = SqlString & " FROM (((CARL_CS02.CSWO_OCCUPATION LEFT JOIN CARL_CS02.CSRE_TECHNICIAN ON CARL_CS02.CSWO_OCCUPATION.TECHNICIAN_ID = CARL_CS02.CSRE_TECHNICIAN.ID) LEFT JOIN CARL_CS02.CSSY_ACTOR ON CARL_CS02.CSRE_TECHNICIAN.ACTOR_ID = CARL_CS02.CSSY_ACTOR.ID) INNER JOIN CARL_CS02.CSWO_WO ON CARL_CS02.CSWO_OCCUPATION.WO_ID = CARL_CS02.CSWO_WO.ID) LEFT JOIN CARL_CS02.CSSY_DESCRIPTION ON CARL_CS02.CSWO_OCCUPATION.COMMENTS_ID = CARL_CS02.CSSY_DESCRIPTION.ID"
SqlString = SqlString & " WHERE (((CARL_CS02.CSWO_WO.CODE) = '" & Recherche_CodeOTOccupation & "'))"
SqlString = SqlString & " ORDER BY CARL_CS02.CSWO_OCCUPATION.OCCUPATIONDATE;"
   
    cmd.CommandText = SqlString
    Set rs = New ADODB.Recordset
    Set rs = cmd.Execute
       
    compteur = 0
    Texte = ""
    tc = ""
    rs.MoveFirst
    Do While Not rs.EOF

        If rs(3) <> "" Then
            compteur = compteur + 1
            Texte = rs(4) & " - " & rs(2) & " - durée: " & rs(5) & "h" & Chr(10) & "   " & rs(3).Value
            If compteur = 1 Then
                tc = Texte
            Else
                tc = tc & Chr(10) & Texte
            End If
        End If
        rs.MoveNext
    Loop
    TXT_DescriptionOccupation.Value = tc
    rs.Close
    cnn.Close
   
End Sub
 
C

Compte Supprimé 979

Guest
Re,

Il faudrait mettre un point d'arrêt (F9) sur la ligne
VB:
compteur = compteur + 1

Et faire un
Code:
Debug.Print Rs(3)
à l'arrêt
et regarder ce que contient exactement ton rs(3)
 

Polobe36

XLDnaute Occasionnel
Re,

"Debug.print rs(3)" me renvoie la valeur "Null" (je précise qu'il y a bien une chaine de caractère normalement à retrouver)

J'ai exploré un peu l'espion de "rs", et dans le champ correspondant à rs(3) on retrouve la valeur "adLongVarChar" pour le DataTypeEnum.
Dans d'autres extractions que je fais de ce type depuis une autre base de données, ce même DataTypeEnum est lui de valeur "adVarWChar"
Est-ce que cela peut avoir une importance ?

1029632


Je précise aussi que ce problème survient depuis que nous avons changé de version de GMAO, et que je ne l'avais pas avant et que tout fonctionnait parfaitement. Est-ce que le traitement des commentaires pourrait avoir changé et impacté l'extraction ?
 

Polobe36

XLDnaute Occasionnel
Bonjour à tous, @BrunoM45,

J'avance tout doucement.. et j'ai comparé les modèles physique de données entre les deux version de la GMAO et j'ai remarqué que le champ en question "RAWDESCRIPTION" est passé d'un type varchar à un type CLOB.

Je pense que là est l'origine de mon problème, et la question est comment traiter ce type de données dans excel ?
1029695
 

Polobe36

XLDnaute Occasionnel
Re,

J'ai du nouveau: en fait je ne sais pas du tout pourquoi car il me semblait que çà ne marchait pas auparavant mais lorsque j'isole rs(3) j'obtiens de nouveau une valeur.

Le rs(4) et rs(5) renvoient respectivement une date et nombre d'heure.

Et lorsque je les concatène avec rs(3) , ce dernier ne me renvoie plus de valeur (alors que pas de soucis lorsque concaténé avec rs(2)).. incompréhensible !!

Je pensais à une conversion (Cdate, CStr ou Cvar) mais pas mieux

A vos idées..

1029760
 
C

Compte Supprimé 979

Guest
Bonjour Polobe36,

Je ne vois pas pourquoi tu as ce problème

Il serait peut-être bon de déclarer ta variable en début de sub
Code:
Sub ExtractionOT
Dim Texte as String

Et ensuite, pourquoi ne pas faire la concaténation en plusieurs étapes !?

VB:
Texte = rs(4)
Texte = Texte & " - " & rs(3)

A+
 

Polobe36

XLDnaute Occasionnel
Bonjour à tous, BrunoM45,

Moi non plus, je ne l'explique pas :(

J'ai effectivement décomposé le texte et çà marche comme cela.
Par contre je n'arrive pas à retravailler la date au format que je souhaites mais çà ira pour le moment.

Merci @BrunoM45 pour les conseils et les pistes de réflexion.

PS: je posterai une réponse sur la discussion au cas où je trouve l'origine du problème
 

Discussions similaires

Réponses
17
Affichages
2 K

Statistiques des forums

Discussions
312 153
Messages
2 085 802
Membres
102 981
dernier inscrit
fred02v