2009-11-02 17 views
6

Me pregunto si alguien puede ayudar:Recuperar nombres de ADO conjunto de registros de campo (Classic ASP)

Larga historia corta, estoy usando MSSQL2005 para construir una tabla dinámica. Los datos que se examina está limitado por rango de fechas (Todos los datos por 1 semana a partir del lunes próximo a la fecha seleccionada)

Cuando ejecuto el procedimiento almacenado y lo pasan una fecha, consigo la tabla correcta de regreso por ejemplo:

Tiempo | 1 ene 09 | 2 ene 09 | 3 ene 09 | ...

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

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

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

(Disculpas por el atroz formato de "mesa").

El único problema que tengo es que los encabezados de columna variarán según la fecha pasada en el SP (la fecha de visualización deseada) y la lógica dentro del SP (lo que obliga a la columna de la izquierda a ser la más cercana Lunes a la fecha especificada).

Esto significa que cuando puedo mostrar los resultados al usuario, que (actualmente) necesidad de duplicar la lógica de la fecha de comprobación en ASP clásico [fácil, pero una capacidad de mantenimiento fallan]

Lo que realmente necesita es una manera de recuperar los nombres de las columnas del conjunto de registros en sí.

¿Puede alguien señalarme en la dirección correcta?

He buscado en Google pero todos los resultados que obtengo parecen estar relacionados con la lectura de un esquema de tabla, lo que no ayuda en este caso ya que mi tabla se genera sobre la marcha en la memoria.

Muchas gracias de antemano por cualquier ayuda que puede proporcionar

Respuesta

7

Dado un registro ADO establece que podría hacer más o menos lo siguiente (Esto está en pseudo código):

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

esto le dará el nombre del campo echa un vistazo a esto documentation.

+0

Eso fue vergonzosamente sencilla - Utilice la propiedad .Nombre. Huelga decir que funcionó a la perfección. Gracias. – Basic

+0

¡No hay problema, me alegro de ayudar! – JoshBerke

+0

Dado que '.Name' no está documentado (por ejemplo) [aquí] (http://www.w3schools.com/ado/ado_ref_recordset.asp), no me avergonzaría demasiado. – iconoclast

4

Algo como esto debería hacerlo: -

<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

Estoy usando esto para mi código pero los encabezados de las columnas se muestran en cada fila? –

+0

@BenHamilton Mida tarde, pero edite el Sub en HTMLEncode fld.Value not fld.Name – Albofish

Cuestiones relacionadas