"EhLib.Com"
https://forum.ehlib.com/ru/

Lazarus: "проброс" lookup поля в MemTable через DataSetDrive
https://forum.ehlib.com/ru/viewtopic.php?f=4&t=2972
Страница 1 из 1

Автор:  edgen [ 27 июл 2020, 16:30 ]
Заголовок сообщения:  Lazarus: "проброс" lookup поля в MemTable через DataSetDrive

Добрый день!

Окружение: Lazarus 2.1, Ehlib 9.5.021 (собрана без FPC_CROSSP), Windows 10.

Используется связка TZQuery -> TDataSetDriverEh -> TMemTableEh -> TDataSource -> TDBGridEh.
В ZQuery есть lookup поле. В случае, если исключить из связки DataSetDriverEh и MemTableEh, всё работает как надо, значение поля отображается в гриде. Для того, чтобы работала группировка, подключил DataDriver и MemTable. Лукап поле в гриде перестало отображаться (и заголовок колонки стал просто именем поля, то есть соответствующий объект TField не находится). MemTable при попытке создать статические поля также не видит данное поле (оно просто отсутствует в списке, равно как и ещё одно вычисляемое поле).

По документации, вроде, подобного происходить не должно. Подскажите, пожалуйста, есть ли возможность как-то заставить работать такую функциональность на этих компонентах или придётся переписывать запрос так, чтобы в TZQuery соответствующий lookup появлялся как просто поле?

Спасибо!

С уважением
Евгений.

Автор:  edgen [ 31 июл 2020, 14:22 ]
Заголовок сообщения:  Lazarus: "проброс" lookup поля в MemTable через DataSetDrive

Дополнение: если я создаю lookup-поля в MemTable, то получаю при открытии MemTable ошибку "Operation not allowed, dataset "%s" is not on an edit or insert state".
Подскажите, что я делаю не так?

На всякий случай: TZQuery - это библиотека ZeosDBO.

Автор:  EhLibSupport [ 01 авг 2020, 00:24 ]
Заголовок сообщения:  Re: Lazarus: "проброс" lookup поля в MemTable через DataSetD

Добрый день.

При работе с MemTableEh в режиме YourDataSet-TDataSetDriverEh-MemTableEh
в MemTableEh передаются поля только с типом FieldKind=fkData.
Calculated и Lookup поля не переносятся.
Их надо создавать в MemTableEh отдельно.

При классическом сценарии создания Lookup полей MemTableEh подобных ошибок возникать не должна.
Напишите, пожалуйста, пошагово как воспроизвести подобную ошибку в MemTableEh, по возможности с испольнованием только стандартных компонент.

Автор:  edgen [ 05 авг 2020, 17:35 ]
Заголовок сообщения:  Re: Lazarus: "проброс" lookup поля в MemTable через DataSetD

Проблема решена. Оказалось, дело в следующем: поле, которое должно быть результатом просмотра справочника собиралось в запросе с помощью concat(). Такое поле TZQuery создаёт с типом ftMemo. Почему-то (это пока выяснить не удалось) TMemTableEh не хочет в качестве LookupResult мемо-поле.

Соответственно, решением является явный вызов CAST() в теле запроса, тогда поле создаётся как ftString и всё работает.

Страница 1 из 1 Часовой пояс: UTC
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/