Yo utilizo el excel para graficar desde visualfox. Hago la gráfica como la necesito en Excel y luego desde VisualFox mando abrir ese documento de excel y con un macro en excel jalo los puros datos de las tablas de visualfox y atomaticamente se actualiza la gráfica.
En el botón de comando de la forma de visualfox pongo el siguiente código:
&&Pasar la aplicacion de excel a un avariable local
xlapp = tmpsheet.application
&&Poner visible el excel
xlapp.visible = .T.
&& Abrir archivo con macros
xlapp.workbooks.add('"'+Sys(5)+Sys(2003)+ "\" + "grafpietodos.xls"+'"')
&& Ejecutar macro de excel
xlapp.run('Obtener_Datos')
xlsheet = xlapp.activesheet
Y el codigo del macro de excell es algo asi como esto (es en visual basic)
Dim intcount As Integer, _
inicio As Integer, _
ResCount As Integer, _
AboNombre As String, _
Juicios As Integer
Public Sub Obtener_Datos()
'*****************************************************
'area1 As String, area2 As String, Proceso1 As String, Proceso2 As String)
'Conectar a MS-SQL
Dim dbs As DAO.Database
Dim rDataBase As Recordset
Dim fDataBase As Field
Dim wrkODBC As Workspace
Dim coneccion As Connection
Dim SQLQuery As String
Dim elColor As Long
Dim eltitulo As String
Dim Estatus As String
'Se crea workspace y se hace la conexion a la base de datos MS-SQL
Set wrkODBC = CreateWorkspace("ODBCWorkspace", "", "", dbUseODBC)
Workspaces.Append wrkODBC
Set coneccion = wrkODBC.OpenConnection("SisArchivo", dbDriverNoPrompt, , "ODBC;DATABASE=archivo;DSN=archivo")
coneccion.QueryTimeout = 1200
'*****Query para buscar la informacion x Abogado***************************************************
SQLQuery = "SELECT abogado, MAX(nombre), SUM(juicios) total_juicios FROM v_grafica_abogado GROUP BY abogado"
Set rDataBase = coneccion.OpenRecordset(SQLQuery)
' Ciclo para mandar datos a Juicios x Abogado
intcount = 2
Do Until rDataBase.EOF
With Worksheets("JuiciosxAbogado").Rows(intcount)
.Cells(1, 1).Value = RTrim(rDataBase.Fields(0).Value)
.Cells(1, 2).Value = RTrim(rDataBase.Fields(1).Value) + " (" + LTrim(Str(rDataBase.Fields(2).Value)) + ")"
.Cells(1, 3).Value = rDataBase.Fields(2).Value
End With
rDataBase.MoveNext
intcount = intcount + 1
Loop
With Charts("GrafxAbogado")
.HasTitle = True
.ChartTitle.Text = "JUICIOS POR ABOGADO"
.SetSourceData Source:=Worksheets("JuiciosxAbogado").Range("B2").Resize(intcount - 2, 2)
End With
'*************************************************************************************************
Este ejemplo es utilizando una conexión ODBC a la base de datos MS-SQL que también la utilizo desde VisualFox.
Espero que te sirva la información, si gustas que te envíe la forma de VisualFox y/o la hoja de excel con la gráfica escríbeme a
[email protected]