2016-02-01 13 views
8

Próbuję wygenerować raport kryształu za pomocą skryptu php. Skrypt wydaje się zawieszać zaraz po ReadRecords(); W pliku dziennika nie jest generowany komunikat o błędzie. Czy robię coś złego?Generowanie raportu Crystal za pomocą PHP zawiesza się

$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; 

Podobna wersja tego kodu działa w przypadku innego raportu.

$my_report = "C:\\inetpub\\wwwroot\\mamobile\\reports\\" . $name; 
$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->ExportOptions->DiskFileName = $my_pdf; 
$creport->ExportOptions->FormatType = 31; 
$creport->ExportOptions->DestinationType=1; 
$creport->Export(false); 

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

Odpowiedz

3

To właśnie stały mój problem.

$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

Dzięki za to. Zostałaś użądlona przez to samo pytanie, które zrobiłem - CrystalRuntime, a nie CrystalDesignRuntime – Patrick

1
  1. Należy użyć DIRECTORY_SEPARATOR zamiast \\

  2. Telefonujesz $creport->DiscardSavedData - jeśli jest to zmienna, to nic nie robi. Jeśli jest to wywołanie funkcji, powinno być $creport->DiscardSavedData().

  3. spróbować te ustawienia na początku skryptu:

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

Dzięki za pomoc! Udało mi się to rozgryźć. Ale będę też grał z tymi ustawieniami :) – Hackmodford

Powiązane problemy