atimo
Зарегистрирован: 25.06.2013 Сообщения: 38
|
Добавлено: Вт Авг 16, 2016 13:57 Заголовок сообщения: Выгрузка отчета Crystal Reports в PDF формате на диск |
|
|
Добрый день!
Есть скрипт, который выгружает отчет Crystal Reports в PDF формате на диск
Код: | VB
{
Dim sReportName
Dim sReportOutput
Dim objCRApp
Dim objReport
Dim reportDb
Dim reportTables
Dim reportTable
'**********************************************************************************************
'Specify the report file name and location
'**********************************************************************************************
'Внимание!!! Необходимо написать выгрузку шаблона т.к. если его не будет в кэш, то будет ошибка
sReportName = "C:\Users\user\AppData\Roaming\Relational Programming Inc\RP Server\112922\Cache\ЗАПИСКА_ОТПУСК_ГРУПП.RPT" 'Crystal report location
sReportOutput = "C:\temp\" & file_name & ".pdf"
'**********************************************************************************************
'Save report file in PDF format - specified location
'**********************************************************************************************
Set objCRApp= CreateObject("CrystalRunTime.Application")
Set objReport= objCRApp.OpenReport(sReportName)
Set reportDb = objReport.Database
Set reportTables = reportDb.Tables
Set reportTable = reportTables.Item(1)
reportTable.SetLogonInfo "MSlite"
'**********************************************************************************************
'Передача параметров
'**********************************************************************************************
Set parCurstation = objReport.ParameterFields.GetItemByName("curstation")
parCurstation.SetCurrentValue(st_)
Set parCurstation = objReport.ParameterFields.GetItemByName("_accountant")
parCurstation.SetCurrentValue("")
Set parCurstation = objReport.ParameterFields.GetItemByName("BOSS_BUH_code_app")
parCurstation.SetCurrentValue("")
'**********************************************************************************************
'**********************************************************************************************
With objReport
.EnableParameterPrompting=false
.DiscardSavedData
.ExportOptions.FormatType = 31 'crEFTPortableDocFormat
.ExportOptions.DestinationType = 1 'crEDTDiskFile
.ExportOptions.DiskFileName = sReportOutput
.Export(false)
End With
'**********************************************************************************************
'Error handling and clean-up
'**********************************************************************************************
On Error Resume Next
Set sReportName = Nothing
Set sReportOutput = Nothing
Set objCRApp = Nothing
Set objReport = Nothing
Set reportDb = Nothing
Set reportTables = Nothing
Set reportTable = Nothing
}; |
Запускаем скрипт в тестовой базе данных. Строка reportTable.SetLogonInfo "MSlite" должна определять источник данных. Если строку исключить, то данные будут браться из рабочей базы lite. А если указать источник на тестовую базу данных reportTable.SetLogonInfo "lite_test" и запускать скрипт в тестовой базе данных, то скрипт выдает ошибку: Сбой при экспорте отчета. И все.
На рабочей базе данных все работает. Источник определяется верно. Данные корректные. Файл выгружается.
Но ситуация не понятная и может поменяться: в тесте будет работать, а в рабочей нет. В любом случае без понимания нельзя выпускать в рабочую среду.
Подскажите, кто знает как определить однозначно источник данных в отчете? Прописан ли он по умолчанию в шаблоне отчета? Может его нельзя менять? |
|