2009/4/30 John Messam <johnm...@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!"

--
PHP Windows Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to