0

Windows 上の PHP5 から Crystal Reports 11 コンポーネントに日付パラメーターを渡す際に、かなりの問題があります。もちろん簡単なはずですが、コメントアウトされたさまざまな項目が機能しないようです。

<?php
$my_report = "C:\\xampp\htdocs\wincare\laporan\adm_JumlahPasienPoli.rpt"; // rpt source file
$my_pdf = "C:\\xampp\htdocs\wincare\laporan\adm_JumlahPasienPoli.pdf"; // RPT export to pdf file
//-Create new COM object-depends on your Crystal Report version
$ObjectFactory= new COM("CrystalReports115.ObjectFactory.1") or die ("Error on load"); // call COM port
$crapp = $ObjectFactory-> CreateObject("CrystalDesignRunTime.Application.11"); // create an instance for Crystal
$creport = $crapp->OpenReport($my_report,1); // call rpt report

// to refresh data before

//- Set database logon info - must have
$creport->Database->Tables(1)->SetLogOnInfo("localhost", "db_wincare", "sa", "sa");

//- field prompt or else report will hang - to get through
$creport->EnableParameterPrompting = 0;



// this is the error 

$zz = $creport->ParameterFields(1)->SetCurrentValue("2011-01-01 00:00:00");    

//export to PDF process
$creport->ExportOptions->DiskFileName=$my_pdf; //export to pdf
$creport->ExportOptions->PDFExportAllPages=true;
$creport->ExportOptions->DestinationType=1; // export to file
$creport->ExportOptions->FormatType=31; // PDF type
$creport->Export(false);

//------ Release the variables ------
$creport = null;
$crapp = null;
$ObjectFactory = null;

//------ Embed the report in the webpage ------
print "<embed src=\"adm_JumlahPasienPoli.pdf\" width=\"100%\" height=\"100%\">"



?>

そしてメッセージ:

Fatal error: Uncaught exception 'com_exception' with message ' Source:
Description: ' in C:\xampp\htdocs\wincare\laporan\pakai.php:36 Stack trace: #0 C:\xampp\htdocs\wincare\laporan\pakai .php(36): variant->SetCurrentValue('2011-01-01 00:0...') #1 {main} が C:\xampp\htdocs\wincare\laporan\pakai.php 行 36 でスローされました

4

1 に答える 1

1

5年ほど前にこの質問に長い時間を費やし、最終的にハックだが有効な答えを見つけたのを覚えています。

// This block is strictly guesswork
$application = new COM("CrystalRuntime.Application.9"); // Change to your version
$report = $application->OpenReport($my_report,1);       // From OP's code
$rptParams = $report.ParameterFields
$rptParam = $rptParams->Item(2);                        // From my SitePoint post; 
                                                        // obviously you need to use
                                                        // the right index

// Check that $rptParam->ValueType evaluates to 10 - if it does not
// then modify the type in Crystal Reports itself. Again, see my
// original solution

// This bit should be fine
$oScript = new COM("MSScriptControl.ScriptControl");
$oScript->Language = "VBScript";
$oScript->AllowUI = false;
$oScript->AddObject('rptParam', $rptParam, true);
$oScript->AddCode('Function SetDateParameter(strDate)
rptParam.AddCurrentValue(CDate(strDate))
End Function');
$oScript->Run("SetDateParameter", "25 April 2006");

これはうまくいきましたが、あまりエレガントではありません! Windows Server 2003 で CR9 に取り組んだと思います。ここからコピー- StackExchange が誕生する前のものです:)

于 2012-08-09T08:21:08.510 に答える