Grafico en boletin

06/04/2010 - 15:22 por Isabela | Informe spam
Hola

Uso VFP9 necesito generar un informe del rendimiento academico de
todos los alumnos, inluyendo una grafica pal final, son 600 alumnos ,
intente con msgrap y luego pegando cada una de las 600 graficas en un
campo generaal pero se demora mucho y si hacen cambios debo volver a
generar las graficas, ya tengo un cursor con los porcentajes por cada
asignatura como podria graficarlo en el report de maneraa rapida?

Preguntas similare

Leer las respuestas

#11 Alexander Guzmán
12/04/2010 - 23:48 | Informe spam
Casi está todo listo.

Lo que falta es que en el informe insertes un control OLE Imagen (los que
normalmente utilizas para mostrar una imagen) y en su propiedad "Control
Source Type" selecciones "Expression or Variable name" y en la propiedad
"Control Source" coloques el nombre de la variable objeto que contiene el
Chart (En tu caso loChart) llamando al método DrawReport (Ejemplo:
loChart.DrawReport() ) . A propósito de la variable objeto, definiste
esa variable como LOCAL, debe ser PRIVATE o PUBLIC para que tenga alcance
hasta el reporte.

Con esto debe quedarte OK.

Bendiciones!






"Isabela" escribió en el mensaje
news:
Hola

Gracias. La verdad he intentado pero no he podido , es decir genero
una grafica por toda la informacion no una grafica por alumno y la
coloco en un reporte la misma grafica para todos, pero como hago para
que la coloque en el resumen de boletin de acuerdo al alurmno?... la
verdad necesito esto para el Lunes y estoy algo estresada, otra cosa
no entiendo porque tienen que ser tres campos en el cursor para una
sola grafica? Aunque la clase es fantastica no he podido entender
como usarla En fin lo que hice fue esto:

SET CLASSLIB TO LOCFILE("FoxCharts.vcx")
SET TALK OFF
SET CONSOLE OFF

LOCAL loChart AS FoxCharts
loChart = CREATEOBJECT("FoxCharts")

WITH loChart AS FoxCharts OF '\clases\FoxCharts.vcx'

* Set some fixed properties for the chart object.

.WIDTH = 600
.HEIGHT = 450

.BACKCOLOR = RGB(255, 255, 255)
.SubTitle.CAPTION = ''
.ShowValuesonShapes = .T.
.AlphaChannel = 220
.BrushType = 2 && gradient brush
.ColorType = 2 && Random colors
.Depth = 30

.Legend1 = "Legend #1"

.ChartsCount = 2
.ShowSideLegend = .T.

* Execute the SQL for the chart.

SELECT asignatura , ;
num_l1 porcentaje, ;
num_l2 ;
FROM calificaciones ;
INTO CURSOR ChartData


* Specify the data source for the chart.

.SourceAlias = 'ChartData'
.FieldAxis2 = 'asignatura'

.FIELDS(1).FieldValue = "porcentaje"
.FIELDS(1).Legend = "porcentaje"

.FIELDS(2).FieldValue = "num_l2 "
.FIELDS(2).Legend = "num_l2 "

.FieldLegend = .FieldAxis2

* Specify the chart type and chart and axis captions.
.TITLE.CAPTION = 'Rendimiento'
.XAxis.CAPTION = 'Asignaturas'
.YAxis.CAPTION = 'Porcentaje'
.AxisLegend2.ROTATION = -45
.AxisLegend2.ALIGNMENT = 1 && Right
.ScaleLegend.FORMAT = '999.99'
.ShapeLegend.FORMAT = '999.99'

ENDWITH

n= 7
loChart.ChartType = N
loChart.TITLE.CAPTION = "Chart Type: #" + TRANSFORM(N)

lcfile = FORCEEXT(SYS(2015),"PNG")

* Draw the chart.
loChart.DrawChart()
loChart.oBmp.SAVE(lcfile,
_SCREEN.SYSTEM.Drawing.Imaging.ImageFormat.Png)

SET REPORTBEHAVIOR 90

PRIVATE oFoxChart && needed by report
oFoxChart = loChart.ChartCanvas

REPORT FORM boletin PREVIEW NOWAIT
Respuesta Responder a este mensaje
#12 Alexander Guzmán
13/04/2010 - 15:54 | Informe spam
Perdona, creo que anteriormente entendí que no lograbas mostrar el gráfico
en el informe.

Si hasta ahora has creado una gráfica con los datos de todos los alumnos, y
lo que quieres es una para cada uno, solo NO envíes al FoxChart un cursor
con los datos, sino un cursor con los datos de un solo alumno cada vez.

Por ejemplo, supongamos que el campo donde guardas el código de los
estudiantes se llame CODALUMNO:


*********************************************************************************************
Select Distinct CodAlumno From calificaciones ;
INTO CURSOR curAlumnos

Select curAlumnos
SCAN
m.Codigo = codAlumno


SELECT asignatura , ;
num_l1 porcentaje, ;
num_l2 ;
FROM calificaciones ;
WHERE CODALUMNO = m.Codigo ;
INTO CURSOR ChartData

///ACÁ CONFIGURARÍAS EL FOXCHART A TU GUSTO
.
.
.
.
.

///Y MANDAS A REPORTAR LOS DATOS DE LOS ALUMNOS UNO POR UNO
REPORT FORM boletin PREVIEW NOWAIT

//TE VAN A SALIR TANTOS REPORTES COMO ALUMNOS, Y EN CADA UNO DE ELLOS EL
GRÁFICO CON LAS CALIFICACIONES DE DICHO ESTUDIANTE
ENDSCAN
*********************************************************************************************






"Alexander Guzmán" escribió en el mensaje
news:
Casi está todo listo.

Lo que falta es que en el informe insertes un control OLE Imagen (los que
normalmente utilizas para mostrar una imagen) y en su propiedad "Control
Source Type" selecciones "Expression or Variable name" y en la propiedad
"Control Source" coloques el nombre de la variable objeto que contiene el
Chart (En tu caso loChart) llamando al método DrawReport (Ejemplo:
loChart.DrawReport() ) . A propósito de la variable objeto, definiste
esa variable como LOCAL, debe ser PRIVATE o PUBLIC para que tenga alcance
hasta el reporte.

Con esto debe quedarte OK.

Bendiciones!






"Isabela" escribió en el mensaje
news:
Hola

Gracias. La verdad he intentado pero no he podido , es decir genero
una grafica por toda la informacion no una grafica por alumno y la
coloco en un reporte la misma grafica para todos, pero como hago para
que la coloque en el resumen de boletin de acuerdo al alurmno?... la
verdad necesito esto para el Lunes y estoy algo estresada, otra cosa
no entiendo porque tienen que ser tres campos en el cursor para una
sola grafica? Aunque la clase es fantastica no he podido entender
como usarla En fin lo que hice fue esto:

SET CLASSLIB TO LOCFILE("FoxCharts.vcx")
SET TALK OFF
SET CONSOLE OFF

LOCAL loChart AS FoxCharts
loChart = CREATEOBJECT("FoxCharts")

WITH loChart AS FoxCharts OF '\clases\FoxCharts.vcx'

* Set some fixed properties for the chart object.

.WIDTH = 600
.HEIGHT = 450

.BACKCOLOR = RGB(255, 255, 255)
.SubTitle.CAPTION = ''
.ShowValuesonShapes = .T.
.AlphaChannel = 220
.BrushType = 2 && gradient brush
.ColorType = 2 && Random colors
.Depth = 30

.Legend1 = "Legend #1"

.ChartsCount = 2
.ShowSideLegend = .T.

* Execute the SQL for the chart.

SELECT asignatura , ;
num_l1 porcentaje, ;
num_l2 ;
FROM calificaciones ;
INTO CURSOR ChartData


* Specify the data source for the chart.

.SourceAlias = 'ChartData'
.FieldAxis2 = 'asignatura'

.FIELDS(1).FieldValue = "porcentaje"
.FIELDS(1).Legend = "porcentaje"

.FIELDS(2).FieldValue = "num_l2 "
.FIELDS(2).Legend = "num_l2 "

.FieldLegend = .FieldAxis2

* Specify the chart type and chart and axis captions.
.TITLE.CAPTION = 'Rendimiento'
.XAxis.CAPTION = 'Asignaturas'
.YAxis.CAPTION = 'Porcentaje'
.AxisLegend2.ROTATION = -45
.AxisLegend2.ALIGNMENT = 1 && Right
.ScaleLegend.FORMAT = '999.99'
.ShapeLegend.FORMAT = '999.99'

ENDWITH

n= 7
loChart.ChartType = N
loChart.TITLE.CAPTION = "Chart Type: #" + TRANSFORM(N)

lcfile = FORCEEXT(SYS(2015),"PNG")

* Draw the chart.
loChart.DrawChart()
loChart.oBmp.SAVE(lcfile,
_SCREEN.SYSTEM.Drawing.Imaging.ImageFormat.Png)

SET REPORTBEHAVIOR 90

PRIVATE oFoxChart && needed by report
oFoxChart = loChart.ChartCanvas

REPORT FORM boletin PREVIEW NOWAIT




Respuesta Responder a este mensaje
#13 Isabela
14/04/2010 - 04:06 | Informe spam
Si asi me funciono! Gracias.

Aunque genera un error de ogfx es un miembro desconocido cuando lo
ejecuto en el cliente.


On 12 abr, 16:48, "Alexander Guzmán"
wrote:
Casi está todo listo.

Lo que falta es que en el informe insertes un control OLE Imagen (los que
normalmente utilizas para mostrar una imagen) y en su propiedad "Control
Source Type" selecciones "Expression or Variable name" y en la propiedad
"Control Source" coloques el nombre de la variable objeto que contiene el
Chart (En tu caso loChart) llamando al método DrawReport (Ejemplo:
loChart.DrawReport()   ) .   A propósito de la variable objeto, definiste
esa variable como LOCAL, debe ser PRIVATE o PUBLIC para que tenga alcance
hasta el reporte.

Con esto debe quedarte OK.

Bendiciones!

"Isabela" escribió en el mensajenews:



> Hola

> Gracias. La verdad he intentado pero no he podido , es decir genero
> una grafica por toda la informacion no una  grafica por alumno y la
> coloco en un reporte la misma grafica para todos, pero como hago para
> que la coloque en el resumen de boletin de acuerdo al alurmno?... la
> verdad necesito esto para el Lunes y estoy algo estresada, otra cosa
> no entiendo porque tienen que ser tres campos en el cursor para una
> sola grafica?  Aunque la clase es fantastica no he podido entender
> como usarla En fin lo que hice fue esto:

> SET CLASSLIB TO LOCFILE("FoxCharts.vcx")
> SET TALK OFF
> SET CONSOLE OFF

> LOCAL loChart AS FoxCharts
> loChart = CREATEOBJECT("FoxCharts")

> WITH loChart AS FoxCharts OF '\clases\FoxCharts.vcx'

> * Set some fixed properties for the chart object.

> .WIDTH = 600
> .HEIGHT = 450

> .BACKCOLOR          = RGB(255, 255, 255)
> .SubTitle.CAPTION   = ''
> .ShowValuesonShapes = .T.
> .AlphaChannel       = 220
> .BrushType          = 2 && gradient brush
> .ColorType          = 2 && Random colors
> .Depth              = 30

> .Legend1 = "Legend #1"

> .ChartsCount = 2
> .ShowSideLegend = .T.

> * Execute the SQL for the chart.

> SELECT asignatura , ;
> num_l1 porcentaje, ;
> num_l2 ;
> FROM calificaciones ;
> INTO CURSOR ChartData

> * Specify the data source for the chart.

> .SourceAlias = 'ChartData'
> .FieldAxis2  = 'asignatura'

> .FIELDS(1).FieldValue = "porcentaje"
> .FIELDS(1).Legend = "porcentaje"

> .FIELDS(2).FieldValue = "num_l2 "
> .FIELDS(2).Legend = "num_l2 "

> .FieldLegend = .FieldAxis2

> * Specify the chart type and chart and axis captions.
> .TITLE.CAPTION         = 'Rendimiento'
> .XAxis.CAPTION         = 'Asignaturas'
> .YAxis.CAPTION         = 'Porcentaje'
> .AxisLegend2.ROTATION = -45
> .AxisLegend2.ALIGNMENT = 1 && Right
> .ScaleLegend.FORMAT    = '999.99'
> .ShapeLegend.FORMAT    = '999.99'

> ENDWITH

> n= 7
> loChart.ChartType = N
> loChart.TITLE.CAPTION = "Chart Type: #" + TRANSFORM(N)

> lcfile = FORCEEXT(SYS(2015),"PNG")

> * Draw the chart.
> loChart.DrawChart()
> loChart.oBmp.SAVE(lcfile,
> _SCREEN.SYSTEM.Drawing.Imaging.ImageFormat.Png)

> SET REPORTBEHAVIOR 90

> PRIVATE oFoxChart  && needed by report
> oFoxChart = loChart.ChartCanvas

> REPORT FORM boletin PREVIEW NOWAIT- Ocultar texto de la cita -

- Mostrar texto de la cita -
Respuesta Responder a este mensaje
#14 Isabela
14/04/2010 - 04:07 | Informe spam
Gracias..esta tra opcion tambien funciona.

On 13 abr, 08:54, "Alexander Guzmán"
wrote:
Perdona, creo que anteriormente entendí que no lograbas mostrar el gráfico
en el informe.

Si hasta ahora has creado una gráfica con los datos de todos los alumnos, y
lo que quieres es una para cada uno, solo NO envíes al FoxChart un cursor
con los datos, sino un cursor con los datos de un solo alumno cada vez.

Por ejemplo, supongamos que el campo donde guardas el código de los
estudiantes se llame CODALUMNO:

***************************************************************************­******************
Select Distinct CodAlumno From calificaciones ;
     INTO CURSOR curAlumnos

Select curAlumnos
SCAN
        m.Codigo = codAlumno

    SELECT asignatura , ;
        num_l1 porcentaje, ;
         num_l2 ;
        FROM calificaciones ;
    WHERE CODALUMNO = m.Codigo ;
     INTO CURSOR ChartData

    ///ACÁ CONFIGURARÍAS EL FOXCHART A TU GUSTO
    .
    .
    .
    .
    .

    ///Y MANDAS A REPORTAR LOS DATOS DE LOS ALUMNOS UNO POR UNO
    REPORT FORM boletin PREVIEW NOWAIT

    //TE VAN A SALIR TANTOS REPORTES COMO ALUMNOS, Y EN CADA UNO DE ELLOS EL
GRÁFICO CON LAS CALIFICACIONES DE DICHO ESTUDIANTE
ENDSCAN
***************************************************************************­******************

"Alexander Guzmán" escribió en el mensajenews:



> Casi está todo listo.

> Lo que falta es que en el informe insertes un control OLE Imagen (los que
> normalmente utilizas para mostrar una imagen) y en su propiedad "Control
> Source Type" selecciones "Expression or Variable name" y en la propiedad
> "Control Source" coloques el nombre de la variable objeto que contiene el
> Chart (En tu caso loChart) llamando al método DrawReport (Ejemplo:
> loChart.DrawReport()   ) .   A propósito de la variable objeto, definiste
> esa variable como LOCAL, debe ser PRIVATE o PUBLIC para que tenga alcance
> hasta el reporte.

> Con esto debe quedarte OK.

> Bendiciones!

> "Isabela" escribió en el mensaje
>news:
>> Hola

>> Gracias. La verdad he intentado pero no he podido , es decir genero
>> una grafica por toda la informacion no una  grafica por alumno y la
>> coloco en un reporte la misma grafica para todos, pero como hago para
>> que la coloque en el resumen de boletin de acuerdo al alurmno?... la
>> verdad necesito esto para el Lunes y estoy algo estresada, otra cosa
>> no entiendo porque tienen que ser tres campos en el cursor para una
>> sola grafica?  Aunque la clase es fantastica no he podido entender
>> como usarla En fin lo que hice fue esto:

>> SET CLASSLIB TO LOCFILE("FoxCharts.vcx")
>> SET TALK OFF
>> SET CONSOLE OFF

>> LOCAL loChart AS FoxCharts
>> loChart = CREATEOBJECT("FoxCharts")

>> WITH loChart AS FoxCharts OF '\clases\FoxCharts.vcx'

>> * Set some fixed properties for the chart object.

>> .WIDTH = 600
>> .HEIGHT = 450

>> .BACKCOLOR          = RGB(255, 255, 255)
>> .SubTitle.CAPTION   = ''
>> .ShowValuesonShapes = .T.
>> .AlphaChannel       = 220
>> .BrushType          = 2 && gradient brush
>> .ColorType          = 2 && Random colors
>> .Depth              = 30

>> .Legend1 = "Legend #1"

>> .ChartsCount = 2
>> .ShowSideLegend = .T.

>> * Execute the SQL for the chart.

>> SELECT asignatura , ;
>> num_l1 porcentaje, ;
>> num_l2 ;
>> FROM calificaciones ;
>> INTO CURSOR ChartData

>> * Specify the data source for the chart.

>> .SourceAlias = 'ChartData'
>> .FieldAxis2  = 'asignatura'

>> .FIELDS(1).FieldValue = "porcentaje"
>> .FIELDS(1).Legend = "porcentaje"

>> .FIELDS(2).FieldValue = "num_l2 "
>> .FIELDS(2).Legend = "num_l2 "

>> .FieldLegend = .FieldAxis2

>> * Specify the chart type and chart and axis captions.
>> .TITLE.CAPTION         = 'Rendimiento'
>> .XAxis.CAPTION         = 'Asignaturas'
>> .YAxis.CAPTION         = 'Porcentaje'
>> .AxisLegend2.ROTATION = -45
>> .AxisLegend2.ALIGNMENT = 1 && Right
>> .ScaleLegend.FORMAT    = '999.99'
>> .ShapeLegend.FORMAT    = '999.99'

>> ENDWITH

>> n= 7
>> loChart.ChartType = N
>> loChart.TITLE.CAPTION = "Chart Type: #" + TRANSFORM(N)

>> lcfile = FORCEEXT(SYS(2015),"PNG")

>> * Draw the chart.
>> loChart.DrawChart()
>> loChart.oBmp.SAVE(lcfile,
>> _SCREEN.SYSTEM.Drawing.Imaging.ImageFormat.Png)

>> SET REPORTBEHAVIOR 90

>> PRIVATE oFoxChart  && needed by report
>> oFoxChart = loChart.ChartCanvas

>> REPORT FORM boletin PREVIEW NOWAIT- Ocultar texto de la cita -

- Mostrar texto de la cita -
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida