tbh idk - maybe Jens can fill in the blanks, the only other thing you can try and verify is the GetRows, that returns all the data into a really funky (COM) variant array, and then you parse it yourself (DBCommand parses it into a 2dim array) ... or you can use this $rs.EOF/MOVENEXT thingy to step through the data yourself - but the GetRows() is faster (imho)

The benefit of using EOF/MOVENEXT is that you can change the data model, shift stuff around - and maybe be not so code impacted by that (because your refering to fields through the Fields collection, by name) and not by a hardcoded array index ... your call ...

You can try GetRows like this (after your Execute):

$rows = $rs.getrows()

?"vartype= " + vartypename($rows) + " error=" @SERROR

-Shawn