9

誰かが助けることができるかどうか疑問に思います:

簡単に言うと、私はMSSQL2005を使用してピボットテーブルを作成しています。調査されるデータは日付範囲によって制限されます(最も近い月曜日から選択された日付までの1週間のすべてのデータ)

ストアドプロシージャを実行して日付を渡すと、正しいテーブルが返されます。例:

時間 09年1月1日 09年1月2日 09年1月3日 ..。
09:00 0 9 25 ..。
09:30 8 27 65 ..。
10:00 20 44 112 ..。

私が抱えている唯一の問題は、SPに渡された日付(目的の表示日)とSP内のロジック(左側の列をその日付に最も近い月曜日にする)の両方に基づいて列ヘッダーが変化することです。指定)。

これは、結果をユーザーに表示するときに、(現在)従来のASPで日付チェックロジックを複製する必要があることを意味します[簡単ですが、保守性は失敗します]

私が本当に必要としているのは、レコードセット自体から列名を取得する方法です。

誰かが私を正しい方向に向けてくれませんか?

私はグーグルで検索しましたが、得られるすべての結果はテーブルスキーマの読み取りに関連しているようです。この場合、テーブルはメモリ内でオンザフライで生成されているため、役に立ちません。

あなたが提供できるどんな助けにも前もって感謝します

4

2 に答える 2

9

adoレコードセットが与えられた場合、大まかに次のように実行できます(これは疑似コードです)。

foreach (field in rs.Fields)
{
    alert(field.Name);
}

これにより、フィールドの名前がわかります。このドキュメントを確認してください。

于 2009-11-02T15:49:12.200 に答える
5

このような何かがそれをするべきです:-

 <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
 %>
于 2009-11-02T16:00:08.550 に答える