Tu as testé ce que je disais plus haut ?
Envoyé par Bujuman
Tu as testé ce que je disais plus haut ?
Envoyé par Bujuman
Scuse me while I kiss the sky ! Jimi Hendrix
Ouaip j'ai testé cette solution mais ca ne marche pas.
Ca marche chez toi?
En fait, c'est là où il me dit que les types sont incompatibles...
Quelle ligne ?Envoyé par _ChToM_
Je t'ai demandé de mettre ça à la place
Code : Sélectionner tout - Visualiser dans une fenêtre à part resultat = EcrMain.ScriptControl1.Eval(tmp4 & tmp2 & tmp3)
Scuse me while I kiss the sky ! Jimi Hendrix
Bah c'est ce que j'ai fait.
Du coup dans résultat ca me donne bien le résultat, mon seul problème c'est que je suis obligé de passer par la solution de Delbeke (appel à la fonction Traduit).
Je n'arrive toujours pas à récupérer la valeur de mon champ.
J'ai bien son nom, mais en faisant ce que Bujuman a dit, c'est comme si je faisais :
resultat = EcrMain.ScriptControl1.Eval("nom_de_maVariable" & "=" & "2")
alors que ce que je voudrai faire c'est :
resultat = EcrMain.ScriptControl1.Eval("valeur_de_maVariable" & "=" & "2")
A la ligne :Envoyé par Bujuman
Code : Sélectionner tout - Visualiser dans une fenêtre à part resultat = EcrMain.ScriptControl1.Eval(tmp4 & tmp2 & tmp3)
Oki, maintenant fait un msgbox de ces variables pour voir ce que ça donneEnvoyé par _ChToM_
Code : Sélectionner tout - Visualiser dans une fenêtre à part msgbox "tmp4 : " & tmp4 & " tmp2 : " & tmp2 & " tmp3 : " & tmp3
Scuse me while I kiss the sky ! Jimi Hendrix
Sur la MsgBox, j'ai :
En passant par la méthode Traduit de Delbeke :
tmp4 : 2
tmp2 : =
tmp3 : 2
resultat = EcrMain.ScriptControl1.Eval(tmp4 & tmp2 & tmp3) me donne "Vrai"
Les variables sont initialisées comme ca :
tmp4 = traduit(rs_tmp("LIB_CHAMP"))
tmp2 = rs_tmp("LIB_COMPARAISON")
tmp3 = rs_tmp("LIB_VALUE")
Sans passer par la méthode Traduit :
tmp4 : nom_de_ma_variable
tmp2 : =
tmp3 : 2
resultat = EcrMain.ScriptControl1.Eval(tmp4 & tmp2 & tmp3) me pete une erreur
Initialisation des variables :
tmp4 = rs_tmp("LIB_CHAMP")
tmp2 = rs_tmp("LIB_COMPARAISON")
tmp3 = rs_tmp("LIB_VALUE")
Bonjour,
Je me demandais une chose, ne peut tu pas créer une table qui aurait deux colonne, la premiere le nom de ta variable, et la deuxième la valeur de ta variable ? Ainsi lorsque tu recupère le nom de ta variable, tu saurais avec ta deuxième table la valeur de celle-ci, et grace à Eval tu pourrais faire ce que tu souhaites faire. De plus ton code serais générique, car quelque soit le nombre de variable et leur valeur que tu voudrais rajouter, il suffirait de les rajouter dans ta table.
Si tu as la possibilité de créer des tables, je pense que ce serait la meilleur façon de faire.
Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.
Ben non c'est pas possible, parce que en fait, le nom de ma variable ne change pas, mais la valeur elle change a chaque tour que je fais quand je fais la lecture de mes enregistrements.
Donc à chaque tour de boucle, ma valeur change mais je la stocke toujours dans la même variable.
Tu l'as récupère à partir de quoi la valeur de ta variable ?
Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.
A partir d'une autre base de données. En fait, une application me sort des données pendant une journée, et le soir venu, mon programme VB travaille sur ces données pour les réinjecter dans une autre base de données.Envoyé par cedric600
Et les données que te sors cette application sont associés à un nom de variable ? Est ce que l'application te sors un couple : nom de varaible, valeur ?
Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.
En fait, je recupere mes données depuis un record set qui travaille sur une base mysql. Je stocke chaque élément de chaque colonne dans un tableau dans mon programme VB.
Par exemple, mon rs comprend trois champs :
DATA1, DATA2, DATA3
je stocke le tout dans un tableau,
tab_tmp(1) = DATA1
tab_tmp(2) = DATA2
tab_tmp(3) = DATA3
Now, je sais que quelque soit l'enregistrement que je suis en train de traiter, il sera stocké dans mon tableau. J'ai décidé de faire ça car il peut arriver que j'ai à modifier les données, et donc je trouvais ca plus intéressant de stocker ça dans un tableau temporaire.
Donc, dans ma 2eme base de données, je veux sauvegarder le fait que je veux comparer mon champ tab_tmp(2) à 2.
Ca nous donne donc le test : tab_tmp(2) = 2
Dans tous les cas, je sais que ma donnée sera sauvegardée dans le tableau, c'est pour ça que j'ai décidé de sauvegarder le nom de la variable dans la base de données.
Donc pour répondre a ta question, mon couple nom_de_variable - valeur n'existe pas vraiment.
J'ai un tableau avec les valeurs à l'intérieur.
Bon bah je ne vois pas comment t'aider, en fait mon idée à la base était de voir si tu pouvais le lien entre ta variable et sa valeur grâce à la base de donnée. Si de cette façon ce n'est pas possible, je ne vois rien d'autre qu'un select case.
Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.
Ben ouais j'avais bien pigé ce que tu voulais faire...
M'enfin, merci quand même pour le coup de main
Mais je suis toujours preneur de solutions adaptées à mon problème.
évaluer une expression au runtime en vb6 est un vieux classique pas facile à résoudre puisque ça revient au final à insérer un interpréteur vb dans le source lui-même...
il existe une source qui propose un début de solution ici: http://www.softcircuits.com/dl/vbsrc/eval.zip
nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
pas de questions techniques par mp
J'ai regardé ce source que je ne connaissais pas.
Pas mal ,mais limité aux quatre opérations avec niveau de paranthéses infini.
Par rapport à mon source, il gere gère des variables.
En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
(ALEXANDRE DUMAS)
N'hésitez pas à visiter ma page de contributions
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager