Page 1 sur 1

[R] Fonction multiparamètres possible ?

Posté : mer. 29 févr. 2012 17:16
par Laddy
Bonjou à tous,

Dans mon code sql, je liste le contenu de 3 tables dans 3 combox.
En modifiant pour chaque fonction le contenu de différents paramètres

$SQLCode
$NameList
$toto = GUICtrlSetData($paramCombox, $ContenuTable);
► Afficher le textecode fonction
Est il possible de simplifer le code en une fonction qui chargerait la meme chose avec 3 paramètres qui changeraient ?


genre :

Code : Tout sélectionner

Func _ListCombox($parm_1,$param_2,$parm_3)
Blablabl

Return je sais pas quoi ??
EndFunc
ou 

Func _ListCombox($SQLCode,$Champ,$Combox)
????
Return  ??

EndFunc

 

Me resterait à remplacer ceci :

WIN_CONNECTION() ; liste les os
Office_Connection() ; liste office version
Virus_Connection() ; liste antivirus

Par cela :
_ListCombox("SELECT * FROM veroffice","Nom_Office",$ListOffice)
_ListCombox("SELECT * FROM virus","Nom_ANTIVIRUS",$ListAntivirus)

Et avoir une seule fonction pour les 3 combox

Est ce possible ou non ?
si oui comment faire ?
J'ai regardé l'aide mais je ne vois pas comment mettre les 3 variables en paramètres... avec le return.
Aperçu de la gui :
► Afficher le texteimage
Merci d'avance
Laddy

Re: [..] Fonction multiparamètres possible ?

Posté : mer. 29 févr. 2012 19:01
par TopXm
Hello Laddy ;)

Un truc de ce genre ? [NB : N'ayant ni base, ni ta GUI sous la main, je n'ai pas pu tester, d'autant que je n'utilise pas MySql]

Code : Tout sélectionner

GUICtrlSetData($IdCombo1, _GetSqlValue("NomTable1", "NomDuChampsDeLaTable1))
GUICtrlSetData($IdCombo2, _GetSqlValue("NomTable2", "NomDuChampsDeLaTable2))
GUICtrlSetData($IdCombo3, _GetSqlValue("NomTable3", "NomDuChampsDeLaTable3))

Func _GetSqlValue($Table, $FieldName)
    Local $RetVal
    Local $SQLCode = "SELECT " & $FieldName &  " FROM " & $Table
    $TableContents = _Query($SQLInstance, $SQLCode)
    With $TableContents
        While Not .EOF
            $RetVal &= "|" & .Fields($FieldName).value
            .MoveNext
        WEnd
    EndWith
    Return $RetVal
EndFunc
 
J'avoue que je ne sais pas si on peut faire ceci : .Fields($FieldName).value
Si ça ne marche pas tu peux par contre indiquer le n° de colonne du champs dans la requête d'après ce qui est dit ici : http://www.autoitscript.com/forum/topic ... _p__805493
Auquel cas il te faudra passer un paramètre supplémentaire (le n° de colonne) dans ta fonction ;)

Re: [..] Fonction multiparamètres possible ?

Posté : mer. 29 févr. 2012 19:37
par TommyDDR
Vous avez fait 95% du chemin, pourquoi ne pas avoir fini ? ^^

Cela devrait convenir :
► Afficher le textecode

Re: [..] Fonction multiparamètres possible ?

Posté : jeu. 01 mars 2012 06:51
par Laddy
Bonjour à tous deux :D
TopXm >> Oui on peut. Je vais tester ton code pour valider :D

TommyDDR > Je pense que le paramètre Return pour retrouver le résultat de la valeur m'a perturbé. Je le pensai obligatoire.

Votre fonction fonctionne a un détail prêt, j'ai dû ajouter un 4eme paramètre qui réfère $NameList car la seconde combox ajouté le contenu de la première, et la 3eme celle de la premiere et de la seconde.
► Afficher le texteCorrection
Je ne sais pas si on peut faire plus simple mais ça fonctionne pour le moment.
Merci à tous deux

Edit : correction soumis par TommyDDR

Re: [R] Fonction multiparamètres possible ?

Posté : jeu. 01 mars 2012 14:07
par TommyDDR
Non, il faut déclarer NameList dans la méthode.

Re: [R] Fonction multiparamètres possible ?

Posté : jeu. 01 mars 2012 14:43
par Laddy
Je n'ai pas compris désolé :oops:

Re: [R] Fonction multiparamètres possible ?

Posté : jeu. 01 mars 2012 15:17
par TommyDDR
Je doute que vous ayez besoin des $NameList en dehors des fonctions, si j'ai raison, alors enlever le Global/Dim $NameList que vous devriez avoir en début de script et mettez plutôt un Local $NameList dans la fonction _ListCombox.

Si vous en avez quand même besoin, il est quand même préférable de ne le déclarer que dans la fonction _ListCombox et au pire de le retourner à la fin ;)

"Return $NameList"

Re: [R] Fonction multiparamètres possible ?

Posté : jeu. 01 mars 2012 17:17
par Laddy
J'ai testé et ça semble être ok.
Merci ;D

Re: [..] Fonction multiparamètres possible ?

Posté : ven. 02 mars 2012 09:36
par TopXm
Hello :)
TommyDDR a écrit :Vous avez fait 95% du chemin, pourquoi ne pas avoir fini ? ^^

Cela devrait convenir :
► Afficher le textecode
Ben c'est juste une fonction pour récupérer le contenu d'un champ d'une table, d'où son nom _GetSqlValue ;)
Mais en effet pourquoi pas ajouter GUICtrlSetData($Combox, $NameList) :D