检索 ADO 记录集字段名称(经典 ASP)
Posted
技术标签:
【中文标题】检索 ADO 记录集字段名称(经典 ASP)【英文标题】:Retrieve ADO Recordset Field names (Classic ASP) 【发布时间】:2010-12-12 08:00: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 搜索过,但我得到的所有结果似乎都与读取表架构有关 - 在这种情况下这并没有帮助,因为我的表是在内存中动态生成的。
非常感谢您提供的任何帮助
【问题讨论】:
【参考方案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以上是关于检索 ADO 记录集字段名称(经典 ASP)的主要内容,如果未能解决你的问题,请参考以下文章
将 DAO 记录集转换为断开连接的 ADO 记录集 dbDecimal 问题