FoxPro/Visual FoxPro - grid dinamico

 
Vista:

grid dinamico

Publicado por Santisteban (6 intervenciones) el 06/04/2017 01:19:14
Buena tarde

Estoy trabajando con datos de un grid dinamico y no logro pasar los datos a un reporte.

El proyecto es para consultar las notas de la materia; en este caso tenemos 2 materias de un grado, la primera vez que realizo la consulta en un cursor, este muestra lo siguiente:

Código Nombre MT0103 ML0102

Sin embargo el encabezado "MT0103 y ML0102" cambian para otras materias, ejemplo :

Código Nombre LT0201 JR0102

El encabezado código y nombre no cambian pero el encabezado de las materias siempre cambiarán, por lo tanto no es posible escribir en el reporte "MT0103" porque para la segunda consulta el encabezado cambio a; "LT0203"

Mi duda: Como puedo pasar estos datos aun reporte o a otro cursor, considerando que el encabezado siempre esta en constante cambio, ademas son 40 materias y no es correcto hacer 40 reportes porque en cualquier momento eliminan la materia o crean una nueva y vuelve a cambiar el encabezado..

Agradezco un ejemplo de como podria resolverlo... gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

grid dinamico

Publicado por Fidel José (657 intervenciones) el 06/04/2017 13:53:58
Para poder responder algo coherente sería necesario saber a qué cosa le llamas "encabezado" y qué implicancia tienen esos cambios a que te refieres. No podemos saber si esos MT0103, LT0203 son Captions o nombres de campo de un cursor.

Tampoco dices cómo obtienes los datos. Si es por SELECT SQL tienes al opción "AS" para cambiar el nombre del campo, de modo que el cursor te quede siempre con los campos con igual nombre:
1
SELECT nombre as denomina,cuit as dafiscal,idclien as id FROM clientes WHERE .t. INTO CURSOR pepa READWRITE

Si son captions, puedes crear un objeto con los captions y asociar eso en el reporte
Por ejemplo, puedes tener un procedure como el que sigue. En el reporte, las expresiones serán poCaption.Col1, poCaption.Col2, etc. Nota que es necesario que el objeto poCaption sea PRIVATE para que su alcance incluya el reporte.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
PROCEDURE Create_Report
LPARAMETERS tcReportName, tcCaption_list
*------------------------------------------------------------------------------------
* tcCaption_List: 	Lista de captions. Ej: "Fecha,Compañía,Documento,Viajes,Importe"
* tcReportName:		Nombre del archivo frx
PRIVATE poCaption
LOCAL lnLines, i
poCaption = NEWOBJECT("Empty")
lnLines = ALINES(laLines,m.tcCaption_List,1,CHR(44))
FOR i = 1 TO m.lnLines
	ADDPROPERTY(poCaption,"Col"+TRANSFORM(i),laLines[i])
NEXT
 
REPORT FORM (m.tcReportName) NOCONSOLE PREVIEW
 
poCaption = null
 
ENDPROC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

grid dinamico

Publicado por Santisteban (6 intervenciones) el 06/04/2017 23:48:39
SELECT carnet, idmateria, nota01 ;
FROM Tblnotas ;
inner join TBLmateri on TBLmateri.idmateria = Tblnotas.idmateria ;
where carnet in (select Carnet from TBLalumnos where codgrado = var_codgrado) ;
order byTblmateri.orden ;
into cursor ademico

Gracias por el apoyo, en lugar de encabezado son nombres de campos de un cursor que puse aqui arriba de ejemplo.

Con las sentencias SQL estamos bien, todo funciona muy bien.. excepto porque el usuario cambia de carrera, entonces se generan nuevas materias por lo tanto tambien cambian los nombres de los campos del cursor.. en otras palabras el nombre de los campos del cursor no son los mismos, siempre cambian... busco la manera de referirme a ellos en el reporte pero no lo puedo hacer por nombre..

Desde ya muy agradecido..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar