ADO レコードセット フィールド名の取得 (クラシック ASP)
-
12-09-2019 - |
質問
誰かが助けてくれないかと思います:
簡単に言うと、私は MSSQL2005 を使用してピボット テーブルを作成しています。調査するデータは日付範囲によって制限されます(選択した日付に最も近い月曜日から始まる 1 週間のすべてのデータ)
ストアド プロシージャを実行して日付を渡すと、正しいテーブルが返されます。例:
時間 | 2009 年 1 月 1 日 | 2009 年 1 月 2 日 | 2009 年 1 月 3 日 | ...
09:00 | 0 | 9 | 25 | ...
09:30 | 8 | 27 | 65 | ...
10:00 | 20 | 44 | 112 | ...
(ひどい「表」フォーマットについてお詫びします)。
私が抱えている唯一の問題は、列ヘッダーが SP に渡された日付 (希望する表示日) と SP 内のロジック (左側の列がその日付に最も近い月曜日になるように強制する) の両方に基づいて変化することです。指定された)。
これは、結果をユーザーに表示するときに、(現時点では) 従来の ASP の日付チェック ロジックを複製する必要があることを意味します [簡単ですが、保守性に問題があります]
本当に必要なのは、レコードセット自体から列名を取得する方法です。
誰かが私に正しい方向を教えてくれませんか?
Googleで検索しましたが、得られた結果はすべてテーブルスキーマの読み取りに関連しているようです。テーブルはメモリ内でオンザフライで生成されているため、この場合は役に立ちません。
ご協力いただけると幸いです。
解決
ado レコードセットを指定すると、おおよそ次のことができます (これは擬似コードです)。
foreach (field in rs.Fields)
{
alert(field.Name);
}
これにより、フィールドの名前が得られます。これを確認してください ドキュメンテーション.
他のヒント
このようなものがそれを行うはずです:-
<table>
<thead>
<tr>
<%For Each fld in rst.Fields%>
<th><span><%=Server.HTMLEncode(fld.Name)%></span></th>
<%Next %>
</tr>
</thead>
<tbody>
<%
Do Until rst.EOF
OutputRow rst.Fields
rst.MoveNext
Loop
%>
</tbody>
</table>
Sub OutputRow(fields)
%>
<tr>
<%For Each fld in fields%>
<td><span><%=Server.HTMLEncode(fld.Name)%></span></td>
<%Next %>
</tr>
<%
End Sub
%>