проблема с Loadfromfile
описание проблемы:
Имею отчёт (печатная форма налоговой накладной) сделанный при помощи Fast Report 4.6.31
Имею проект на делфи.
если печатную форму сохранять в dfm - всё отлично работает...
Если я сохраняю отчёт в БД, потом я его подгружаю при момощи LoadFromFile(абсолютный_путь_к_файлу_очёта), то имею проблему с кодом внутри отчёта - при открытии отчётя первой вызывается процедура:
procedure col_1OnAfterData(Sender: TfrxComponent);
begin
if col_1.Text = '' then
......................
......................
col_1 - это мемка в MasterData , так вот при открытии печатной формы из программы идёт ругань плана :
"The following error(s) have occured:
Script error at 15:11: Undeclared identifier: 'col_1' "
И после ошибки открывается абсолютно пустая (серая) печатная форма....
Повторюсь - если отчёт не грузить из файла, а вкомпилировать в проект - всё работает отлично...
есть идеи?
Заранее длагодарен.
Имею отчёт (печатная форма налоговой накладной) сделанный при помощи Fast Report 4.6.31
Имею проект на делфи.
если печатную форму сохранять в dfm - всё отлично работает...
Если я сохраняю отчёт в БД, потом я его подгружаю при момощи LoadFromFile(абсолютный_путь_к_файлу_очёта), то имею проблему с кодом внутри отчёта - при открытии отчётя первой вызывается процедура:
procedure col_1OnAfterData(Sender: TfrxComponent);
begin
if col_1.Text = '' then
......................
......................
col_1 - это мемка в MasterData , так вот при открытии печатной формы из программы идёт ругань плана :
"The following error(s) have occured:
Script error at 15:11: Undeclared identifier: 'col_1' "
И после ошибки открывается абсолютно пустая (серая) печатная форма....
Повторюсь - если отчёт не грузить из файла, а вкомпилировать в проект - всё работает отлично...
есть идеи?
Заранее длагодарен.
Комментарии
Попробовать локализовать проблему. Постепенно удаляя из отчета объекты. А дальше смотреть в чем проблема и проще будет разобраться.
Проблема в том, что на момент парсинга кода в отчёте - ниодной мемки, привязанной к датасету не существует.... Насколько я понимаю - объекты, привязанные к датасету создаются только в случае, если дата сет содержит не нуловый набор данных, а во время выполнения PrepareReport после произведения LoadFromFile - данных в датасете нет....
я делаю LoadFromFile непосредственно перед PrepareReport - может быть - отчёт нужно подгрузить раньше, или произвести какие-то манипуляции с датасетом?
Подозреваю,что ошибка где-то там.
Еще вопрос: программу с загрузкой отчета запускаешь самостоятельно или из Делфи?
qrPrintForm.ParamByName('REPORT_NAME').AsString := self.ClassName;
qrPrintForm.Execute;
l_filename := GetCurrentDir + '\TemporaryPrintFile.fr3';
qrPrintFormREPORT_FORM.SaveToFile(l_filename);
{до этого момента всё отлично - файлик создался - фастрепортом открывается нормально}
ReportMain.LoadFromFile(l_filename);
ReportMain.PrepareReport;
ReportMain.ShowPreparedReport;
этот код прописан в паренте для всех форм в Делфи, отвечающих за печать.
Дело действительно где-то тут - ибо сами отчёты при хранении в dfm - работают отлично....
По поводу второго вопроса - из делфи. (только что проверил - самостоятельно также не работает)
сделать просто
Ибо так написано в мануале - это как минимум...
А в основном - потому, что если отчёт не подготовить - то все дополнительные датасеты (которых нет в паренте) по цепочке не отрефрешатся (в родительском рефреш на афтаопен висит) - и мы будем иметь сплошные нодатафаунд ошибки у оракла и нулы в отчёте...
Может у кого-то из знатоков будут дельные предложения? Метод научного тыка мне самому известен и он тут не помог.
вообще то я спрашивал о том, зачем тебе два prepare??? на какой странице мануала такое написано??
Страница 4 програмермануала гласитЖ
Пример:
if frxReport1.PrepareReport then
frxReport1.ShowPreparedReport;
В этом случае сначала полностью строится отчет, затем показывается в окне
просмотра. Построение большого отчета может занять много времени, именно
поэтому вместо PrepareReport/ShowPreparedReport лучше использовать
асинхронный метод ShowReport.
Зыж Асинхронный метод в данном случае не применим - выходит полная лажа с дополнительными датасетами (хз почему, но оно так )
использованы не те бэнды и не для того случая...
шаблон в студию
выпал в ошибку... из вкладок есть только Code и Data
выложи нормальный шаблон!!!