Crear Reportes Con VFP
Este Ejemplo demuestra las características de como generar un nuevo tipo de reportes de VFP y los tipos de informes que puedes utilizar utilizan el shellexecute.
Este Ejemplo demuestra las características de como generar un nuevo tipo de reportes de VFP y los tipos de informes que puedes utilizar utilizan el shellexecute.
Este programa te brinda la oportunidad de poder pre-visualizar el reporte el cual tu deseas realizar dentro del mismo formulario en un archivo de Texto.
Podrás realizar reportes PDF sin ningún tipo de inconveniente, tan solamente basta con tener el instalado el ADOBE y problema resuelto, el programa generará el reporte.
En el inicio del programa en el evento Load realizaremos una serie de instrucciones el cual nos permitirá crear un archivo libre denominado "PRUEBA.DBF" e insertaremos unos productos para poder realizar el ejemplo como tal e indexaremos el archivo por el campo código.
Deberás colocar en la parte central de tu formulario un grid e ir a la parte de las propiedades para configurar sus valores como tal.
Propiedades del Grid
AllowHeaderSizing .f.
AllowRowSizing .f.
Backcolor 0,0,0
DeleteMark .f.
FontName Courier New
Forecolor 0,255,0
GridLines 0 None
Height 432
Higlight .t.
Higlightrow .f.
Left 48
PanelLink .f.
ReadOnly .f.
RecordMark .f.
RecorSource Vispre.i1
RecordSourceType 0 Table
Width 625
En el Init del formulario debemos colocar lo que será el cuerpo del programa :
clear
thisform.Caption ="Reportes en Visual Foxpro"
Create Table vispre Free (i1 c(20),i2 c(20), i3 c(20),i4 c(20),i5 c(20), i6 c(20), i7 c(20) )
Set Devi To File "temp.txt"
Select prueba
Set Index To prueba Order codigo
Go Top
x=0
x=x+1
@ x,1 Say "Reporte Inventario" Font "Arial",6
x=x+1
@ x,1 Say "Fecha: " +Dtoc(Date())
x=x+1
@ x,1 Say Replicate ("-",80)
x=x+1
@ x,2 Say "Codigo Descripcion del Producto Cantidad Precio Total"
x=x+1
@ x,1 Say Replicate ("-",80)
x=x+1
mcodigo=""
mcodigo=codigo
tot=0
Do While !Eof()
@ x,2 Say codigo+" "+descrip+" "+TRANSFORM(cant,"999")+" "+TRANSFORM(precio,"99999999.99")+" "+TRANSFORM(cant*precio,"99999999.99"
If x>1000
Set Devi To Screen
Select "vispre"
Append From "temp.txt" Sdf
Set Devi To File "temp.txt"
x=0
Endif
Select prueba
If !Eof()
SKIP
x=x+1
Endif
Enddo
@ x,1 Say Replicate ("-",80)
Set Devi To Screen
Select "vispre"
Append From "temp.txt" Sdf
Thisform.grid1.RecordSource="vispre"
Thisform.Refresh
Thisform.grid1.column1.text1.SetFocus
En el Botón Check1 en el evento click debes colocar lo siguiente para generar el reporte PDF.
Declare Integer ShellExecute In "shell32.dll" Integer HWnd,String lpOperation,String lpFile,String lpParameters,String lpDirectory,Long nShowCmd
Create Table vispre Free (Item c(100))
Append From "temp.txt" Sdf
Select vispre
Go Top
Set Devi To Screen
Do foxypreviewer.App
xdir_pdf="Inventario"
Report Form rinforme11.frx Object Type 10 Noreset To File ALLTRIM(xdir_pdf)+'.PDF'
cRutaPDF = ALLTRIM(xdir_pdf)+'.PDF'
ShellExecute(0, "open", cRutaPDF,"", Fullpath(""),0)
Thisform.Release
Para salir del programa debemos ir al Keypress y agregar lo siguiente:
IF nkeycode=27
thisform.release
ENDIF
En las propiedades del formulario en KeyPreview deberá estar en .t. para poder activar la tecla Esc.
0 comentarios:
Publicar un comentario