Re: PHP and Crystal Reports

From: Date: Thu, 30 Apr 2009 08:03:16 +0000
Subject: Re: PHP and Crystal Reports
References: 1  Groups: php.windows 
Request: Send a blank email to php-windows+get-29311@lists.php.net to get a copy of this message
2009/4/30 John Messam <johnmess@hotmail.com>: > > I am trying to write a php program that opens a number of reports written in Crystal 11. From > research on the internet, I found that CR would have to be called using COM.  So I did that. From > the command line it triggers a dialog box saying that the version of Crystal the reports was written > in was later than the one that is being used to open it via the php program..   The other problem > is that when it is run from the browser the program hangs on the openReport command > > > > Can anyone assist me on resolving the hanging issue or the entire thing for that matter. > > > > Thanks! > > > > John > > _________________________________________________________________ > Show them the way! Add maps and directions to your party invites. > > http://www.microsoft.com/windows/windowslive/products/events.aspx I use Crystal all day and via PHP also. Here is the code I use (edited). It might not be perfect, but it works perfectly. <?php // Create an Crystal Object Factory. $o_CrObjectFactory = new COM('CrystalReports11.ObjectFactory.1'); // Create the Crystal Reports Runtime Application. $o_CrApplication = $o_CrObjectFactory->CreateObject("CrystalRunTime.Application.11"); // Register the typelibrary. com_load_typelib('CrystalDesignRunTime.Application'); // Load the report. $o_CrReport = $o_CrApplication->OpenReport('C:\Report.rpt', 1); // 1 == crOpenReportByTempCopy. // Logon to the database. $o_CrReport->Database->LogOnServer ( 'odbc', 'Accounts', registryDatabaseLocations::Database('Accounts'), registryDatabaseLocations::Username('Accounts'), registryDatabaseLocations::Password('Accounts') ); // Don't tell anyone what is going on when running live. $o_CrReport->DisplayProgressDialog = False; $s_ExportedReport = 'C:\Report.pdf'; // Run the report and save the PDF to disk. $o_CrReport->ExportOptions->DiskFileName = $s_ExportedReport; $o_CrReport->ExportOptions->PDFExportAllPages = True; $o_CrReport->ExportOptions->DestinationType = 1; // Export to File $o_CrReport->ExportOptions->FormatType = 31; // 31 = PDF, 36 = XLS, 14 = DOC // Assign the parameters to the report. $m_Stuff = new Variant(); $o_CrPeriodsParam = $o_CrReport->ParameterFields->GetItemByName('PeriodIDs', $m_Stuff); $o_CrPeriodsParam->ClearCurrentValueAndRange(); foreach($_SESSION['tabRG_PeriodIDs'] as $i_Period) { $o_CrPeriodsParam->AddCurrentValue(intval($i_Period)); } $o_CrReport->ReadRecords(); $o_CrReport->Export(False); ?> -- ----- Richard Quadling Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731 "Standing on the shoulders of some very clever giants!"

« previous php.windows (#29311) next »