Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Running a VFP Report using OLE Automation
Message
Information générale
Forum:
Visual FoxPro
Catégorie:
COM/DCOM et OLE Automation
Divers
Thread ID:
00793735
Message ID:
00793940
Vues:
20
I created a VCX in VFP and made the class OLE Public. I then created a PRG to CREATEOBJECT the class and call the method to run the report. I ran the PRG from the Command Window. When I did that, VFP froze. An "open" task appeared the task bar. Clicking on "open" would never pull up anything, but when I closed it, VFP was freed up again. The report never ran. After doing some debugging, it looks like the "open" task occurs on the REPORT statement.

If a copy the code from the VCX into the PRG and make it a PROCEDURE (no class), it works fine. Am I allowed to run REPORT in an OLE EXE?

Thanks for your help!
Tim

>Did you try to run it from within VFP as a VFP class?
>
>>I thought I had the problem of running the VFP REPORT command inside an OLE EXE figured out. When I call the method from inside the EXE, I can see an open dialog popup on the task bar when it runs the REPORT command. The program hangs until I "end task" the open dialog.
>>
>>I am trying to send the ouput to the Acrobat PDFWriter. Even when I try to just send the report to a file with select the PDFWriter printer, it does the same thing. Below is the code that I use. I read the document http://www.west-wind.com/presentations/pdfwriter/pdfwriter.htm at West Wind and followed the code. If someone could help me, I would really be grateful!
>>
>>Tim
>>
>>* Program to call OLE EXE to create PDF
>>
>>x = CREATEOBJECT("InsbShared.VfpReport")
>>lcSf135 = x.ReportRun("C:\Development\Vfp\Public\Reports\Sf135.frx", "Acrobat PDFWriter")
>>x = .null.
>>
>>* Class definition for OLE EXE
>
>>DEFINE CLASS vfpreport AS custom OLEPUBLIC
>>	Name = "vfpreport"
>>	*-- To run a VFP report and send the output to a text file
>>	PROCEDURE reportrun
>>		* Purpose: To run a VFP report and send the output to a PDF file
>>		*
>>		* Parameters:
>>		*   tcReportFrx:  VFP report
>>		*   tcPdfPrinter: PDF printer name
>>		*
>>		* Return: PDF file
>>
>>		LPARAMETERS tcReportFrx, tcPdfPrinter
>>		LOCAL lcOldCentury, lcOldDefault, lcOldPrinter, lcReportPdf, lcReportPs
>>
>>		* Initial settings
>>
>>		lcOldCentury = SET("Century")                    && Save Century setting
>>		lcOldDefault = FULLPATH("")                      && Save default directory
>>		lcOldPrinter = SET("Printer", 3)                 && Save current printer
>>		SET CENTURY ON                                   && Display four-digit year
>>		SET DEFAULT TO (SYS(2023))                       && Go to temporary directory
>>		SET PRINTER TO NAME (tcPdfPrinter)               && Set PDF printer
>>		lcReportPdf = SUBSTR(SYS(2015), 3, 10)           && File name for report output
>>		lcReportPs = lcReportPdf + ".ps"                 && Text file for report output
>>		lcReportPdf = FULLPATH(lcReportPdf + ".pdf")     && PDF file for report output
>>
>>		* Run report
>>
>>		IF FILE(lcReportPs)                              && If text file exists...
>>		  DELETE FILE (lcReportPs)                       && Delete text file
>>		ENDIF
>>
>>		IF FILE(tcReportFrx)                             && If report does exist...
>>		  REPORT FORM (tcReportFrx) TO FILE (lcReportPs) NOCONSOLE && Run report and send output to text file
>>		  IF FILE(lcReportPs)                            && If text file exists...
>>		    DELETE FILE (lcReportPs)                     && Delete text file
>>		  ENDIF
>>		ENDIF
>>
>>		* Restore settings
>>
>>		SET CENTURY OFF                                  && Restore Century setting
>>		SET DEFAULT TO (lcOldDefault)                    && Restore default directory
>>		SET PRINTER TO NAME (lcOldPrinter)               && Restore current printer
>>
>>		RETURN lcReportPdf
>>	ENDPROC
>>ENDDEFINE
>
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform