質問

誰かが助けてくれないかと思います:

簡単に言うと、私は 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
 %>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top