0

私がやろうとしていることを達成するためにより良いことがあるかもしれませんが、これをやろうとして立ち往生しており、他に何も思い浮かびません。配列の配列を作成しましたが、配列内のすべてを出力するとエラーが発生し、何らかの理由でループ内で 4 回しか実行されません。データベースに設定されたレコードからデータを取得しています。助けてください?

これが私のコードです:

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 に答える