【问题标题】:Retrieve ADO Recordset Field names (Classic ASP)检索 ADO 记录集字段名称(经典 ASP)
【发布时间】:2025-12-12 04:05:02
【问题描述】:

我想知道是否有人可以提供帮助:

长话短说,我正在使用 MSSQL2005 构建数据透视表。正在检查的数据受日期范围的限制(从最近的星期一到所选日期的 1 周内的所有数据)

当我运行存储过程并传递一个日期时,我得到正确的表,例如:

Time 1 Jan 09 2 Jan 09 3 Jan 09 ...
09:00 0 9 25 ...
09:30 8 27 65 ...
10:00 20 44 112 ...

我遇到的唯一问题是列标题会根据传递给 SP 的日期(所需的查看日期)和 SP 内部的逻辑(强制左侧列是最近的星期一)而有所不同到指定的日期)。

这意味着当我向用户显示结果时,我(当前)需要复制经典 ASP 中的日期检查逻辑[简单但可维护性失败]

我真正需要的是一种从记录集中检索列名的方法。

有人可以指点我正确的方向吗?

我已经用 Google 搜索过,但我得到的所有结果似乎都与读取表架构有关 - 在这种情况下这并没有帮助,因为我的表是在内存中动态生成的。

非常感谢您提供的任何帮助

【问题讨论】:

    标签: asp-classic ado pivot recordset


    【解决方案1】:

    给定一个 ado 记录集,您可以大致执行以下操作(这是在伪代码中):

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

    这将为您提供该字段的名称,请查看此documentation

    【讨论】:

    • 这太简单了——使用 .Name 属性。不用说它工作得很好。谢谢。
    • 鉴于.Name 没有记录在案(例如)here,我不会太尴尬。
    • @iconoclast 记录在此处w3schools.com/ado/ado_ref_field.asp您查看的是记录集而不是字段。
    【解决方案2】:

    应该这样做:-

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

    【讨论】:

    • 我将它用于我的代码,但列标题显示在每一行?
    • @BenHamilton 有点晚了,但是将 Sub 编辑为 HTMLEncode fld.Value 而不是 fld.Name