2009-11-02 17 views
6

Ich frage mich, wenn jemand helfen kann:Abrufen von ADO-Cord-Feldnamen (Classic ASP)

Lange Rede kurzer Sinn, ich bin mit MSSQL2005 eine Pivot-Tabelle zu erstellen. Die Daten geprüft werden nach Datumsbereich (Alle Daten für 1 Woche bis zum nächsten Montag auf das Datum ausgewählt) begrenzt

Wenn ich die Stored Proc laufen und es ein Datum übergeben, erhalte ich die richtige Tabelle zurück zB:

Uhrzeit | 1 Jan 09 | 2 Jan 09 | 3 Jan 09 | ...

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

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

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

(Entschuldigung für die grauenhafte "Tabelle" Formatierung).

Das einzige Problem, das ich habe, ist, dass die Spaltenüberschriften basierend auf dem Datum in der SP (Das gewünschte Datum der Ansicht) und der Logik in der SP (die die linke Spalte, um die nächste zu sein) variiert Montag bis zum angegebenen Datum).

Das bedeutet, dass, wenn ich die Ergebnisse für den Benutzer anzeigen, I (zur Zeit) benötigen Sie das Datum-Prüflogik in klassischen ASP [einfach, aber ein Wartbarkeit fail]

Was ich wirklich brauchen, ist eine Möglichkeit, duplizieren Abrufen der Spaltennamen aus dem Recordset selbst.

Kann mir bitte jemand in die richtige Richtung zeigen?

Ich habe gegoogelt, aber alle Ergebnisse, die ich bekomme, scheinen sich auf das Lesen eines Tabellenschemas zu beziehen - was in diesem Fall nicht hilft, da meine Tabelle im Speicher dynamisch generiert wird.

Vielen Dank im Voraus für jede Hilfe, die Sie

Antwort

7

bieten können einen ado Rekord Angenommen, Sie etwa Folgendes tun könnten (Dies ist in Pseudo-Code):

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

Dies gibt Ihnen den Namen des Feldes überprüfen Sie diese documentation.

+0

Das peinlich einfach war - die .Name-Eigenschaft verwenden. Unnötig zu sagen, dass es perfekt funktionierte. Vielen Dank. – Basic

+0

Kein Problem, froh zu helfen! – JoshBerke

+0

Vorausgesetzt, dass '.Name' nicht dokumentiert ist (z. B.) [hier] (http://www.w3schools.com/ado/ado_ref_recordset.asp), wäre ich nicht zu peinlich. – iconoclast

4

So etwas sollte es tun: -

<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

Ich verwende dies für meinen Code, aber die Spaltenüberschriften werden in jeder Zeile angezeigt? –

+0

@BenHamilton Bit spät, aber bearbeiten Sie die Sub zu HTMLEncode fld.Value nicht Fld.Name – Albofish