レコードの配列を出力する関数を書くのに問題があります。私がやろうとしているのは、テーブル内のすべてのレコードを取得する関数を呼び出して、関数を呼び出すページで使用できる多次元配列を作成することです。
私が間違っていることを教えてもらえますか?
function get_admins
set rs = Server.CreateObject("ADODB.recordset")
rs.cursorType = 3
getsql = "select * from users order by name asc"
rs.Open getsql, conn
total = rs.RecordCount
ra = array
c = 0
if total < 1 then
o = "There are no admins yet."
else
do until rs.EOF
id = rs.Fields("id").value
username = rs.Fields("username").value
adminname = rs.Fields("name").value
email = rs.Fields("email").value
Redim Preserve ra(c,4) '<-- This is the line the error doesn't like
ra(c,0) = id
ra(c,1) = username
ra(c,2) = adminname
ra(c,3) = email
c = c + 1
rs.MoveNext
loop
end if
rs.close
get_admins = ra
end function
これは私が得るエラーです:
Microsoft VBScript ランタイム エラー '800a0009'
下付き文字が範囲外
ページ上の関数呼び出しは次のようになります。
<pre><%
dim seeme
set seeme = get_admins
%></pre>
ここに私が見つけたいくつかの同様の質問があります:
従来の ASP 3.0 レコードセットから配列を作成する- 大いに役立ちましたが、十分ではありませんでした。
Redim Preserve が「添え字が範囲外」になる- これは私を混乱させただけです。