Foros del Web » Programando para Internet » ASP Clásico »

Avanzado: Consulta con campos dinamicos

Estas en el tema de Avanzado: Consulta con campos dinamicos en el foro de ASP Clásico en Foros del Web. Hola gente. Estoy trabajando con pag. ASP y BD Acces. Tengo una tabla (nom_alu, cod_docent, cod_seccion, cod_curso, etc ), en el que voy agregando y/o ...
  #1 (permalink)  
Antiguo 26/05/2003, 15:13
 
Fecha de Ingreso: marzo-2003
Ubicación: Av. Grau 1190
Mensajes: 122
Antigüedad: 21 años, 3 meses
Puntos: 3
Avanzado: Consulta con campos dinamicos

Hola gente.

Estoy trabajando con pag. ASP y BD Acces.

Tengo una tabla (nom_alu, cod_docent, cod_seccion, cod_curso, etc ), en el que voy agregando y/o eliminando campos (ejm: nota1, nota2, nota3, etc) a traves de una pag ASP.

En otra pagina genero una consulta filtrando registros por: cod_docent, cod_seccion y cod_curso, con lo cual me filtra a los registros de un solo curso, docente y seccion, mostrando de esta manera no mas de 100 registros por consulta.

Ahora bien como estuve adicionando campos (nota1, nota2, nota3, etc), me gustaria mostrar la consulta de manera dinamica, es decir que para un prof "X" se muestre solo (x ejm nota1 y nota3) y para el Prof "Y" se muestre las notas (x ejm nota2 y nota3), y asi para cada Profesor. La foma como pienso enviar el nombre del campo es mediante formulario y lo recupero en la pagina de consulta mediante Request.form().

Lo que no se es como puedo mostrar los campos de manera dinamica, es posible?

Espero haberme explicado bien.

Gracias a todos
  #2 (permalink)  
Antiguo 26/05/2003, 15:45
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
A ver si te entendí...sabes cuales campos vas a mostrar y los mandas por formulario, si sabes también el número(es decir que vas a mostrar 3 campos: notas1, notas2, notas3) solo los recoges en variables...

mi_nota1= request.form("nota")
mi_nota2= request.form("nota2")


strSQL= "SELECT nom_alu, cod_docent, cod_seccion, " & mi_nota1 &", "& mi_nota2 &" FROM tabla WHERE condicion


Si no sabes el número de campos que van a llegar podrías también mediante un For...each crear la cadena de los campos, en fin espero que te sirva.

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 26/05/2003, 17:12
 
Fecha de Ingreso: marzo-2003
Ubicación: Av. Grau 1190
Mensajes: 122
Antigüedad: 21 años, 3 meses
Puntos: 3
Gracias u_goldman,

mi_nota1= request.form("nota")
mi_nota2= request.form("nota2")


strSQL= "SELECT nom_alu, cod_docent, cod_seccion, " & mi_nota1 &", "& mi_nota2 &" FROM tabla WHERE condicion

ya lo intente, el problema es cuando el numero de campos varia y no siempre son los mismos. Por otro lado, como muestro lo regisros?, se puede usar GetRows y como seria?

Como uso For...each, que mencionas?

Gracias
  #4 (permalink)  
Antiguo 27/05/2003, 02:41
Avatar de Subotai  
Fecha de Ingreso: mayo-2003
Ubicación: Irúnforge
Mensajes: 198
Antigüedad: 21 años, 1 mes
Puntos: 1
Dices que quieres mostrar un informe mediante una sentencia SQL sobre un objeto tabla el cual no sabes cuantas columnas va a tener?
un pregunta: Existen tablas temporales en Access? de access se lo justo, pero me da que no existen, aun asi quiensabe, de existir eso podria venirte bien.
Me parece que no te voy a ser de gran ayuda...
saludos
  #5 (permalink)  
Antiguo 27/05/2003, 08:03
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Bueno, entonces, los campos dinámicos, comienzan con la palabra nota? se me ocurre que puedes meter todos estos campos en una variable para pasarla a la SQL y en un vector para saber que campos tienes:

var_campos=""
Dim que_campos()
i=0

For each item in request.form
If left(item,4)="nota" Then
var_campos= var_campos & item & ","
If i =0 Then
Redim que_campos(i)
que_campos(i)= item
Else
Redim Preserve que_campos(i)
que_campos(i)=item
End If
i= i + 1
End if
Next

'Necesitamos recortar el string

var_campos= left(var_campos, len(var_campos)-1)

Ahora si:

strSQL= "SELECT nom_alu, cod_docent, cod_seccion, " & var_campos &" FROM tabla WHERE condicion

Ya tienes la SQL y los campos con los que debes trabajar en el arreglo, que solo debes recorrerlo para ver que trae, bueno es solo una idea, a lo mejor a alguien se le ocurre algo mejor


Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #6 (permalink)  
Antiguo 27/05/2003, 11:13
 
Fecha de Ingreso: marzo-2003
Ubicación: Av. Grau 1190
Mensajes: 122
Antigüedad: 21 años, 3 meses
Puntos: 3
Gracias, u_goldman.

Te entiendo perfectamente hasta ahi. cuando se trata de "nota?"

pero que pasa si fuera "P1" "T3" "L2" (practicas, trabajos, laboratorios, etc), campos diferentes.

Por otro lado como mostrar los datos en una tabla
que pueda visualizarse.

Última edición por elsabio; 27/05/2003 a las 11:18
  #7 (permalink)  
Antiguo 27/05/2003, 11:29
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Así es, ese es precisamente el inconveniente...lo que se me ocurre es que te hagas tus palabras "reservadas", vamos a decir que las identifiques por los 3 caracteres, estas, más un número pueden ser los nombres de los campos dinámicos, tener cuidado que en el form no mandes otros campos con estos palabras reservadas. En el if puedes agregarle N condiciones...

If left(item,4)="nota" OR left(item,4)="pract" Then

No se, algo así...

Y para visualizar los datos en una tabla pues algo así

<table>
<tr>
<td>Nombre</td><td>Otro campo</td>
</tr>
<%
While not rs.EOF
%>
<tr>
<td><%=rs("nombre")%></td><td><%=rs("otro_campo")%></td>
</tr>
<%
rs.MoveNext
Wend
%>

Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #8 (permalink)  
Antiguo 27/05/2003, 14:32
 
Fecha de Ingreso: marzo-2003
Ubicación: Av. Grau 1190
Mensajes: 122
Antigüedad: 21 años, 3 meses
Puntos: 3
Gracias u_goldman, voya probarlo y mañana te comento
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:48.