Graficar resultados de una tabla

Hola necesito su ayuda para graficar resultados de una tabla en una form

1 Respuesta

Respuesta
1
He construido un ejemplo en el que muestra cómo graficar los resultados de una tabla, le recomiendo que lo ejecute desde el depurador de Visual FoxPro paso a paso para que vea y pueda entender los pasos a seguir para graficar los resultados. ¿Me podría regalar su correo electrónico para enviárselo?
Claro mi correo es [email protected]
Muchas gracias por su atención
He enviado el ejemplo del que le dije a su correo.
Deja checarlo por que se me hace muy complicado
¿Qué es lo que no entiendes del ejemplo?
Como corro el depurador de Visual FoxPro
Que hace el proceso Destroy
Que es el Parameters lcIsRunMain
El depurador de Visual FoxPro lo corres de la siguiente manera: En el menú herramientas selecciona Depurador luego en el depurador haces click en botón ejecutar, temuestra el cuadro de diálogo de abrir y en el directorio del ejemplo seleccionas el archivo main. Prg y luego en la barra de herramientas del depurador buscas el botón paso a paso y haces clic en él, por cada vez que hagas clic en este botón el ejemplo del gráfico se ejecuta lentamente línea por línea.
El parámetro lcIsRunmain lo que hace es verificar si has ejecutado el programa principal del ejemplo del gráfico, si el parámetro es verdadero se ejecutará el formulario frmgraph de lo contrario el programa se cancela.
El procedimiento destroy lo que hace liberar de memoria cualquier formulario o control cargado en memoria y si mal no estoy en el procedimiento destroy del formulario coloqué código que cierra el cursor al que está enlazado el gráfico.
Cualquier inquietud no dudes en escribirme.
Ok la verdad si tengo muchos problemas espero me puedas ayudar a un ejemplo más sencillo por ejemplo tengo mi base de datos entonces mi idea es:
Use tabla
a=reccount()
thisform.text1.value=(SUM(precio))/a
use tabla2
a=reccount()
thisform.text2.value=(SUM(precio))/a
use tabla2
a=reccount()
thisform.text3.value=(SUM(precio))/a
y grafique thisform.text1.value,thisform.text2.value y thisform.text3.value
Espero me puedas ayudar y de antemano muchas gracias por tu tiempo y apoyo
De acuerdo, te enviaré unos pasos a seguir para que soluciones tu problema con los datos que escribiste.
Te responderé pronto...
De verdad muchísimas gracias por tu gran y excelente apoyo
Para comenzar crea en tu base de datos una tabla llamada gráficos con un campo de tipo general que se llame Cod_grf.
En el formulario donde deseas hacer el gráfico inserta un control de tipo OleBoundcontrol.
Ok, listo
Ahora abre Microsoft Excel e inserta un gráfico en una hoja de cálculo, luego selecciona el gráfico haz clic derecho sobre el mismo, dale copiar, luego ve a la tabla gráficos que te dije que crearas, abre el campo general cod_grf haz clic derecho sobre el área y dale pegar esta acción pegará el gráfico creeado en Excel (En visual FoxPro es posible insertar un gráfico pero es un poco más dispendioso de explicar).
Luego agrega la tabla gráficos al entorno de datos del formulario al que agregaste el objeto OleBoundcontrol y establece la propiedad Controlsource del objeto Oleboundcontrol con el valor "Gráficos.cod_grf".
¿Ok y para ir cambiando los valores de esa gráfica?
Eso depende de las variables que lleve el gráfico, cosa que discutiremos luego, ahora en la ficha otros de tu proyecto selecciona archivos de texto y crea un archivo llamado Gráficos. H y le pegas el siguiente código:
#Define CRLF CHR(13)+CHR(10)
#Define TAB CHR(9)
#Define AREA 1
#Define BARS 2
#Define COLUMNS 3
#Define LINES 4
#Define PIE 5
#Define RADAR -4151
#Define POINTXY -4169
#Define AREA3D -4098
#Define BAR3D -4099
#Define COLUMN3D -4100
#Define LINES3D -4101
#Define PIE3D -4102
#Define RUSK -4120
Nota: La cláusula Define debe ir en mayúsculas la puse en minúsculas porque este editor me reportó error.
Ahora abre el formulario donde insertaste el objeto Oleboundcontrol, selecciona este mismo objeto y establece su propiedad Name con valor Graph1, luego ubicate en el menú formulario y haz clic en incluir archivo, te aparece un cuadro de diálogo que dice incluir archivo busca el archivo Gráficos. H selecciónalo y haz clic en aceptar.
Luego agrega un control Combobox, establece la propiedad RowSourceType con valor de 1 y la propiedad Style a 2 (Lista desplegable).
En el evento InteractiveChange del control combobox pega el siguiente código:
With Thisform
Do Case
Case Alltrim(This.Value) == "Área"
.Graph1.Autoformat(AREA, 1)
If .Graph1.HasLegend
.Graph1.HasLegend = .F.
Endif
Case Alltrim(This.Value) == "Barras"
.Graph1.Autoformat(BARS, 1)
If .Graph1.HasLegend
.Graph1.HasLegend = .F.
Endif
Case Alltrim(This.Value) == "Columnas"
.Graph1.Autoformat(COLUMNS, 1)
If .Graph1.HasLegend
.Graph1.HasLegend = .F.
Endif
Case Alltrim(This.Value) == "Lineas"
.Graph1.Autoformat(LINES, 4)
If .Graph1.HasLegend
.Graph1.HasLegend = .F.
Endif
Case Alltrim(This.Value) == "Pastel"
.Graph1.Autoformat(PIE, 6)
If !.Graph1.HasLegend
.Graph1.HasLegend = .T.
Endif
Case Alltrim(This.Value) == "Puntos XY"
.Graph1.Autoformat(POINTXY, 2)
If .Graph1.HasLegend
.Graph1.HasLegend = .F.
Endif
Case Alltrim(This.Value) == "Radar"
.Graph1.Autoformat(RADAR, 4)
If .Graph1.Hastitle = .T.
.Graph1.Hastitle = .F.
Endif
Case Alltrim(This.Value) == "Área 3D"
.Graph1.Autoformat(AREA3D, 1)
If .Graph1.HasLegend
.Graph1.HasLegend = .F.
Endif
Case Alltrim(This.Value) == "Barras 3D"
.Graph1.Autoformat(BAR3D, 1)
If .Graph1.HasLegend
.Graph1.HasLegend = .F.
Endif
Case Alltrim(This.Value) == "Columnas 3D"
.Graph1.Autoformat(COLUMN3D, 1)
If .Graph1.HasLegend
.Graph1.HasLegend = .F.
Endif
Case Alltrim(This.Value) == "Pastel 3D"
.Graph1.Autoformat(PIE3D, 6)
If .Graph1.HasLegend = .F.
.Graph1.HasLegend = .T.
Endif
Case Alltrim(This.Value) == "Líneas 3D"
.Graph1.Autoformat(LINES3D, 2)
.Graph1.HasAxis(3) = .F.
If .Graph1.HasLegend
.Graph1.HasLegend = .F.
Endif
Case Alltrim(This.Value) == "Rosca"
.Graph1.Autoformat(RUSK, 6)
If !.Graph1.HasLegend
.Graph1.HasLegend = .T.
Endif
Endcase
EndWith
Listo
Establece la propiedad RowSourceType del control Combobox a 1 y escribe los siguientes valores en la propiedad Rowsource: Área, Barras, Columnas, Lineas, Pastel, Puntos XY, Radar, Área 3D, Barras 3D, Columnas 3D, Pastel 3D, Líneas 3D, Rosca
Luego de hacer esto, por favor envíame los valores que deseas graficar y qué representan cada valor ejemplo vamos a graficar las ventas de los meses de enero, febrero y marzo, entonces me describirías de la siguiente manera: Enero: 300000, febrero: 50000, marzo: 40000.
Todo lo anterior es para armar el algoritmo para graficar los valores.
Bueno es que realmente los valores se sacarían de una tabla o una variable
Entonces decídete si es de una tabla o variable.
Ok de una tabla
Bueno los datos los tengo en una tabla con varios cuadros de texto por ejemplo text1. value jalo la informacion de la tabla, ya la tengo en los cuadros de texto los datos y quiero que esos datos se grafiquen
De acuerdo, ya entiendo, posiblemente esos datos corresponden a cada registro de la tabla, si es así, entonces dime cuantos cuadros de textos son para poder determinar cuantas columnas o variables hay que graficar, y qué representa cada valor, o en su defecto envíame una imagen en jpg de ese formulario para ver los cuadros de texto y así poder determinar el algoritmo para crear el gráfico.
Mira lo que se quiere graficar es el rendimiento de los operadores, ahorita son 9 pero después pueden entrar más.
Entonces lo que entiendo es primero hay que hacer una consulta para el gráfico.
¿Puedes enviarme una copia de ese formulario y la tablas de los datos de los que deseas graficar?
Mira aun no lo tengo estoy primero aprendiendo para ya después crearlo
Entonces mientras tanto agrega un método al formulario que se llame graficar, te enviaré un código de ejemplo para que lo apliques al problema.
Ok
Disculpa por no haber contestado, no había podido ingresar a la página en esto días devino a que presentaba errores, se me había olvidado decirte algo, en el evento init del formulario escribe las siguientes líneas de comando:
Local lcDatos
lcDatos = "Enero" + TAB + "Febrero" + TAB + "Marzo" + CRLF;
+ TAB + "25000" + TAB + "50000" + TAB + "75000" 
Set Multilocks On
=CursorSetProp("Buffering", 5, "Graficos")
Thisform. Graficar(lcDatos)
Nota: lcDatos es la estructura de datos que se enviará al evento graficar para que lo inserte en la hoja de datos del gráfico, si estás aprendiendo entonces en el formulario crea tres cuadros de texto para armar una estructura de datos personalizada al evento graficar, supongamos que el cuadro Text1 representa las ventas de enero, Text2 las ventas de Febrero y Text3 las ventas de marzo.
Luego crea un botón que diga graficar.
Ok, Listo
En el evento click del botón graficar escribe el siguiente código:
Local lcDatos
lcDatos = "Enero" + TAB + "Febrero" + TAB + "Marzo" + CRLF;
+ TAB + Alltrim(Str(Thisform.Text1.Value)) + TAB + Alltrim(Str(Thisform.Text2.Value)) + TAB + Alltrim(Str(Thisform.Text3.Value))
Thisform.Graficar(lcDatos)
En el evento graficar del formulario escribe el siguiente código:
Parameters lcDatosGraficar
If Alias() <> "Graficos"
Select Graficos
EndIf
If GetNextModified(0,"Graficos") <> 0
=TableUpdate(.T.)
Endif
Append General Cod_grf Data lcDatosGraficar
Thisform. Refresh()
Return .T.
Y listo, el ejemplo está construido, pruébalo y me cuentas. Ahora nota que los meses de enero, febrero y marzo de la estructura de datos lcDatos no son más que el encabezado de las variables que representan los números, que para el ejemplo solamente he creado tres y luego siguen las tres variables que representan los valores numéricos en su repectivo orden analiza el ejemplo.
Cualquier inquietud que tengas con gusto te la resuelvo.
A la hora de seleccionar algún dato del combo me aparece un error "Código de error OLE 0x80020006: Código de estado de COM desconocido"
Ingreso datos en los text box doy click en el botón graficar y no cambia la imagen
Que me falta o estoy haciendo mal.
Te envío los archivos por correo.
Te he enviado el programa corregido a tu correo.
De verdad estoy mucho muy agradecido debido a que eres una persona muy buena que ayuda a los demás, sinceramente te deseo que te vaya excelente en tu vida y en tu trabajo eres una persona excepcional muchas gracias por tu apoyo y que Dios te bendiga me sirvió excelente
Gracias...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas