Problème affichage resultat requete SQL dans cellule Excel

Tinou80

XLDnaute Nouveau
Bonjour à tous,

Voici mon problème :

Je veux exécuter une requête SQL de la forme
Code:
SELECT IFNULL(DATE_FORMAT(do.do_datestatut,'%Hh%i'),'') FROM cli_dossier WHERE ...

Lorsque je lance la requete sous PhpMyAdmin, le resultat s'affiche bien sous la forme "15h48".

Cependant, lorsque je veux l'afficher dans une cellule excel avec cette ligne de commande :

Code:
xlBook.Sheets(1).Cells(Ligne, Colonne) = MonRecordSet.fields(0)

La cellule reste vide.

J'ai tenté plusieurs solutions, date_format(date,'%T') ou encore CONCAT(HOUR(heure) ,"h" , MINUTE(heure)), toutes fonctionnes du coté phpMyAdmin mais pas coté Excel.

Dernière tentative essayée, j'ai envoyé mon fichier à un ami qui a une version moins récente de SQL et son résultat s'affiche bien dans la cellule Excel.

Nous avons tous les deux la version 2003 d' Excel.
J'ai la version du client MySQL: 4.1.20.

En espérant une réponse

Anthony
 

ngogoisidore

XLDnaute Occasionnel
Re : Problème affichage resultat requete SQL dans cellule Excel

Bonjour Anthony,

J'ai récupéré la version 4.1.22 de MySQL (je crois que c'est la version la plus ancienne encore disponible sur le site internet de MySQL), puis j'ai éxécuté depuis Excel, une requête SQL similaire à la tienne. J'ai obtenu le même résultat que toi, c'est à dire aucun affichage dans Excel.

Il semblerait que le problème réside dans le fait que le résultat de la requête ne soit pas une chaîne de caractères, mais un tableau d'octets dont les valeurs sont les codes ASCI des caractères attendus (l'heure au format 00h00).

J'avais l'impression que c'était plutôt lié à la version du driver Connector/ODBC, mais j'ai essayé les deux versions disponibles sur le site de MySQL (3.51 et 5.1), et ça ne change rien. Peut-être que ton ami a une version encore plus ancienne ? ...

J'ai néanmoins pensé à deux "solutions".

  1. Tu peux rajouter un forçage de type dans ta requête (fonction CAST):

    Code:
    SELECT CAST(IFNULL(DATE_FORMAT(do.do_datestatut,'%Hh%i'),'') AS CHAR(5)) FROM cli_dossier WHERE ...
  2. Tu peux régler la chaîne de connection avec une option qui force la traduction des tableaux d'octets en chaînes de caractères (version 5.1 du driver ODBC pour MySQL):

    Code:
        sStrCon = "Provider=MSDASQL.1;" & _
        "Persist Security Info=False;" & _
        "Extended Properties=""" & _
        "DRIVER={MySQL ODBC 5.1 Driver};" & _
        "DATABASE=maDB;" & _
        "SERVER=localhost;" & _
        "UID=monID;" & _
        "[B]OPTION=268435459[/B];" & _
        """;"

    Se référer à MySQL :: MySQL 5.1 Reference Manual :: 21.1.4.2 Connector/ODBC Connection Parameters, pour plus de détails.

@+ :rolleyes:
 
Dernière édition:

ngogoisidore

XLDnaute Occasionnel
Re : Problème affichage resultat requete SQL dans cellule Excel

Re-Bonjour Anthony,

Petites précisions :

  1. Sans doute le sais tu déjà mais, par acquis de conscience, je précise que tableau d'octets qu'Excel renvoie suite à la requête SQL, est stocké en mémoire de la même manière que la chaîne de caractères correspondante. Donc, cette "erreur", ne porte en fait que sur la manière dont Excel va interpréter (Typer) cette zone mémoire. La différence n'est pas bien grande.

  2. J'ai également essayé de changer la version (2.8, 2.7, 2.6, 2.5) d'objet ActiveX 'Base de Données' ADO référencée dans VBA, mais ça ne résout pas le problème.

Peut-être que ton ami a établi des paramètres de connection à sa base par défaut, dans un DSN, qui incluent l'option d'interprétation des tableaux d'octets comme des chaînes de caratères (l'option à laquelle je fais référence dans mon post précédent) ?

Mystère et boule de gomme :) !!

@+
 
Dernière édition:

Tinou80

XLDnaute Nouveau
Re : Problème affichage resultat requete SQL dans cellule Excel

Bonjour ngogoisidore,

Merci à toi pour ces réponses, tout fonctionne à merveille grâce à la fonction CAST() que je ne connaissais pas.

C'est bien la première fois qu'Excel me fait un truc du genre.

Et surement pas la dernière. :p

Merci Encore

@+
 

Statistiques des forums

Discussions
312 273
Messages
2 086 701
Membres
103 373
dernier inscrit
Edouard007