也许有更好的事情可以实现我想要做的事情,但是我一直在努力做到这一点并没有想到任何其他事情。我创建了一个数组数组,但如果我在数组中打印所有内容并且由于某种原因它只在循环中进行了四次,则会出现错误。 它从数据库中的记录集中获取数据。请帮帮忙?
这是我的代码:
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
是数组中第一项的值
即使我将内部和外部循环数字都改为任何数字,它也会在循环4次后给出错误:Item cannot be found in the collection corresponding to the requested name or ordinal.
答案 0 :(得分: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);
到你的外圈。