2 votes

MS Access : eval() renvoie NULL lors de l'accès à la propriété .Column(x, y)

J'ai un formulaire et pour le valider, j'utilise eval(). Le problème est que j'ai défini des règles dans une table. Ces règles contiennent des espaces réservés. La règle est compilée, puis eval() doit vérifier si elle est vraie ou fausse.

Une partie d'une règle contient une vérification de la valeur d'une boîte de liste. J'ai identifié ce point comme étant le problème. J'ai pu le réduire à ce qui suit :

Application.Forms("frmDMAE").lstHistory.Column(6, Application.Forms("frmDMAE").lstHistory.ListCount - 1)

retourne ie 2,

eval("Application.Forms(""frmDMAE"").lstHistory.Column(6, Application.Forms(""frmDMAE"").lstHistory.ListCount - 1)")

renvoie NULL - mais je n'arrive pas à comprendre pourquoi !?

eval("Application.Forms(""frmDMAE"").lstHistory.Column(6, 5)")

renvoie également NULL ! ? La colonne 6, ligne 5 contient bien une valeur numérique.

En collant ce qui suit dans la fenêtre de débogage, on obtient "2" comme valeur de retour dans les deux cas :

Application.Forms("frmDMAE").lstHistory(6, Application.Forms("frmDMAE").lstHistory.ListCount - 1) Application.Forms("frmDMAE").lstHistory.Column(6, 5)

Une idée ? Je n'ai plus un centime.

[EDIT]

Solution des travaux d'André. Il suffit de changer les index de la propriété .Column dans Eval(). Utilisez .Column(rowindex, colindex) au lieu de .Column(colindex, rowindex) !

[/EDIT]

Merci beaucoup, Thomas

2voto

Andre Points 19020

Wow. Quelle chose étrange.

Apparemment, vous devez changer les paramètres (ou index de tableau) de la .Column lors de son utilisation avec Eval() .

Ma boîte de liste comporte 2 lignes et 7 colonnes, avec un numéro dans la 6e colonne (= colonne 5).

? Forms!myForm!myList.Column(5,1)
3600

? Eval("Forms!myForm!myList.Column(5,1)")
Null

? Eval("Forms!myForm!myList.Column(1,5)")
3600

Je ne sais pas vraiment quoi en penser.

Remarque : j'utilise Access 2010.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X