Hola expertos como están... Mi pregunta es la siguiente estoy trabajando en VFP9 per con base de datos postgres lo que quiero hacer es traer los resultados en un cursor y luego graficarlos en excel o si hay otra forma más fácil de ver la gráfica en tortas, barras, etc me podrían dar algunos ejemplos de como hacerlo... De antemano muchas gracias [email protected] se requiere también imprimir estas gráficas
1 Respuesta
Respuesta de tigrefox
1
1
tigrefox, Colaborador, Solidario y Amigo, Ingeniero de Sistemas,...
Estuve verificando preguntas sin responder y encontré esta, necesito saber si aúb te sirve uns respuesta. Avísame.
Hola y gracias Si necesito que me des respuesta a mi pregunta... [email protected]
Ok, hay tres formas posibles, La primera es llevar los datos a excel y una vez en allí, gráficas. La segunda es llevar los datos a excel y crear la gráfica de una vez para que aparezca en excel. La tercera es crear la gráfica directamente en visual foxpro. Prueba la primera y luego te envkio la segunda Pon la Función rep_excel en las librería y lo llamas así: select CAMPOS from ARCHIVOS where CONDICIONES into cursor RTA rep_excel("RTA","NOMBRE1"."NOMBRE2"."NOMBRE3") Mira el resultado y determina que es cada parámetro, el primero si es el nombre del cursor de la consulta ********************************************************************************************************* FUNCTION rep_excel(lcursor AS STRING, lnombre AS STRING, lDescripcion AS STRING, LDescripcion1 AS String) ********************************************************************************************************* *!* Parametros: *!* lcursor: Nombre del Cursor o Tabla que se va a llevar a excel *!* lnombre: El titulo de la pagina *!* ************************************ *!* Program:Rep_excel *!* Author: José G. Samper *!* Date: 10/09/03 04:08:04 PM *!* Copyright: NetBuzo's *!* Description: Esta función lleva a una hoja excel el contenido de un cursor *! * Colocando un Nombre pasado como parámetro y los nombres de los campos del cursor como encabezado *!* Revision Information:1.0 *!* Ejemplo de Uso: =rep_excel('mitabla','Listado de Artículos con sus Precios') *!* Enviar Bugs o sugerencias para mejoras a j_samper(sin)@cantv.net ************************************* LOCAL R, lcampo, lpag, lReg AS INTEGER &&&&variable para determinar la página a ingresar los datos por si hay más de 60 mil registros IF TYPE('lcursor')#'C' OR !USED(lcursor) =MESSAGEBOX("Parametros Invalidos",16,'De VFP a Excel') RETURN .F. ENDIF IF TYPE('lnombre')#'C' lnombre='' ENDIF lpag=1 *** Creación del Objeto Excel WAIT WINDOW 'Abriendo aplicación Excel.' NOWAIT Oexcel = CREATEOBJECT("Excel.Application") IF TYPE('Oexcel')#'O' =MESSAGEBOX("No se puede procesar el archivo porque no tiene la aplicación"+CHR(13)+; "Microsoft Excel instalada en su computador.",16,'De VFP a Excel') RETURN .F. ENDIF WAIT WINDOWS 'Procesando Tabla...'+LOWER(lcursor) nowait XLApp = Oexcel XLApp.workbooks.ADD() XLSheet = XLApp.ActiveSheet XLSheet.NAME = lnombre + "_" + ALLTR(STR(lpag)) SELECT(lcursor) lcuantos=AFIELDS(lcampos,lcursor) lReg = ReCcount() GO TOP IN (lcursor) R=6 SCAN WAIT WINDOWS STR(RECNO()*100/lReg,5,2) + '% Procesado de la Información' NOCLEAR NOWAIT IF R = 65500 FOR I = 1 TO lcuantos lcname=lcampos(I,1) XLSheet.Cells(5,I).VALUE=lcname XLSheet.Cells(5,I).FONT.NAME = "Arial" XLSheet.Cells(5,I).FONT.SIZE = 10 XLSheet.Cells(5,I).FONT.bold = .T. NEXT XLSheet.COLUMNS.AUTOFIT XLSheet.Cells(1,1).VALUE= UPPER(lDescripcion) XLSheet.Cells(1,1).FONT.bold = .T. XLSheet.Cells(2,1).VALUE = FtoL(S_Fecsis) XLSheet.Cells(2,1).FONT.bold = .T. XLSheet.Cells(3,1).VALUE= lDescripcion1 XLSheet.COLUMNS.AUTOFIT R=6 lpag=lpag+1 XLApp.Sheets(lpag).SELECT XLSheet = XLApp.ActiveSheet XLSheet.NAME=lnombre+"_"+ALLTR(STR(lpag)) ENDIF FOR I=1 TO lcuantos lcampo=ALLTRIM(lcursor)+'.'+lcampos(I,1) IF TYPE('&lcampo')#'G' IF TYPE('&lcampo')='C' XLSheet.Cells(R,I).VALUE=ALLTRIM(&lcampo) XLSheet.Cells(R,I).FONT.NAME = "Arial" XLSheet.Cells(R,I).FONT.SIZE = 10 ELSE IF TYPE('&lcampo')='T' XLSheet.Cells(R,I).VALUE=TTOC(&lcampo) ELSE IF TYPE('&lcampo')='D' XLSheet.Cells(R,I).VALUE=DTOC(&lcampo) else XLSheet.Cells(R,I).VALUE= &lcampo endif ENDIF XLSheet.Cells(R,I).FONT.NAME = "Arial" XLSheet.Cells(R,I).FONT.SIZE = 10 ENDIF ENDIF NEXT R=R+1 ENDSCAN FOR I = 1 TO lcuantos lcname=lcampos(I,1) XLSheet.Cells(5,I).VALUE=lcname XLSheet.Cells(5,I).FONT.NAME = "Arial" XLSheet.Cells(5,I).FONT.SIZE = 10 XLSheet.Cells(5,I).FONT.bold = .T. NEXT XLSheet.COLUMNS.AUTOFIT XLSheet.Cells(1,1).VALUE= UPPER(lDescripcion) XLSheet.Cells(1,1).FONT.bold = .T. *XLSheet.Cells(1,IIF((lcuantos-1)>0,lcuantos-1,lcuantos)).VALUE=ALLTRIM(DTOC(DATE())) XLSheet.Cells(2,1).VALUE=FtoL(S_Fecsis) XLSheet.Cells(2,1).FONT.bold = .T. XLSheet.Cells(3,1).VALUE = lDescripcion1 XLSheet.COLUMNS.AUTOFIT WAIT WINDOWS 'Listo....' NOWAIT Oexcel.VISIBLE=.T. RETURN .T. Endfunc
Gracias experto muy amable pero si tu no tienes problemas me gustaría graficar directamente la información filtrada de la Bd postgres en un cursor en vfp9 si no tiene problemas en una red o mejor dicho cuando varios usuarios quieran ver la gráfica al mismo tiempo... me imagino que no tiene nada que ver porque se esta graficando es el contenido de un cursor... si me equivoco me disculpa ... Gracias [email protected]
La información no se puede graficar en un cursor, pero ya entiendo, necesitas que quede disponible para que varios usuarios la miren. Puedes generarla desde el mismo visual oxpro, en el ejemplo Solution del Visualfoxpro instalado, PROJECT SOLUTION hay un ejemplo de como hacer esto. Miralo y cualquier inquietud me preguntas. Éxitos