I have no idea of ActiveX and ADOB.Recordset, but the condition rs.Fields(ii).value == null && rs.Fields(ii).EOF != true
looks odd. Shouldn't it rather be something like
if (rs.Fields(ii).EOF || rs.Fields(ii).value == null) {
// then use empty string instead of .value
}
Btw, to get a table (nested arrays) you will need to add something like
var arrayCol = new Array(17);
arrTable.push(arrayCol);
to your outer loop.