Еще предложение: все переменные отчета содержатся в виде дерева (родитель-переменная). Было бы неплохо, если бы и обращение к переменной было соответствующее. Т.е. есть Поставщик-наименование и Покупатель-наименование ("покупатель" и "поставщик" - наименование корневой ветки). Сейчас переменная будет называться <Наименование>, а желательно чтобы было <Поставщик.наименование> и <Покупатель.наименование>. Конечно я могу при формировании сделать формировать список переменных в виде Поставщик (корн. ветка)- Поставщик_наименование (переменная), но способ, к-й я предлагаю "красивее" (на мой субъективный взгляд)
На форме диалога стоит запрос.
беру копирую в буфер
и вставляю рядом на форму.
что видем.
у которого копировали UserName стал 1
у втрого тоже UserName стал 1
в меню Отчет данные там две 1
ручками исправляю все.
UserName у первого компонента потом у второго.
На визуальные компоненты отчетов (в диалоге) добавьте пож-ста свойство TabOrder, а то приходится для правильного перехода фокуса (клафиша TAB) заново все "бросать" на форму
Да что за Херня полдня бьюсь ничего не могу понять.
открывается одна форма там заполняю переменные.
DmReport.Report.Script.Variables := YearOf(Date);
DmReport.Report.Variables := YearOf(Date);
Закрывается форма открываю другую форму а там уже список переменных пуст.
все компоненты фаста лежат на датамодуле форме.
При загрузке отчета Loadfromstream происходит вызов
procedure TfrxReport.DoClear;
begin
inherited Clear;
FDataSets.Clear;
FVariables.Clear;
Последняя строчка как раз и чистит все переменные которые были раньше
Т.е. заполняй переменные только после того как загрузил шаблон отчета
Я сейчас ругаться начну.
каго юююююююююю это сделали.
Убить стока времени на поиск этого...
Зачем они этот список чистят???
Пользователь открывает форму выставляет там значения.
я их закидываю в переменные фаста.
потом работает в других формах.
хочет распечатать отчет. отчет грузится из блоб и эти переменные мне они очищают....
Нахрен тогда они нужны??
в 2 заполнил и пользуйся. А тут получается Заводить еще список хранить его потом опять заполнять.. Херня какая то..
Думал обойду это так
завожу переменную FVariablesFr : TfrxVariables;
в модуле заполняю ее.
фаст умудрился и ее очистить как мне не понятно
Заведи на форме какую нибудь табличку в памяти (типа TMemtable) или TParams, храни там все свои переменные, а после загрузки шаблона отчета перекачивай их в переменные TfrxReport. Сам таким образом поступаю.
Я два дня назад также как и ты ругался - "куда ни кинь повсюду клин". Сейчас вроде бы сдвинулось с места. Глядишь совместными усилиями и доведем продукт до ума, будем, типа, первопроходцами.
Так я и завел
переменную FVariablesFr : TfrxVariables;
свою переменную.
но где и как он ее обнуляет так и не смог отследить
прямо шамансво.
столко глюков сегодня отловил.
= Ошибка при попытке сделать LoadFromStream =
Delphi 5, FR 3.02
Ситуация:
Есть некое приложение, генерящее некий отчет. И есть некая таблица, хранящая сей отчет в неком поле типа BLOB. При попытке достать этот отчет через:
F := TBlobField(ods2.FieldByName('REPORT'));
Stream := TMemoryStream.Create;
try
F.SaveToStream(Stream);
try
frxReport1.LoadFromStream(Stream);
except
on E: Exception do MessageDlg('Error load:'#10+E.Message, mtError, [mbOk], 0);
end;
finally
Stream.Free;
end;
получаем exception 'Invalid file format'. При этом вполне нормально работает:
F := TBlobField(ods2.FieldByName('REPORT'));
F.SaveToFile(SomeFileName);
try
frxReport1.LoadFromFile(SomeFileName);
except
on E: Exception do MessageDlg('Error load:'#10+E.Message, mtError, [mbOk], 0);
end;
Устранить проблему удалось фиксом в frxXML.pas (отмечено):
procedure TfrxXMLDocument.LoadFromStream(Stream: TStream;
AllowPartialLoading: Boolean = False);
var
rd: TfrxXMLReader;
begin
DeleteTempFile;
Редактируемая форма диалога в дизайнере всегда поверх всех окон, даже если находишься в другом приложении, при переключении обратно форма диалога активизируется, но сам Дизайнер где-то за окнами запущенных приложений
У меня такое есть, но только если FR3 лежит в Dll. В остальных случаях (design-time или Exe) - все нормально!
Александр!!! Сделай п-ста в Fastreportе при вставке нового Memo чтобы координаты (Top, Left, Width, Height) брались округленные, т.е. например вместо 62,94 ставилось изначально 63. А то получается визуально все элементы стоят вроде бы в один ряд, а по параметрам координат отличаются на сотые доли, и как итог при экспорте в Ёксел образуется куча лишних срочек и столбцов. М.б. лучше этот параметр округления вывести куданибудь в настройку всего Fastreport.
Вставляемые объекты имеют координаты и размеры, соответствующие выбранной сетке. Если сетка в сантиметрах - о каком округлении идет речь?
Еще предложение: все переменные отчета содержатся в виде дерева (родитель-переменная). Было бы неплохо, если бы и обращение к переменной было соответствующее. Т.е. есть Поставщик-наименование и Покупатель-наименование ("покупатель" и "поставщик" - наименование корневой ветки). Сейчас переменная будет называться <Наименование>, а желательно чтобы было <Поставщик.наименование> и <Покупатель.наименование>. Конечно я могу при формировании сделать формировать список переменных в виде Поставщик (корн. ветка)- Поставщик_наименование (переменная), но способ, к-й я предлагаю "красивее" (на мой субъективный взгляд)
На визуальные компоненты отчетов (в диалоге) добавьте пож-ста свойство TabOrder, а то приходится для правильного перехода фокуса (клафиша TAB) заново все "бросать" на форму
Пользуйтесь редактором TabOrder (вызывается из контекстного меню).
Александр!!! Сделай п-ста в Fastreportе при вставке нового Memo чтобы координаты (Top, Left, Width, Height) брались округленные, т.е. например вместо 62,94 ставилось изначально 63. А то получается визуально все элементы стоят вроде бы в один ряд, а по параметрам координат отличаются на сотые доли, и как итог при экспорте в Ёксел образуется куча лишних срочек и столбцов. М.б. лучше этот параметр округления вывести куданибудь в настройку всего Fastreport.
Вставляемые объекты имеют координаты и размеры, соответствующие выбранной сетке. Если сетка в сантиметрах - о каком округлении идет речь?
Я сейчас ругаться начну.
каго юююююююююю это сделали.
Убить стока времени на поиск этого...
Зачем они этот список чистят???
Пользователь открывает форму выставляет там значения.
я их закидываю в переменные фаста.
потом работает в других формах.
хочет распечатать отчет. отчет грузится из блоб и эти переменные мне они очищают....
Нахрен тогда они нужны??
в 2 заполнил и пользуйся. А тут получается Заводить еще список хранить его потом опять заполнять.. Херня какая то..
Думал обойду это так
завожу переменную FVariablesFr : TfrxVariables;
в модуле заполняю ее.
фаст умудрился и ее очистить как мне не понятно
А как ты думаешь, зачем это сделано? Список переменных - это свойство ОТЧЕТА. Когда ты загружаешь другой отчет - у него может быть свой список. Что тогда будет, если этот список не чистить? По поводу своих переменных - формируй их перед тем, как показать отчет, а не перед его загрузкой.
= Ошибка при попытке сделать LoadFromStream =
Delphi 5, FR 3.02
Ситуация:
Есть некое приложение, генерящее некий отчет. И есть некая таблица, хранящая сей отчет в неком поле типа BLOB. При попытке достать этот отчет через:
F := TBlobField(ods2.FieldByName('REPORT'));
Stream := TMemoryStream.Create;
try
F.SaveToStream(Stream);
try
frxReport1.LoadFromStream(Stream);
except
on E: Exception do MessageDlg('Error load:'#10+E.Message, mtError, [mbOk], 0);
end;
finally
Stream.Free;
end;
получаем exception 'Invalid file format'. При этом вполне нормально работает:
F := TBlobField(ods2.FieldByName('REPORT'));
F.SaveToFile(SomeFileName);
try
frxReport1.LoadFromFile(SomeFileName);
except
on E: Exception do MessageDlg('Error load:'#10+E.Message, mtError, [mbOk], 0);
end;
Устранить проблему удалось фиксом в frxXML.pas (отмечено):
procedure TfrxXMLDocument.LoadFromStream(Stream: TStream;
AllowPartialLoading: Boolean = False);
var
rd: TfrxXMLReader;
begin
DeleteTempFile;
Александр!!! Сделай п-ста в Fastreportе при вставке нового Memo чтобы координаты (Top, Left, Width, Height) брались округленные, т.е. например вместо 62,94 ставилось изначально 63. А то получается визуально все элементы стоят вроде бы в один ряд, а по параметрам координат отличаются на сотые доли, и как итог при экспорте в Ёксел образуется куча лишних срочек и столбцов. М.б. лучше этот параметр округления вывести куданибудь в настройку всего Fastreport.
Вставляемые объекты имеют координаты и размеры, соответствующие выбранной сетке. Если сетка в сантиметрах - о каком округлении идет речь?
Настройки "тип сетки - точки"
В таком случае вставляются целые значения - проверено. Или я как-то неправильно вставляю?
А как ты думаешь, зачем это сделано? Список переменных - это свойство ОТЧЕТА. Когда ты загружаешь другой отчет - у него может быть свой список. Что тогда будет, если этот список не чистить? По поводу своих переменных - формируй их перед тем, как показать отчет, а не перед его загрузкой.
Саша объясни мне пожалуйста.
я объявляю переменную FVariablesFr : TfrxVariables;
в своем датамодуле инициализирую ее заполняю.
Почему после загрузки выгрузки Фаст эту переменную чистит??
Редактируемая форма диалога в дизайнере всегда поверх всех окон, даже если находишься в другом приложении, при переключении обратно форма диалога активизируется, но сам Дизайнер где-то за окнами запущенных приложений
У меня такое есть, но только если FR3 лежит в Dll. В остальных случаях (design-time или Exe) - все нормально!
Нет у меня обычный ЕХЕ файл.
никаких Длл.
И как с этим бороться??
На форме диалога стоит запрос.
беру копирую в буфер
и вставляю рядом на форму.
что видем.
у которого копировали UserName стал 1
у втрого тоже UserName стал 1
в меню Отчет данные там две 1
ручками исправляю все.
UserName у первого компонента потом у второго.
Добавляем обработку. Сохранения в Блоб Файл.
Все работает.
Но я хочу чтобы он стандартно обрабатывал, когда говоришь сохранить как.
если я в обработчике первой строкой проверяю
if SaveAs then exit;
и не выставляю И функция возвращает := False;
почему не идет стандартая процедура сохранить как?
по моему здесь
if frxDesignerComp.FOnSaveReport(Report, SaveAs) then
begin
UpdateRecentFiles(Report.FileName);
UpdateCaption;
Modified := False;
end;
Exit;
У меня такое есть, но только если FR3 лежит в Dll. В остальных случаях (design-time или Exe) - все нормально!
И в EXE и в DLL была одна и таже проблема,
изначально у TfrxDialogForm FormStyle - fsStayOnTop, при смене на fsNormal возникают другая проблема - форма диалога остается где-то позади, но решаемая и нет такого безобразия с показом формы поверх всех окон приложений
Для TfrxDBDataSet определены все события навигации по набору данных
OnCheckEOF, OnFirst, OnNext, OnPrior
Fast Report 3.0 выполняет и свою обработку и определенные события, в результате часть данных не печатается
Комментарии
На форме диалога стоит запрос.
беру копирую в буфер
и вставляю рядом на форму.
что видем.
у которого копировали UserName стал 1
у втрого тоже UserName стал 1
в меню Отчет данные там две 1
ручками исправляю все.
UserName у первого компонента потом у второго.
открывается одна форма там заполняю переменные.
DmReport.Report.Script.Variables := YearOf(Date);
DmReport.Report.Variables := YearOf(Date);
Закрывается форма открываю другую форму а там уже список переменных пуст.
все компоненты фаста лежат на датамодуле форме.
procedure TfrxReport.DoClear;
begin
inherited Clear;
FDataSets.Clear;
FVariables.Clear;
Последняя строчка как раз и чистит все переменные которые были раньше
Т.е. заполняй переменные только после того как загрузил шаблон отчета
каго юююююююююю это сделали.
Убить стока времени на поиск этого...
Зачем они этот список чистят???
Пользователь открывает форму выставляет там значения.
я их закидываю в переменные фаста.
потом работает в других формах.
хочет распечатать отчет. отчет грузится из блоб и эти переменные мне они очищают....
Нахрен тогда они нужны??
в 2 заполнил и пользуйся. А тут получается Заводить еще список хранить его потом опять заполнять.. Херня какая то..
Думал обойду это так
завожу переменную FVariablesFr : TfrxVariables;
в модуле заполняю ее.
фаст умудрился и ее очистить как мне не понятно
переход на 3 прийдется откладывать...
Я два дня назад также как и ты ругался - "куда ни кинь повсюду клин". Сейчас вроде бы сдвинулось с места. Глядишь совместными усилиями и доведем продукт до ума, будем, типа, первопроходцами.
переменную FVariablesFr : TfrxVariables;
свою переменную.
но где и как он ее обнуляет так и не смог отследить
прямо шамансво.
столко глюков сегодня отловил.
Delphi 5, FR 3.02
Ситуация:
Есть некое приложение, генерящее некий отчет. И есть некая таблица, хранящая сей отчет в неком поле типа BLOB. При попытке достать этот отчет через:
F := TBlobField(ods2.FieldByName('REPORT'));
Stream := TMemoryStream.Create;
try
F.SaveToStream(Stream);
try
frxReport1.LoadFromStream(Stream);
except
on E: Exception do MessageDlg('Error load:'#10+E.Message, mtError, [mbOk], 0);
end;
finally
Stream.Free;
end;
получаем exception 'Invalid file format'. При этом вполне нормально работает:
F := TBlobField(ods2.FieldByName('REPORT'));
F.SaveToFile(SomeFileName);
try
frxReport1.LoadFromFile(SomeFileName);
except
on E: Exception do MessageDlg('Error load:'#10+E.Message, mtError, [mbOk], 0);
end;
Устранить проблему удалось фиксом в frxXML.pas (отмечено):
procedure TfrxXMLDocument.LoadFromStream(Stream: TStream;
AllowPartialLoading: Boolean = False);
var
rd: TfrxXMLReader;
begin
DeleteTempFile;
rd := TfrxXMLReader.Create(Stream);
try
rd.SetPosition(0); // added by APS 21.09.2004
FRoot.Clear;
FRoot.Offset := 0;
rd.ReadHeader;
rd.ReadRootItem(FRoot, not AllowPartialLoading);
finally
rd.Free;
end;
...
...
ЗЫ. Не претендую на исключительную правильность, но, вроде, работает пока что...
F.SaveToStream(Stream);
try
Stream.Position := 0;
frxReport1.LoadFromStream(Stream);
я объявляю переменную FVariablesFr : TfrxVariables;
в своем датамодуле инициализирую ее заполняю.
Почему после загрузки выгрузки Фаст эту переменную чистит??
мне это не понятно
никаких Длл.
И как с этим бороться??
В предварительном просмотре печать доступна по Ctrl+P, даже если кнопка печати не показывается (запрещена)
изначально у TfrxDialogForm FormStyle - fsStayOnTop, при смене на fsNormal возникают другая проблема - форма диалога остается где-то позади, но решаемая и нет такого безобразия с показом формы поверх всех окон приложений
Для TfrxDBDataSet определены все события навигации по набору данных
OnCheckEOF, OnFirst, OnNext, OnPrior
Fast Report 3.0 выполняет и свою обработку и определенные события, в результате часть данных не печатается