通过 PHP 挂起生成 Crystal 报告
Generating Crystal Report via PHP Hangs
我正在尝试使用 php 脚本生成 crystal 报告。该脚本似乎在 ReadRecords() 之后挂起;日志文件中不会生成错误消息。我做错了什么吗?
$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;
此代码的类似版本适用于不同的报告。
$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;
您应该使用 DIRECTORY_SEPARATOR
而不是 \
您正在调用 $creport->DiscardSavedData
- 如果这是一个变量,它什么都不做。如果是函数调用,应该是$creport->DiscardSavedData()
.
在脚本开头尝试这些设置:
ini_set('error_reporting', -1); # displays all errors
ini_set('display_errors', 1); # reports errors to browser/console
这就是解决我的问题的方法。
$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;
我正在尝试使用 php 脚本生成 crystal 报告。该脚本似乎在 ReadRecords() 之后挂起;日志文件中不会生成错误消息。我做错了什么吗?
$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;
此代码的类似版本适用于不同的报告。
$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;
您应该使用
DIRECTORY_SEPARATOR
而不是\
您正在调用
$creport->DiscardSavedData
- 如果这是一个变量,它什么都不做。如果是函数调用,应该是$creport->DiscardSavedData()
.在脚本开头尝试这些设置:
ini_set('error_reporting', -1); # displays all errors ini_set('display_errors', 1); # reports errors to browser/console
这就是解决我的问题的方法。
$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;