2009-11-02 72 views
6

我不知道是否有人能幫助:檢索ADO記錄集的字段名(經典ASP)

長話短說,我使用MSSQL2005建立一個透視表。正在檢查的數據受限於日期範圍(從最近的星期一到所選日期的1周內的所有數據)

當我運行Stored Proc並通過日期時,我得到正確的表格,例如:

時間 | 2009年1月1日 | 2009年1月2日號 | 2009年3月3日 | ...

09:00 | 0 | 9 | 25 | ...

09:30 | 8 | 27 | 65 | ...

10:00 | 20 | 44 | 112 | ...

(道歉爲殘暴的「表」格式)。

我唯一的問題是,列標題將根據傳入SP的日期(期望的查看日期)和SP內的邏輯(強制左列爲最接近的日期星期一至指定日期)。

這意味着,當我顯示結果給用戶,我(現在)需要複製在傳統的ASP日期檢查邏輯[容易,但可維護性失敗]

我真正需要的是一種方式從記錄集本身檢索列名稱。

有人可以請指出我在正確的方向嗎?

我已經谷歌搜索,但我得到的所有結果似乎與閱讀表格架構 - 這在這種情況下沒有幫助,因爲我的表在內存中正在生成。

提前許多感謝任何幫助,您可以提供

回答

7

給定一個ADO記錄集,你可以做大致有以下(這是僞代碼):

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

這會給你的名字的領域檢查出這documentation

+0

這是令人尷尬的簡單 - 使用,請將.Name屬性。毋庸置疑,它完美運作。謝謝。 – Basic 2009-11-02 15:58:55

+0

沒問題,樂於幫忙! – JoshBerke 2009-11-02 16:03:11

+0

考慮到'.Name'沒有記錄(例如)[這裏](http://www.w3schools.com/ado/ado_ref_recordset.asp),我不會太尷尬。 – iconoclast 2013-06-21 16:29:23

4

像這樣的東西應該做到這一點: -

<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 
%> 
+0

我正在使用這個代碼,但列標題顯示在每一行? – 2014-07-11 15:52:18

+0

@BenHamilton比特已晚,但編輯Sub到HTMLEncode fld.Value不是fld.Name – Albofish 2014-10-22 12:38:35