0

也许有更好的方法来实现我想要做的事情,但我一直在努力做到这一点,没有别的想法。我创建了一个数组数组,但是如果我打印数组中的所有内容并且由于某种原因它在循环中只运行了四次,则会出现错误。它从数据库中的记录集中获取数据。请帮忙?

这是我的代码:

var connection = new ActiveXObject("ADODB.Connection");
var connectionstring = "DSN=adsn;UID=root;PWD=1234";
connection.Open(connectionstring);
var rs = new ActiveXObject("ADODB.Recordset");    
var arrayCol = new Array(17);
var arrayTable = [];
rs.MoveFirst(); //first value of the record set
//alert("Columns: "+columns); //should return 15
for(var ii=0;ii<3;ii++){
    for(var jj=0;jj<17;jj++){
        alert(jj);
        if(rs.Fields(jj).value == null && rs.Fields(jj).EOF != true){
            arrayCol[jj] = "";
        }
        else
            arrayCol[jj] = rs.Fields(ii).Value;
        rs.MoveNext();
    }
    alert(arrayCol[0]+" "+arrayCol[1]+" "+arrayCol[2]+" "+arrayCol[3]+" "+arrayCol[4]+" "+arrayCol[5]+" "+arrayCol[6]+" "+arrayCol[7]+" "+arrayCol[8]+" "+arrayCol[9]+" "+arrayCol[10]+" "+arrayCol[11]+" "+arrayCol[12]+" "+arrayCol[13]+" "+arrayCol[14]+" "+arrayCol[15]+" "+arrayCol[16]);
}

结果我得到M M M undefinded undefinded undefinded undefinded undefinded undefinded undefinded undefinded undefinded undefinded undefinded undefinded undefinded undefinded undefinded undefinded undefinded

M是数组中第一项的值

它也给了我错误:Item cannot be found in the collection corresponding to the requested name or ordinal.进入循环 4 次后,即使我将内部和外部循环编号都更改为任何数字

4

1 回答 1

1

我不知道 ActiveX 和 ADOB.Recordset,但情况rs.Fields(ii).value == null && rs.Fields(ii).EOF != true看起来很奇怪。它不应该是类似的东西吗

if (rs.Fields(ii).EOF || rs.Fields(ii).value == null) {
    // then use empty string instead of .value
}

顺便说一句,要获得一个表(嵌套数组),您需要添加类似

var arrayCol = new Array(17);
arrTable.push(arrayCol);

到你的外循环。

于 2013-07-22T19:56:04.197 回答