Теперь по поводу моего поста на предыдущей странице насчет полного зависания компа. Вот потратил больше двух часов, но подобрал минимальное количество действий, чтобы воссоздать ситуацию.
1. Создаем новый пустой отчет: Файл -> Новый -> Путой стандартный отчет
2. На обработчик событий Page1.OnBeforePrint вешаем следующий обработчик:
Компьютер вешается НАМЕРТВО. Помогает только Reset.
Даже переменные в списке переменных создавать не нужно, хотя в моем полном отчете, откуда все это началось, они созданы и проинициализированы.
Моя конфигурация: Athlon XP 2600+, 512 RAM, Windows XP Pro Rus SP1.
Интересно, что при попытке сделать это же в VMWare происходит также полное зависание всего компьютера, а не только виртуальной машины.
Предлагаю другим посетелям конференции повторить ситуацию и написать о результатах в конференцию. Сам я завтра поэкспериментирую на других компьютерах. Только не забудьте сохраниться.
Большинство нештатных исключений перехватывается самим фастом, и выдается на экран (или в Report.Errors - если стоит Report.EngineOptions.SilentMode) в виде понятных сообщений.
Я как раз имел ввиду, что "понятность сообщений" весьма относительное понятие: то что понятно для меня, совсем не означает, что оно будет понятно конечным пользователям.
Все-таки для такой _опциональной_ возможности как не выдавать сообщений на экран (или в Report.Errors), а райзить для обработки вызывающим приложением понадобится минимум телодвижений - зато польза налицо.
Почему я на это обращаю так много внимания - просто я сам очень к этому привык и весьма поощряю других разработчиков в том, чтобы критические исключения никогда не "глушились" ни в каком библиотечном коде, а всегда обрабатывались только "end user code".
Да, для этого можно использовать Report.Errors, но ведь это всего лишь StringList!!! Его нельзя использовать для структурированной обработки исключений, основываясь на классах исключений. Это противоречит правилам хорошего тона в программировании и является шагом назад в процедурный мир из мира объектно-ориентированного. Уж очень сильно оно попахивает на "IOError <> 0" из времен, когда по земле ходили динозавры
Предлагаю всем посетелям форума провести акцию: "Сделаем вместе ФастРепорт лучше" и в ее рамках отстаивать важные пункты функциональности ФР вплоть до того, чтобы засучив рукава править исходный код, дабы не отвлекать разработчиков от процесса убеждения нас самих в том, что функциональность, которую мы хотим, на самом деле нам не нужна. Все-таки они не используют ФР в конечных приложениях так, как это делаем мы, а потому вряд ли смогут нас полностью понять, поэтому к недопониманию наших потребностей будем относиться с пониманием...
Возникла тут еще одна неприятная багофича.
К примеру, вычисляются у меня в отчете денежные суммы и я хочу показывать числа с двумя знкаками после запятой, причем положительные числа со знаком "+", отрицательные - со знаком "-", а нули - в виде "0.00". Для некоторых ячеек расчет невозможен и я хочу оставить их пустыми.
Сделал следующим образом: создал переменную Result, которая получает результат расчетов. Если расчет невозможен, то переменной присваивается Null. Далее в текстовом поле эту переменную вывожу используя функцию FormatFloat:
Однако в тех ячейках, где <Result> = null появляется сообщение об ошибке:
Could not convert variant of type (Null) into type (Double).
Логично, функции FormatFloat передается Null и она его не может преобразовать в вещественное значение. В принципе, так и должно быть, преобразовываем в следующий код:
Здесь вроде бы все предусмотрено: если <Result> = null, то возвращаем пустую строку, если нет - то делаем FormatFloat (к сожалению, функцию типа VarIsNull я не нашел, поэтому преобразовываю <Result> в строку и проверяю, не является ли пустой она).
Однако сообщение об ошибке (Could not convert variant of type (Null) into type (Double)) никуда не пропадает. Как показал следственный эксперимент, ФР в любом случае пытается исполнить FormatFloat, даже если условие в приведенной конструкции IIF является true и необходимо вернуть пустую строку. Налицо поведение ФР в данной ситуации вызывает проявление синдрома обманутых ожиданий пользователя и требует пояснений.
. Трассировка показывает, что ошибка появляется в TfrxDBDataset.GetValue, а вызывает ее следующая строчка:
Result := TField(Fields.Objects[i]).Value
Где Fields.Objects ни на что не указывает.
Мне надоела ошибка в это месте и я написал у себя
Result := FDS.FieldByName(Index).Value
Дышать стало значительно легче, хотя хотелось бы найти причину этого, но времени пока на это нет (интересно а есть ли оно у разработчиков ).
Компоненты тоже можно сказать самописные DBX переделаный. Кроме этого пришлось ещё в компоненте сделать принудительно переоткрытие Detail наборов в событии AfterOpen, иначе они не всегда переоткрываются.
Хочу обратить внимание разработчиков, что сообщения об ощибках лучше бы выдавать через стандартный механизм RAISE EXCEPTION, а не использовать для этих целей MessageBox!!!!!!
Это называется - хрен поймаешь!!!
У разработчиков свои цели. И raise этим целям не соответствует.
Может быть, но что делать в такой ситуации: имеется не один десяток отчётов, печатные формы которых собраны на 2.51. Переделывать их оч. долго, у людей нет на это времени. Поэтому я решил использовать и версию 2.51 и 3.03 одновременно (2.51 только просмотр). Печ. формы хранятся в БД. Но как отличить их версии не вводя ещё одно поле в таблицу БД? Сейчас при попытке загрузить в 3.03 формы сделанные в 2.51 выдаётся сообщение и всё. Если бы был exception можно было бы использовать try except для перехвата ошибки.
Кстати, почему-то печатные формы собранные в 3.0 не загружаются в 3.03
У меня все есть и работает. Какие ресурсы ставите?
Пробовал ресурсы анлийские, русские, украинские.
От языка не зависит.
Одинаково кнопки в тулбаре не работают и в Delphi5 и в BCB6.
Однако редактор свойств работает правильно, хоть это спасает.
Но все равно нехорошо.
Судя по тому, что у других таких проблем нет, может причина в некорректной инсталляции/деинсталляции FR ?
С самого начала у меня была демка 2.46.
Потом купили 3.0. Ставил версии 3.01, 3.02, 3.03, 3.04.
Старался переставлять версии корректно.
Кнопки в тулбаре не работали ни в одной версии FR3.
Access violation появился в 3.04.
1. При frxReport.OldStyleProgress=false события OnProgressStart и OnProgressStop вызываются тольки при печати отчета. При просмотре - нет.
2. При включении frxReport.OldStyleProgress=true события OnProgressStart и OnProgressStop отрабатывают и при просмотре, но при этом отчет НЕ РАБОТАЕТ ("List index out of bounds...")
Кроме того, почему нельзя вообще отключить Progress ?
Может добавить свойство ShowProgress ?
Может я где-то, чего-то не уловил, поэтому заранее прошу прощения, если вопрос окажется глупым.
Вопрос следующего плана: можно ли переменным присваивать строковые значения, с помощью процедуры Set (Особенно, если в этих переменных ранее были числа)?
Хочу обратить внимание разработчиков, что сообщения об ощибках лучше бы выдавать через стандартный механизм RAISE EXCEPTION, а не использовать для этих целей MessageBox!!!!!!
Это называется - хрен поймаешь!!!
У разработчиков свои цели. И raise этим целям не соответствует.
Может быть, но что делать в такой ситуации: имеется не один десяток отчётов, печатные формы которых собраны на 2.51. Переделывать их оч. долго, у людей нет на это времени. Поэтому я решил использовать и версию 2.51 и 3.03 одновременно (2.51 только просмотр). Печ. формы хранятся в БД. Но как отличить их версии не вводя ещё одно поле в таблицу БД? Сейчас при попытке загрузить в 3.03 формы сделанные в 2.51 выдаётся сообщение и всё. Если бы был exception можно было бы использовать try except для перехвата ошибки.
Кстати, почему-то печатные формы собранные в 3.0 не загружаются в 3.03
Я определяю по коду из базы
если код отчета меньше какой то цифери значит это 2.53
больше значит 3
Set('Result', 'Privet'); - так 'Privet' это идентификатор, которого нет.
Попробуй так
Set('Result', "Privet");
Странно, не помогает ни точка с запятой в конце строки форматирования,
ни двойные кавычки, в которые включается строка.
В первом случае сообщение несколько изменяется - вместо "";" expected" пишет "expression expected ", но результат, фактически тот же.
Ну а во втором - интерпретарор отказывается воспринимать строку с двойными кавычками, что, в общем-то понятно, поскольку в PascalScript, который я использую, двойные кавычки для выделения строк не применяются.
Теперь по поводу моего поста на предыдущей странице насчет полного зависания компа. Вот потратил больше двух часов, но подобрал минимальное количество действий, чтобы воссоздать ситуацию.
1. Создаем новый пустой отчет: Файл -> Новый -> Путой стандартный отчет
2. На обработчик событий Page1.OnBeforePrint вешаем следующий обработчик:
Компьютер вешается НАМЕРТВО. Помогает только Reset.
Даже переменные в списке переменных создавать не нужно, хотя в моем полном отчете, откуда все это началось, они созданы и проинициализированы.
Моя конфигурация: Athlon XP 2600+, 512 RAM, Windows XP Pro Rus SP1.
Интересно, что при попытке сделать это же в VMWare происходит также полное зависание всего компьютера, а не только виртуальной машины.
Предлагаю другим посетелям конференции повторить ситуацию и написать о результатах в конференцию. Сам я завтра поэкспериментирую на других компьютерах. Только не забудьте сохраниться.
Перепроверил на демке от 3.04. Все равно, floating point division by zero, и никаких зависаний! Win98, WinXP home.
Однако сообщение об ошибке (Could not convert variant of type (Null) into type (Double)) никуда не пропадает. Как показал следственный эксперимент, ФР в любом случае пытается исполнить FormatFloat, даже если условие в приведенной конструкции IIF является true и необходимо вернуть пустую строку. Налицо поведение ФР в данной ситуации вызывает проявление синдрома обманутых ожиданий пользователя и требует пояснений.
IIF - это обычная функция. Как любой другой функции, ей требуется перед выполнением вычислить и передать ВСЕ параметры.
1. При frxReport.OldStyleProgress=false события OnProgressStart и OnProgressStop вызываются тольки при печати отчета. При просмотре - нет.
2. При включении frxReport.OldStyleProgress=true события OnProgressStart и OnProgressStop отрабатывают и при просмотре, но при этом отчет НЕ РАБОТАЕТ ("List index out of bounds...")
Кроме того, почему нельзя вообще отключить Progress ?
Может добавить свойство ShowProgress ?
Вопрос следующего плана: можно ли переменным присваивать строковые значения, с помощью процедуры Set (Особенно, если в этих переменных ранее были числа)?
Народ, а что правда кто-то кинулся переделывать свои 100% работающие отчёты под FR 3.0 ?
ИМХО пустая трата времени. Багов больше чем "фич" по сравнению с 2.4х ...
1.Проблемы с master-detail IBXQuery, работает не стабильно. Возникают ошибки 'field "" has no dataset'(чаще) или просто 'AV read 00000000'. При запуске из среды Delphi ошибки происходят почти всегда, из ОС не всегда. Testcase отправлен на tz@fast-report.com
2.При помещении на диалоговую форму IBXQuery возбуждается исключение:
...EIBClientError ... "Empty SQL Statment" ...
Это же происходит при копировании (не при вставке!), и отмене удаления
нового IBXQuery. Если запускать проект не из среды Delphi, вроде бы такого не происходит.
3.После копирования-вставки IBXQuery на диалоговую форму, при щелчке на
кнопку списка свойства Master вставленного обьъекта, возбуждается
исключение:
...EStringListError ... "List index out of bounds(-1)" ...
Это происходит как при вставке из текущего отчета, так и из другого,
и независимо от установленного значения свойства Master. И при запуске из среды Delphi, и при запуске из ОС.
4.Почему нельзя удалить компоненты кнопкой Del на диалоговой форме, тем
более, что есть Undo? На обычной странице Page компоненты удаляются
нормально кнопкой, хотя и на странице и на форме в контекстном меню
горячая клавиша в строке Delete не видна.
Ну, по поводу этого я и сам догадывался, что где-то оно должно быть. Вот только документацию от начала и до конца читать не люблю, сделал поиск по слову "Set", ничего подходящего не нашлось, написал в форум.
1.Проблемы с master-detail IBXQuery, работает не стабильно. Возникают ошибки 'field "" has no dataset'(чаще) или просто 'AV read 00000000'. При запуске из среды Delphi ошибки происходят почти всегда, из ОС не всегда. Testcase отправлен на tz@fast-report.com
3.После копирования-вставки IBXQuery на диалоговую форму, при щелчке на
кнопку списка свойства Master вставленного обьъекта, возбуждается
исключение:
...EStringListError ... "List index out of bounds(-1)" ...
Это происходит как при вставке из текущего отчета, так и из другого,
и независимо от установленного значения свойства Master. И при запуске из среды Delphi, и при запуске из ОС.
4.Почему нельзя удалить компоненты кнопкой Del на диалоговой форме, тем
более, что есть Undo? На обычной странице Page компоненты удаляются
нормально кнопкой, хотя и на странице и на форме в контекстном меню
горячая клавиша в строке Delete не видна.
To Georgy
1. Почитай один из моих ответов этой ветке про FieldByName
3. Report->Data, надо все прокрыжить
4. Сказали что в 3.05 будет
Народ, а что правда кто-то кинулся переделывать свои 100% работающие отчёты под FR 3.0 ?
Ну например я.
Я уже переделал где то 70% своих отчетов с FR2.5x на FR3.
Особо неразрешимых проблем пока не было. А те проблемы что у меня были большей частью уже решены или исправленны в FR3 Александром.
1. Почитай один из моих ответов этой ветке про FieldByName
Спасибо, но не понятно при чем тут FieldByName?
Про FieldByName.
Ссылки на поля Fields наборов в новой версии перекладываются в TStrings.Objects. Возможно в твоем случае frxDBSet.pas поможет, если он отличается от того что в 3.04. Поскольку я столкнулся с тем что эти ссылки не всегда указывают туда куда надо (при каждом переоткрытии набора Fields пересоздается), мне пришлось явно прописать, чтобы данные брались из полей набора. Стало намного стабильнее. Подождем 3.05 может ещё чего исправили.
В отчёте используется подзапрос сделанный на frxADOQuery. Причём выборка должна идти из временных таблиц текущего подключения. В версии 2.51 была возможность выбирать одно из подключений проекта в качестве подключения frxADOQuery. В версии 3.03 это сделать нельзя.
В отчёте используется подзапрос сделанный на frxADOQuery. Причём выборка должна идти из временных таблиц текущего подключения. В версии 2.51 была возможность выбирать одно из подключений проекта в качестве подключения frxADOQuery. В версии 3.03 это сделать нельзя.
Почему столь удобный функционал был убран?
DefaultDataBase задай. Если надо несколько коннектов передавать пиши свои компоненты.
Натолкнулся на странное поведение.
Есть некая форма. На форме лежит frxReport, frxDesigner, frxDBDataset, frxPreview. Во время выполнения показывается preview отчета. Далее:
1. Нажимаем F4: загружается дизайнер с отчетом;
2. Нажимаем F4: дизайнер перерисовывается (такое впечатление, что пересоздаётся), на этот раз с пустым отчетом (на странице не видно ни одного компонента), также исчезает информация по свойствам;
3. Это новое окно невозможно закрыть по "x" и не работает пункт меню Exit;
4. Нажимаем еще раз в этом окне F4 и получаем окно Preview, которое можно закрыть, после чего возвращаемся в вызывающую форму;
Используется: D5, FR 3.04.
ЗЫ. Ради интереса проверил это же на демке от 3.04. Аналогичное поведение после нажатия кнопки Design и F4 в дизайнере.
ЗЫЫ. Ради такого же интереса проверил то же на демке от 3.0 alpha 8. Не наблюдается.
Комментарии
1. Создаем новый пустой отчет: Файл -> Новый -> Путой стандартный отчет
2. На обработчик событий Page1.OnBeforePrint вешаем следующий обработчик: 3. Нажимаем кнопку "Предварительный просмотр".
Компьютер вешается НАМЕРТВО. Помогает только Reset.
Даже переменные в списке переменных создавать не нужно, хотя в моем полном отчете, откуда все это началось, они созданы и проинициализированы.
Моя конфигурация: Athlon XP 2600+, 512 RAM, Windows XP Pro Rus SP1.
Интересно, что при попытке сделать это же в VMWare происходит также полное зависание всего компьютера, а не только виртуальной машины.
Предлагаю другим посетелям конференции повторить ситуацию и написать о результатах в конференцию. Сам я завтра поэкспериментирую на других компьютерах. Только не забудьте сохраниться.
Все-таки для такой _опциональной_ возможности как не выдавать сообщений на экран (или в Report.Errors), а райзить для обработки вызывающим приложением понадобится минимум телодвижений - зато польза налицо.
Почему я на это обращаю так много внимания - просто я сам очень к этому привык и весьма поощряю других разработчиков в том, чтобы критические исключения никогда не "глушились" ни в каком библиотечном коде, а всегда обрабатывались только "end user code".
Да, для этого можно использовать Report.Errors, но ведь это всего лишь StringList!!! Его нельзя использовать для структурированной обработки исключений, основываясь на классах исключений. Это противоречит правилам хорошего тона в программировании и является шагом назад в процедурный мир из мира объектно-ориентированного. Уж очень сильно оно попахивает на "IOError <> 0" из времен, когда по земле ходили динозавры
Предлагаю всем посетелям форума провести акцию: "Сделаем вместе ФастРепорт лучше" и в ее рамках отстаивать важные пункты функциональности ФР вплоть до того, чтобы засучив рукава править исходный код, дабы не отвлекать разработчиков от процесса убеждения нас самих в том, что функциональность, которую мы хотим, на самом деле нам не нужна. Все-таки они не используют ФР в конечных приложениях так, как это делаем мы, а потому вряд ли смогут нас полностью понять, поэтому к недопониманию наших потребностей будем относиться с пониманием...
К примеру, вычисляются у меня в отчете денежные суммы и я хочу показывать числа с двумя знкаками после запятой, причем положительные числа со знаком "+", отрицательные - со знаком "-", а нули - в виде "0.00". Для некоторых ячеек расчет невозможен и я хочу оставить их пустыми.
Сделал следующим образом: создал переменную Result, которая получает результат расчетов. Если расчет невозможен, то переменной присваивается Null. Далее в текстовом поле эту переменную вывожу используя функцию FormatFloat:
Однако в тех ячейках, где <Result> = null появляется сообщение об ошибке:
Could not convert variant of type (Null) into type (Double).
Логично, функции FormatFloat передается Null и она его не может преобразовать в вещественное значение. В принципе, так и должно быть, преобразовываем в следующий код:
Здесь вроде бы все предусмотрено: если <Result> = null, то возвращаем пустую строку, если нет - то делаем FormatFloat (к сожалению, функцию типа VarIsNull я не нашел, поэтому преобразовываю <Result> в строку и проверяю, не является ли пустой она).
Однако сообщение об ошибке (Could not convert variant of type (Null) into type (Double)) никуда не пропадает. Как показал следственный эксперимент, ФР в любом случае пытается исполнить FormatFloat, даже если условие в приведенной конструкции IIF является true и необходимо вернуть пустую строку. Налицо поведение ФР в данной ситуации вызывает проявление синдрома обманутых ожиданий пользователя и требует пояснений.
Компоненты тоже можно сказать самописные DBX переделаный. Кроме этого пришлось ещё в компоненте сделать принудительно переоткрытие Detail наборов в событии AfterOpen, иначе они не всегда переоткрываются.
Может быть, но что делать в такой ситуации: имеется не один десяток отчётов, печатные формы которых собраны на 2.51. Переделывать их оч. долго, у людей нет на это времени. Поэтому я решил использовать и версию 2.51 и 3.03 одновременно (2.51 только просмотр). Печ. формы хранятся в БД. Но как отличить их версии не вводя ещё одно поле в таблицу БД? Сейчас при попытке загрузить в 3.03 формы сделанные в 2.51 выдаётся сообщение и всё. Если бы был exception можно было бы использовать try except для перехвата ошибки.
Кстати, почему-то печатные формы собранные в 3.0 не загружаются в 3.03
От языка не зависит.
Одинаково кнопки в тулбаре не работают и в Delphi5 и в BCB6.
Однако редактор свойств работает правильно, хоть это спасает.
Но все равно нехорошо.
Судя по тому, что у других таких проблем нет, может причина в некорректной инсталляции/деинсталляции FR ?
С самого начала у меня была демка 2.46.
Потом купили 3.0. Ставил версии 3.01, 3.02, 3.03, 3.04.
Старался переставлять версии корректно.
Кнопки в тулбаре не работали ни в одной версии FR3.
Access violation появился в 3.04.
2. При включении frxReport.OldStyleProgress=true события OnProgressStart и OnProgressStop отрабатывают и при просмотре, но при этом отчет НЕ РАБОТАЕТ ("List index out of bounds...")
Кроме того, почему нельзя вообще отключить Progress ?
Может добавить свойство ShowProgress ?
Вопрос следующего плана: можно ли переменным присваивать строковые значения, с помощью процедуры Set (Особенно, если в этих переменных ранее были числа)?
У меня что-то не выходит.
Делаю так:
Ругается: Ошибка в выражении '0,00': ';' expected
Делаю так:
Ругается: Ошибка в выражении 'Privet': Неопределенный идентификатор: 'Privet'
Почему это вообще происходит какая-то дополнительная обработка моей строки, поиск идентификаторов? Может это где-то отключается?
Поставь точку с запятой в конце строки. Вот так
'+#,##0.00;-#,##0.00;0.00;'
Set('Result', 'Privet'); - так 'Privet' это идентификатор, которого нет.
Попробуй так
Set('Result', "Privet");
Как все делают:
1. Выбираем пункт Save As меню File
2. Указываем выриант экспорта, вводим имя и нажимаем Ок
3. Выдаем настройки экспорта.
Всё! В 2.51 так и было! Зачем это убрали!
В версиях, начиная с 3.0 экспорт сделан так (если спрятаны кнопки окна просморта, так надо):
1. Выдаем форму с кучей радиобаттонов или ещё как-нибудь
2. Анализируем какой из них помечен и вызываем метод Export с нужным фильтром
Ну это же не удобно!
Большая просьба вернуть метод SaveToFile
если код отчета меньше какой то цифери значит это 2.53
больше значит 3
и все работает
ни двойные кавычки, в которые включается строка.
В первом случае сообщение несколько изменяется - вместо "";" expected" пишет "expression expected ", но результат, фактически тот же.
Ну а во втором - интерпретарор отказывается воспринимать строку с двойными кавычками, что, в общем-то понятно, поскольку в PascalScript, который я использую, двойные кавычки для выделения строк не применяются.
Проверил в демке - все работает.
Но от этого не легче.
Причина ведь должна быть. Может какие хвосты от старых версий...
если нажать кнопку INSERT текст также смещается
снова жмем кнопку инсерт никакой реакции.
ИМХО пустая трата времени. Багов больше чем "фич" по сравнению с 2.4х ...
1.Проблемы с master-detail IBXQuery, работает не стабильно. Возникают ошибки 'field "" has no dataset'(чаще) или просто 'AV read 00000000'. При запуске из среды Delphi ошибки происходят почти всегда, из ОС не всегда. Testcase отправлен на tz@fast-report.com
2.При помещении на диалоговую форму IBXQuery возбуждается исключение:
...EIBClientError ... "Empty SQL Statment" ...
Это же происходит при копировании (не при вставке!), и отмене удаления
нового IBXQuery. Если запускать проект не из среды Delphi, вроде бы такого не происходит.
3.После копирования-вставки IBXQuery на диалоговую форму, при щелчке на
кнопку списка свойства Master вставленного обьъекта, возбуждается
исключение:
...EStringListError ... "List index out of bounds(-1)" ...
Это происходит как при вставке из текущего отчета, так и из другого,
и независимо от установленного значения свойства Master. И при запуске из среды Delphi, и при запуске из ОС.
4.Почему нельзя удалить компоненты кнопкой Del на диалоговой форме, тем
более, что есть Undo? На обычной странице Page компоненты удаляются
нормально кнопкой, хотя и на странице и на форме в контекстном меню
горячая клавиша в строке Delete не видна.
Ну, по поводу этого я и сам догадывался, что где-то оно должно быть. Вот только документацию от начала и до конца читать не люблю, сделал поиск по слову "Set", ничего подходящего не нашлось, написал в форум.
Спасибо за помощь.
1. Почитай один из моих ответов этой ветке про FieldByName
3. Report->Data, надо все прокрыжить
4. Сказали что в 3.05 будет
Александр, спасибо за быстрый ответ, с новым frxDBSet.pas проблем в master-detail вроде бы наблюдается.
To Markus: Спасибо, но не понятно при чем тут FieldByName?
Ну например я.
Я уже переделал где то 70% своих отчетов с FR2.5x на FR3.
Особо неразрешимых проблем пока не было. А те проблемы что у меня были большей частью уже решены или исправленны в FR3 Александром.
Ссылки на поля Fields наборов в новой версии перекладываются в TStrings.Objects. Возможно в твоем случае frxDBSet.pas поможет, если он отличается от того что в 3.04. Поскольку я столкнулся с тем что эти ссылки не всегда указывают туда куда надо (при каждом переоткрытии набора Fields пересоздается), мне пришлось явно прописать, чтобы данные брались из полей набора. Стало намного стабильнее. Подождем 3.05 может ещё чего исправили.
В отчёте используется подзапрос сделанный на frxADOQuery. Причём выборка должна идти из временных таблиц текущего подключения. В версии 2.51 была возможность выбирать одно из подключений проекта в качестве подключения frxADOQuery. В версии 3.03 это сделать нельзя.
Почему столь удобный функционал был убран?
Есть некая форма. На форме лежит frxReport, frxDesigner, frxDBDataset, frxPreview. Во время выполнения показывается preview отчета. Далее:
1. Нажимаем F4: загружается дизайнер с отчетом;
2. Нажимаем F4: дизайнер перерисовывается (такое впечатление, что пересоздаётся), на этот раз с пустым отчетом (на странице не видно ни одного компонента), также исчезает информация по свойствам;
3. Это новое окно невозможно закрыть по "x" и не работает пункт меню Exit;
4. Нажимаем еще раз в этом окне F4 и получаем окно Preview, которое можно закрыть, после чего возвращаемся в вызывающую форму;
Используется: D5, FR 3.04.
ЗЫ. Ради интереса проверил это же на демке от 3.04. Аналогичное поведение после нажатия кнопки Design и F4 в дизайнере.
ЗЫЫ. Ради такого же интереса проверил то же на демке от 3.0 alpha 8. Не наблюдается.