Получение имен полей набора записей ADO (классический ASP)

Интересно, может ли кто-нибудь помочь:

Короче говоря, я использую MSSQL2005 для создания сводной таблицы. Исследуемые данные ограничены диапазоном дат (все данные за 1 неделю, начиная с ближайшего понедельника до выбранной даты)

Когда я запускаю Stored Proc и передаю ему дату, я возвращаю правильную таблицу, например:

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 [просто, но сбой в сопровождении]

Что мне действительно нужно, так это способ получения имен столбцов из самого набора записей.

Может кто-нибудь указать мне в правильном направлении?

Я гуглил, но все результаты, которые я получаю, похоже, относятся к чтению схемы таблицы, что в данном случае не помогает, поскольку моя таблица создается на лету в памяти.

Заранее большое спасибо за любую помощь, которую вы можете предоставить


person Basic    schedule 02.11.2009    source источник


Ответы (2)


Учитывая набор записей ado, вы можете сделать примерно следующее (это в псевдокоде):

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

Это даст вам название поля. Ознакомьтесь с этой документацией.

person JoshBerke    schedule 02.11.2009
comment
Это было до безобразия просто — используйте свойство .Name. Излишне говорить, что это сработало идеально. Спасибо. - person Basic; 02.11.2009
comment
Учитывая, что .Name не задокументировано (например) здесь, я бы не стал слишком смущаться . - person iconoclast; 21.06.2013
comment
@iconoclast это задокументировано здесь w3schools.com/ado/ado_ref_field.asp вы искали в наборе записей не поле. - person JoshBerke; 23.06.2013

Что-то вроде этого должно сделать это: -

 <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
 %>
person AnthonyWJones    schedule 02.11.2009
comment
Я использую это для своего кода, но заголовки столбцов отображаются в каждой строке? - person Ben Hamilton; 11.07.2014
comment
@BenHamilton Немного поздно, но отредактируйте Sub на HTMLEncode fld.Value, а не fld.Name - person Albofish; 22.10.2014