Люди добрые помогите пожалуйста
Люди добрые помогите пожалуйста. Я в Fast-Reporte не силен и нуждаюсь в вашей помощи. Help перечитал в доль и поперек раз 5, вроде делаю как написано там, но результат отрицательный.
Проблема в следующем :
Отчет состоит из:
1. ReportTitle1
2. Memo1 на ReportTitle1
3. ColumnHeader1
4. MasterData1
5. В "Списке переменных" переменная "NoInform"
MasterData1 привязан к внешнему(на dmForm) Query1.
Нужно, чтобы при пустом Query1 в Memo1 записалось "Нет данных для отчёта" и ColumnHeader1 стал невидимым. В Memo1 написано [NoInform], пробывал и [<NoInform>].
if (qryChildren.IsEmpty) then
frxReport1.Variables := '''' + 'Нет данных для отчета' + '''';
frxMainReport.LoadFromFile('C:\Program Files\Borland\Delphi7\Projects\Тренировки\Отчеты для расчета\Отчеты(бланки)\Report1.fr3');
frxMainReport.PrepareReport; - Это главный отчет в который я вливаю все подготовленные
bPerpareReport := True;
frxMainReport.ShowPreparedReport;
А как сделать ColumnHeader1 из Delphi7 невидимым я вообще не представляю.
В Memo1 ничего не выводися. Может в скрипте или на каких либо событиях отчета что-то нужно вписать ? Если не тяжело приведите код программы.
Заранее благодарен откликнувшимся на просьбу.
Проблема в следующем :
Отчет состоит из:
1. ReportTitle1
2. Memo1 на ReportTitle1
3. ColumnHeader1
4. MasterData1
5. В "Списке переменных" переменная "NoInform"
MasterData1 привязан к внешнему(на dmForm) Query1.
Нужно, чтобы при пустом Query1 в Memo1 записалось "Нет данных для отчёта" и ColumnHeader1 стал невидимым. В Memo1 написано [NoInform], пробывал и [<NoInform>].
if (qryChildren.IsEmpty) then
frxReport1.Variables := '''' + 'Нет данных для отчета' + '''';
frxMainReport.LoadFromFile('C:\Program Files\Borland\Delphi7\Projects\Тренировки\Отчеты для расчета\Отчеты(бланки)\Report1.fr3');
frxMainReport.PrepareReport; - Это главный отчет в который я вливаю все подготовленные
bPerpareReport := True;
frxMainReport.ShowPreparedReport;
А как сделать ColumnHeader1 из Delphi7 невидимым я вообще не представляю.
В Memo1 ничего не выводися. Может в скрипте или на каких либо событиях отчета что-то нужно вписать ? Если не тяжело приведите код программы.
Заранее благодарен откликнувшимся на просьбу.
Комментарии
frxReport1.Variables := true
else
frxReport1.Variables := false;
для ColumnHeader1 назначаешь обработчик BeforePrint, в котором пишешь:
ColumnHeader1.Visible := <NoInform>;
аналогично для Memo1 в BeforePrint:
if <NoInform> then Memo1.Memo.Add('Нет данных для отчета' );
if (qryChildren.IsEmpty) then
frxReport1.Variables := true
else frxReport1.Variables := false;
ColumnHeader1.Visible := <NoInform>;
Так получается, что если данных нет, то ColumnHeader1 будет видимым.
потом
if <NoInform> then Memo1.Memo.Add('Нет данных для отчета' );
несовсем понятное условие оператора if...then ...
<NoInform> чему-нибудь должно быть равно или нет ?
Вообщем как ты сказал я пробывал результат - отрицательный, в Memo1 не записывается 'Нет данных для отчета', а ColumnHeader1 всегда скрыт, такое ощущение, что переменная NoInform не передается.
Переменная NoInform должна быть заведена в "Списке переменных" или в скрипте отчета ? и где написать условие if (qryChildren.IsEmpty) then ... в Delphi или скрипте отчета ?
ПОЖАЛУЙСТА ответьте !!! Нужно очень СРОЧНО !!!
если хочешь чтобы в десигн-тайм работало, то нужно в список переменных занести. если не критично, то и так сойдет.
в Delphi:
// присваиваем значение. если NoInform не существует (не объявлена в списке переменных) то она сперва создастся.
для ColumnHeader1 назначаешь обработчик BeforePrint, в котором пишешь(в скрипте):
аналогично для Memo1 в BeforePrint(в скрипте):
условие нормальное. Переменные отчета являются вариантными.
Важно: при проектировании формы текст в Memo1 никакой назначать не нужно ты это сделаешь в обработчике Memo1.BeforePrint
Всё сделал как ты и сказал.
1. Когда запускаю прогу, доходит до breakpoint на frxReport1.PrepareReport и
выдаёт ошибку : 'Could not convert variant of type(Null) into type (Boolean)'
2. Если создать переменную "NoInform" программно: то выдаёт ошибку: 'Unkhown variable or datafield: NoInform'
3. И ещё на мой взгляд ОЧЕНЬ ВАЖНО!!
В Help в параграфе "Добавление переменнной" написано: так вот если у меня в проге объявить такую же переменную, то при компиляции выдаёт ошибку:
Udeclared identifier: 'TfrxVariable'
Could not compile used unit 'RSPasswordDlg.pas'
Где нужно хранить отчёты там же где и *.pas, *.dlg или все равно где ?
Может у меня где нибудь patch не указан ?
Как можно узнать передалась переменная NoInfom или нет ?