Page 1 sur 1

[R] convertir le contenu d'un tableau en chaine

Posté : ven. 31 mars 2017 17:21
par corrs78
Bonjour à toutes et tous,

j'utilise l'UDF EzMySql.au3 pour faire des requetes dans une base MySQL.
je me connecte, la requête fonctionne, mais mon problème est que je n'arrive pas à afficher le contenu du résultat autre que dans un tableau.
Avec le code ci dessous j'obtiens toujours un "-1".
   
For $i = 1 To _EzMySql_Rows() Step 1
   $aArray = _EzMySql_FetchData()
   $result = _ArrayToString($aArray, "|",$i,1)
        _GUICtrlRichEdit_AppendText($data_results, @CRLF & $result)
Next
Avec un _ArrayDisplay($aArray, "Result: " & $i) , j'obtiens bien le résultat de ma requête SQL. Donc c'est bien un tableau.

la méthode est bonne ?

Merci de votre aide.

Re: convertir le contenu d'un tableau en chaine

Posté : ven. 31 mars 2017 21:56
par mikell
Qu'est-ce que ça donne avec juste : $result = _ArrayToString($aArray) ?

Re: convertir le contenu d'un tableau en chaine

Posté : ven. 31 mars 2017 23:00
par corrs78
mikell a écrit : ven. 31 mars 2017 21:56 Qu'est-ce que ça donne avec juste : $result = _ArrayToString($aArray) ?
Exactement le même résultat. "-1"

ce qui est curieux c'est que cela fonctionne très bien avec un "_ArrayDisplay"
$request = _EzMySql_GetTable2d("SELECT mtle,nom,prenom FROM utilisateur WHERE mtle LIKE '%" & $mot_cle & "%' OR nom LIKE '%" & $mot_cle & "%' ;")
   $error = @error
      If Not IsArray($request) Then MsgBox(0, $mot_cle & " error", $error)
         _ArrayDisplay($request, "Résultat pour """&$mot_cle&"""")

         For $i = 1 To _EzMySql_Rows() Step 1
            $aArray = _EzMySql_FetchData()
            _ArrayDisplay($aArray, "Result: " & $i)
            $result = _ArrayToString($aArray,$i)
            MsgBox(64,"",$result)
         Next
j'ai le tableau qui s'affiche avec un résultat trouvé.
Image

l'objectif est de lister les résultat dans un "ReachEdit" ou dans un "CreateEdit".

Re: convertir le contenu d'un tableau en chaine

Posté : mer. 05 avr. 2017 04:38
par TomAijerrie
Que affiche le deuxième _arraydisplay ? (ligne 8 dans ton code)
C'est bien un tableau à 1 seule dimension ?

Tu es sûr qu'il faut mettre le $i dans la ligne 9 ?
$result = _ArrayToString($aArray,$i)
Au pire, "refait" la fonction
For $i = 1 To ubound($request) -1
    $sLigne = $request[$i][0]
    For $j = 1 to ubound($request,2) -1
        $sLigne &= "|" & $request[$i][$j]
    Next
    MsgBox(64,"",$sLigne)
Next

Re: convertir le contenu d'un tableau en chaine

Posté : mer. 05 avr. 2017 11:24
par corrs78
Merci pour ta réponse, cela fonctionne.

Au final j'ai réglé le problème en simplifiant le code, et ça fonctionne toujours, et là je ne comprends pas pourquoi.
En fait la la fonction FetchData et la boucle inutiles dans mon cas, le simple fait de faire un _ArrayToString de ma requête me renvoie tous les résultats. J'ai pourtant prix les exemples du développeur de l'UDF. Apparemment pas besoin de parcourir les lignes du tableau. Si j'ai bien compris ton exemple, c'est déjà inclus dans la fonction _ArrayToString.
$request = _EzMySql_GetTable2d("SELECT mtle, nom, prenom FROM fonct WHERE mtle LIKE '%" & $mot_cle & "%' OR nom LIKE '%" & $mot_cle & "%' ;")
   $error = @error
   If Not IsArray($request) Then MsgBox(0, $mot_cle & " error", $error)
$result = _ArrayToString($request)
      _GUICtrlRichEdit_AppendText($data_results, @CRLF & $result)
merci pour votre temps.