Получить имена полей набора записей ADO (классический ASP) - PullRequest
8 голосов
/ 02 ноября 2009

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

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

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

Время | 1 января 09 | 2 января 09 | 3 января 09 | ...

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

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

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

(Извинения за зверское форматирование "таблицы").

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

Это означает, что когда я отображаю результаты пользователю, мне (в настоящее время) необходимо продублировать логику проверки даты в классическом ASP [легко, но не удается выполнить обслуживание]

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

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

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

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

Ответы [ 2 ]

8 голосов
/ 02 ноября 2009

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

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

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

5 голосов
/ 02 ноября 2009

Примерно так должно быть: -

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