2016-02-01 1 views
8

PHPスクリプトを使用してCrystalレポートを生成しようとしています。このスクリプトは、ReadRecords()の直後にハングしているようです。ログファイルにエラーメッセージは生成されません。私は間違ったことをしていますか?PHPによるCrystalレポートの生成がハングする

$my_report = "C:\\inetpub\\wwwroot\\mamobile\\reports\\invoice.rpt"; 
$my_pdf = "C:\\inetpub\\wwwroot\\mamobile\\reports\\test.pdf"; 

$ObjectFactory = new COM("CrystalReports115.ObjectFactory.1"); 

$crapp = $ObjectFactory->CreateObject("CrystalDesignRuntime.Application.11"); 

$creport = $crapp->OpenReport($my_report, 1); 

$creport->EnableParameterPrompting = 0; 

$creport->DiscardSavedData; 
$creport->ReadRecords(); 

$creport->FormulaSyntax = 0; 
$creport->RecordSelectionFormula = "{invoice.invoiceid} = 20070128114815"; 

$creport->ExportOptions->DiskFileName = $my_pdf; 
$creport->ExportOptions->FormatType = 31; 
$creport->ExportOptions->DestinationType=1; 
$creport->Export(false); 

$creport = null; 
$crapp = null; 
$ObjectFactory = null; 

このコードと同様のバージョンが別のレポートで動作します。

​​

答えて

3

これは私の問題を修正するものです。助けのための

$my_report = "C:\\inetpub\\wwwroot\\mamobile\\reports\\invoice.rpt"; 
$my_pdf = "C:\\inetpub\\wwwroot\\mamobile\\reports\\test.pdf"; 

$ObjectFactory = new COM("CrystalReports115.ObjectFactory.1"); 

$crapp = $ObjectFactory->CreateObject("CrystalRuntime.Application.11"); 

$creport = $crapp->OpenReport($my_report, 1); 

$creport->EnableParameterPrompting = 0; 
$creport->FormulaSyntax = 0; 


$creport->DiscardSavedData(); 
$creport->RecordSelectionFormula = "{invoice.invoiceid} = 20070128114815"; 
$creport->ReadRecords(); 

$creport->ExportOptions->DiskFileName = $my_pdf; 
$creport->ExportOptions->FormatType = 31; 
$creport->ExportOptions->DestinationType=1; 
$creport->Export(false); 

$creport = null; 
$crapp = null; 
$ObjectFactory = null; 
+0

ありがとう。あなたは私がやったのと同じようなSOの質問に突っ込まれました - CrystalRuntimeではなくCrystalDesignRuntime – Patrick

1
  1. あなたが$creport->DiscardSavedDataを呼び出す代わりに\\

  2. DIRECTORY_SEPARATORを使用する必要があります - これは変数であれば、それは何もしません。関数呼び出しの場合は、$creport->DiscardSavedData()にする必要があります。

  3. は、スクリプトの先頭でこれらの設定を試してみてください。

    ini_set('error_reporting', -1); # displays all errors 
    ini_set('display_errors', 1); # reports errors to browser/console 
    
+0

ありがとう!私はそれを把握することができた。しかし、私もこれらの設定で遊ぶだろう:) – Hackmodford

関連する問題