BadFog
Messages postés6Date d'inscriptionjeudi 4 août 2005StatutMembreDernière intervention22 juin 2006
-
8 août 2005 à 17:44
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013
-
8 août 2005 à 19:04
Bonjour,
Ne trouvant aucune info sur le net sur ce problème (en tout cas dans ce langage), je suppose que ce n'est pas possible en VB mais voici ma question.
Peut-on accéder à la valeur d'une variable dont le nom est contenu dans une autre variable.
Exple :
Current_Year = 2005
Année_Courante = "Current_Year"
En utilisant la variable Année_Courante, je voudrais récupérer la valeur 2005.
mrdep1978
Messages postés402Date d'inscriptionjeudi 25 novembre 2004StatutMembreDernière intervention 7 juin 20097 8 août 2005 à 19:01
J'ai peut-être qqe chose qui peut t'aider :
(j'ai fait ça en VBA car j'ai uniquement Excel sous la main, mais à part le nom des événements, ça ne devrait rien changer si tu es en VB6)
J'ai mis une Form (UserForm), un bouton (CommandButton1) et une TextBox (TextBox1)
Dans les références du projet, j'ai ajouté Microsoft Script Control 1.0 (msscript.ocx) qui permet d'interpréter du code saisi dynamiquement
Il suffit de cliquer sur le bouton que tu as mis sur la feuille
Option Explicit
Private Sub CommandButton1_Click()
Call test
End Sub
Private Sub UserForm_Initialize()
TextBox1.Text = """variation"" & vblf & Current_Year"
End Sub
Private Sub test()
'Objet ScriptControl
Dim l_Script As New ScriptControl
Dim Current_Year As String
Dim l_text As String
Current_Year = 2005
'Définit le language de dév à interpréter
l_Script.Language = "VBScript"
'Nécessaire de faire le AddCode car les variables current_year et Current_Year sont différentes (l'une est interprétée et l'autre fait partie du code VB"Standard")
l_Script.AddCode "current_year=" & Current_Year
"Interpréte le code écrit dans la textbox et stocke le résultat dans l_Text
l_text = l_Script.Eval(TextBox1.Text)
'La preuve de ce que j'ai dit auparavant
MsgBox l_text
'Détruit l'objet
Set l_Script = Nothing
End Sub
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 8 août 2005 à 19:04
Ce que tu cherche à faire, c'est utiliser des pointeurs en VB si je
comprends bien. Or, VB n'est pas vraiment spécialiste en la matière !
Le plus simple : passe par des collections qui stockeront tes données,
et avec lesquelles tu pourras utiliser des clés comme dans une table de
hachage.
DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/
BadFog
Messages postés6Date d'inscriptionjeudi 4 août 2005StatutMembreDernière intervention22 juin 2006 8 août 2005 à 18:19
Merci mais cela ne m'avance pas. C'est possible en C, en PHP, peut-être même en java et je n'ai pas d'autre moyen.
Mon problème est qu'à partir d'une table de paramètres, je dois ajouter un nombre inconnu de contrôles dont le libellé est dans cette même table, libellé qui contient lui-même des noms de paramètres.
Exemple :
Sachant que les valeurs de Current_Year et Last_Year sont dèjà connues car déjà lues dans le fichier et affectées à des variables du même nom.
Bien sûr, je pourrais pour chaque paramètre contenu dans le libellé, rechercher à nouveau sa valeur dans le fichier mais cela multiplie les lectures inutilement.
Faute de mieux, il faudra pourtant bien m'en satisfaire.
Pascal D.
Vous n’avez pas trouvé la réponse que vous recherchez ?
BadFog
Messages postés6Date d'inscriptionjeudi 4 août 2005StatutMembreDernière intervention22 juin 2006 8 août 2005 à 18:40
Tester tous les cas possibles équivaut à tester en "dur" dans le programme et donc à perdre tous les bénéfices de libellés paramétrables.
Ma seule solution consiste une fois le libellé récupéré et découpé afin d'isoler les parties textes (encadrées de douvble-quotes) et les parties paramètres, d'exécuter des requêtes sélection pour chaque paramètre trouvé tel que :
1/ alimentation d'une array à partir des libellés lus
2/ pour chaque libellé, concaténation des parties textes et des paramèters :
exple pour Ent_Col_CA valeur 5 (que l'on apellera Control1)
si part1 = "Réalisé"
part2=vblf
part3 = Last_Year
rst.open "Select Num_Value from paramètres where cod_parm = " & part3, cnn
Control1.caption = part1 & vblf & rs!Num_Value
J'aurais préféré pourvoir faire simplement
Control1.caption = part1 & vblf & function(part3) (fonction qui me restituerait la valeur de la variable dont le nom est passé en paramètre).