2009-11-02 16 views
6

Mi chiedo se qualcuno può aiutare:Recupera nomi ADO Recordset campo (Classic ASP)

lunga storia breve, sto usando MSSQL2005 per costruire una tabella pivot. I dati all'esame è limitato per intervallo di date (Tutti i dati per 1 settimana dal più vicino Lunedi alla data selezionata)

Quando esegue la stored Proc e passarlo una data, ottengo la tabella corretta posteriore es:

Ora | 1 gen 09 | 2 gen 09 | 3 gen 09 | ...

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

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

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

(Ci scusiamo per la atroce "tabella" di formattazione).

L'unico problema che ho è che le intestazioni delle colonne variano in base sia alla data passata a SP (La data di visualizzazione desiderata) sia alla logica all'interno dell'SP (che forza la colonna a sinistra a essere la più vicina Lunedì alla data specificata).

Ciò significa che quando visualizzo i risultati per l'utente, I (attualmente) bisogno di duplicare la logica data-check-in ASP classico [facile, ma una manutenzione non riescono]

Quello che ho veramente bisogno è un modo di recuperare i nomi delle colonne dal recordset stesso.

Qualcuno può indicarmi la direzione giusta?

Ho cercato su Google, ma tutti i risultati che ottengo sembrano riguardare la lettura di uno schema tabella, il che non aiuta in questo caso poiché la tabella viene generata al volo nella memoria.

Molte grazie in anticipo per qualsiasi aiuto che potete fornire

risposta

7

Dato un record ADO imposta si potrebbe fare più o meno il seguente (Questo è nel codice pseudo):

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

Questo vi darà il nome del campo controlla questo documentation.

+0

Questo è stato imbarazzante semplice - utilizzare la proprietà .Name. Inutile dire che ha funzionato perfettamente. Grazie. – Basic

+0

Nessun problema, felice di aiutare! – JoshBerke

+0

Dato che '.Name' non è documentato (ad esempio) [qui] (http://www.w3schools.com/ado/ado_ref_recordset.asp), non sarei troppo imbarazzato. – iconoclast

4

Qualcosa di simile dovrebbe farlo: -

<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

Lo sto usando per il mio codice ma le intestazioni delle colonne sono visualizzate su ogni riga? –

+0

@BenHamilton Bit in ritardo, ma modifica il Sub in HTMLEncode fld.Value not fld.Name – Albofish