Search code examples
vbams-accessnulllistboxeval

MS Access: eval() returns NULL when accessing .Column(x, y) property


I have a form and to validate it, I am using eval(). Background is, that I have defined rules in an table. These rules contain placeholders. The rule is compiled and then eval() should check wether its true or false.

Part of one rule contains a check on a listbox value. I identified this to be the problem. I could reduce it to the following:

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

returns ie 2,

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

returns NULL - but I can not figure out why!?

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

returns NULL as well!? Column 6, row 5 definately contains a numeric value.

Also pasting the following into the debug window shows "2" as return value in both cases:

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

Any idea anyone??? I don't have a dime anymore.

[EDIT]

Solution of Andre works. Just change the indexes of the .Column property within Eval(). Use .Column(rowindex, colindex) instead of .Column(colindex, rowindex)!

[/EDIT]

Thank You very much, Thomas


Solution

  • Wow. What a strange thing.

    Apparently you have to switch the parameters (or array indexes) of the .Column property around when using it with Eval().

    My listbox has 2 rows and 7 columns, with a number in the 6th column (= column 5).

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

    I don't really know what to make of this.

    Note: I'm using Access 2010.