Господа разработчики, пожалуйста, переставьте одну строку в коде
                    Уважаемые разработчики, я уже писал об этом баге  здесь.
(а также здесь), здесь, а также в "стандартном" баг-репорте.
Пожалуйста, в модуле frxCustomDB, в определении класса TfrxDBLookupComboBox в секции published, разместите свойства ListField и KeyField после свойства DataSetName.
Чтобы секция published стала выглядеть вот так:
Далее - подробное описание бага.
                            (а также здесь), здесь, а также в "стандартном" баг-репорте.
Пожалуйста, в модуле frxCustomDB, в определении класса TfrxDBLookupComboBox в секции published, разместите свойства ListField и KeyField после свойства DataSetName.
Чтобы секция published стала выглядеть вот так:
  TfrxDBLookupComboBox = class(TfrxDialogControl)
...
  published
    property AutoOpenDataSet: Boolean read FAutoOpenDataSet write FAutoOpenDataSet default False;
    property DataSet: TfrxDBDataset read FDataSet write SetDataSet;
    property DataSetName: String read GetDataSetName write SetDataSetName;
    property ListField: String read GetListField write SetListField;
    property KeyField: String read GetKeyField write SetKeyField;
    property DropDownWidth: Integer read GetDropDownWidth write SetDropDownWidth;
    property DropDownRows: Integer read GetDropDownRows write SetDropDownRows;
    property OnClick;
    property OnDblClick;
    property OnEnter;
    property OnExit;
    property OnKeyDown;
    property OnKeyPress;
    property OnKeyUp;
    property OnMouseDown;
    property OnMouseMove;
    property OnMouseUp;
  end;
Далее - подробное описание бага.
Комментарии
Описание ошибки:
При использовании TfrxDBLookupComboBox, когда в качестве поля ListField используется поле источника данных с алиасом, отличным от имени поля набора данных (например, "Компания" вместо "Company"), выбрасывается ошибка "Поле не найдено":
- при вызове метода TfrxReport.ShowReport() - через короткий промежуток после начала просмотра отчета
- при вызове метода TfrxReport.DesignReport() - после завершения просмотра отчета
Способ воспроизведения:
1. В папке \Demos\Main находим проект FRDemo.dpr, открываем.
2. Открываем Unit2.pas, находим CustomersDS. Вызываем "Edit Field Aliases..."
Для поля "Customer" задаем алиас "Компания", жмем ОК.
3. Сохраняем, компилируем, запускам приложение.
4. В деревце с отчетами открываем папку "Dialogs and script".
Выбираем отчет "Hello FastReport", жмем кнопку Design.
5. Меню - Отчет - Данные - ставим галку "Customers", жмем ОК.
6. Открываем форму диалога DialogPage1.
На форму бросаем DBLookupComboBox, настраиваем его свойства:
Запускам, видим, видим, что DBLookupComboBox работает, жмем ОК, наблюдаем preview, закрываем Preview - все ОК.
Меняем значение ListField.
Запускам, видим, видим, что DBLookupComboBox работает, жмем ОК, наблюдаем preview, закрываем Preview - получаем Exception.
Сохраняем отчет (Ctrl+S), закрываем дизайнер, жмем Preview, видим, что DBLookupComboBox работает, жмем ОК, наблюдаем Exception на фоне Preview.
Причина:
Модуль unit frxCustomDB;
При десериализации объекта TfrxDBLookupComboBox свойство ListField записывается/восстанавливается раньше, чем свойство DataSet.
Поэтому код
- не выполнит преобразования алиаса в физическое имя поля, и свойству ListField внутреннего компонента FDBLookupComboBox в нашем случае будет присвоено значение "Компания" (вместо "Company").
Багофикс:
Все, что нужно сделать - поменять порядок описания членов класса TfrxDBLookupComboBox в секции Published: - свойства KeyField и ListField разместить после свойства DataSetName;
Секция published теперь должна выглядеть так:
Код:
Совершенно непонятно, что мешает сделать такое исправление.
и каждый раз я им об этом пишу... кое что правда исправляют.. но очень редко.
Все будет исправлено в новой сборке