PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → nom de variable inconnu ou modifier le nom d'une variable
nom de variable inconnu ou modifier le nom d'une variable
Débuté par Yannick C, 24 juil. 2017 17:43 - 5 réponses
Membre enregistré
43 messages
Popularité : +1 (1 vote)
Posté le 24 juillet 2017 - 17:43
Bonjour,

Est-ce que quelqu'un a une astuce pour définir un nom de variable inconnu à l'avance ? ou pour modifier le nom d'une variable ?

Par exemple, je voudrais faire ceci :
index++
{"variable"+index} est une Connexion


C'est pour gérer des connexions multiples dans une classe générique qui sera utilisée par plusieurs projets (dont le nombre de connexions est variable)

Je suis obligé d'utiliser cette approche car si je déclare dans ma classe une variable "cnx est une Connexion", la connexion sera la même si j'instancie plusieurs fois ma classe, comme si la variable était globale alors qu'elle ne l'est pas.
Ca a l'air d'être lié à la gestion interne des connexions, qui apparaissent dans le débogueur sous le nom "obj#<nom de connexion>"...

Je suis donc obligé de déclarer des noms de variables différents pour chaque connexion, et je voudrais donc générer un nom unique dans le constructeur de ma classe connexion.

Any idea?

Merci d'avance
Yannick
Membre enregistré
281 messages
Popularité : +24 (26 votes)
Posté le 24 juillet 2017 - 18:55
Ce n'est pas possible en w-language, une idée serait d'utiliser un tableau de connexion.
Membre enregistré
1 144 messages
Popularité : +50 (142 votes)
Posté le 24 juillet 2017 - 20:25
Avec une variable dynamique?
Membre enregistré
43 messages
Popularité : +1 (1 vote)
Posté le 25 juillet 2017 - 09:19
@Damien
j'avais commencé par ça, mais comme je déclare une variable connexion avec ses propriétés elle reste la même pour tous les éléments du tableau...

@Thierry
une variable Connexion ne peut pas être dynamique... Connexion n'est pas une classe

En attendant de trouver mieux, je déclare mes connexions en global dans mon projet et je les passe en paramètre des méthodes de ma classe... ça ne me plaît pas mais ça fonctionne
Merci à tous les 2

Si je trouve mieux je posterai la solution
Membre enregistré
2 571 messages
Popularité : +222 (260 votes)
Posté le 25 juillet 2017 - 10:49
Je suis d'accord avec Damien, il faut faire un tableau de connexions:
taMesConnexions est un tableau associatif de Connexions
cnxUneConnexion est une Connexion

cnxUneConnexion..BaseDeDonnées = "bdd1"
cnxUneConnexion..Libellé = "Connexion à toto"
cnxUneConnexion..Provider = hAccèsHFClientServeur
cnxUneConnexion..User = "user1"
taMesConnexions["toto"] = cnxUneConnexion

VariableRAZ(cnxUneConnexion)
cnxUneConnexion..BaseDeDonnées = "bdd2"
cnxUneConnexion..Libellé = "Connexion à tutu"
cnxUneConnexion..Provider = hAccèsNatifMySQL
cnxUneConnexion..Utilisateur = "userMySql"
taMesConnexions["tutu"] = cnxUneConnexion

VariableRAZ(cnxUneConnexion)
cnxUneConnexion..BaseDeDonnées = "bdd3"
cnxUneConnexion..Libellé = "Connexion à titi"
cnxUneConnexion..Provider = hODBC
cnxUneConnexion..Utilisateur = "odbc"
taMesConnexions["titi"] = cnxUneConnexion

POUR TOUT cnxConnexion,sCle de taMesConnexions
Trace("------------------------------------------------------------------------")
Trace("[%sCle%] : [%cnxConnexion..BaseDeDonnées%]")
Trace("[%sCle%] : [%cnxConnexion..Provider%]")
Trace("[%sCle%] : [%cnxConnexion..Utilisateur%]")
FIN


Résultat:
------------------------------------------------------------------------
toto : bdd1
toto : WinDevClientServeurHF
toto : user1
------------------------------------------------------------------------
tutu : bdd2
tutu : WinDevMySQL
tutu : userMySql
------------------------------------------------------------------------
titi : bdd3
titi : MSDASQL
titi : odbc


--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Membre enregistré
43 messages
Popularité : +1 (1 vote)
Posté le 25 juillet 2017 - 11:33
La piste du tableau associatif me semble la meilleure en effet !

Un grand merci pour votre aide !