2009-11-02 5 views
6

Je me demande si quelqu'un peut aider:Récupérer ADO Recordset Les noms de champ (ASP classique)

Longue histoire courte, j'utilise MSSQL2005 pour construire un tableau croisé dynamique. Les données en cours d'examen est limité par la plage de dates (Toutes les données pour 1 semaine de la plus proche lundi à la date sélectionnée)

Quand je lance le proc stocké et de le transmettre à une date, je reçois la bonne table retour par exemple:

Heure | 1 Jan 09 | 2 Jan 09 | 3 Jan 09 | ...

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

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

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

(Toutes nos excuses pour la mise en forme "atroce" de la table). Le seul problème que j'ai, c'est que les en-têtes de colonne varient en fonction à la fois de la date transmise au SP (Date de vue souhaitée) et de la logique du SP (qui force la colonne de gauche à être la plus proche) Lundi à la date indiquée).

Cela signifie que lorsque j'affiche les résultats à l'utilisateur, I (actuellement) ont besoin de dupliquer la logique de vérification date ASP classique [facile, mais une maintenabilité échouent]

Ce que je vraiment besoin est un moyen de récupérer les noms de colonnes du jeu d'enregistrements lui-même.

Est-ce que quelqu'un peut me diriger dans la bonne direction? Je ai googlé mais tous les résultats que je reçois semblent se rapporter à la lecture d'un schéma de table - ce qui n'aide pas dans ce cas que ma table est générée à la volée en mémoire.

Un grand merci à l'avance pour toute aide que vous pouvez fournir

Répondre

7

Étant donné un jeu d'enregistrements ADO que vous pourriez faire à peu près les suivantes (Ceci est en pseudo-code):

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

Cela vous donnera le nom du champ vérifier ce documentation.

+0

C'était honteusement simple - Utilisez la propriété .Name. Inutile de dire que cela a parfaitement fonctionné. Je vous remercie. – Basic

+0

Pas de problème, heureux d'aider! – JoshBerke

+0

Étant donné que '.Name' n'est pas documenté (par exemple) [ici] (http://www.w3schools.com/ado/ado_ref_recordset.asp), je ne serais pas trop embarrassé. – iconoclast

4

Quelque chose comme cela devrait le faire: -

<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

J'utilise ceci pour mon code mais les en-têtes de colonne sont affichés sur chaque ligne? –

+0

@BenHamilton Bit en retard, mais modifiez le Sub en HTMLEncode fld.Value not fld.Name – Albofish