У меня есть главная форма, на которой размещен DBGrid. DBGrid связан с SQLQuery. В SQLQuery добавил все поля плюс еще одно вычисляемое и два лукап. В гриде все отображается, лукап-поля работают прекрасно. Есть еще одна форма, которая предназначеня для добавления/редактирования записей грида. Элементы формы также связаны с SQLQuery. На ней есть два DBLookupComboBox, которые соответствуют лукап-полям грида. Так вот с ними то и проблема. Какое-бы я значение не выбрал это изменение никак не отражаются в гриде (после подтверждения изменений, конечно). Кроме как если я выберу значение, соответствующее первой записи связанного с лукап-полем LookupSQLQuery (или по-другому, первой записи таблицы). Такое изменение отражается. После этого DBLookupComboBox будет любое выбранное значение менять на первоначальное (после перехода на другой элемент формы). Надеюсь понятно объяснил проблему?
P.S. Lazarus 0.9.30.2, БД Firebird 2.5, компоненты стандартные.
Добавлено спустя 11 часов 44 минуты 50 секунд:Начал копать исходники. Выяснил, что в недрах компонента вызывается метод Locate датасета. Для проверки решил проверить работу сего метода на своем LookupSQLQuery. Пишу:
- Код: Выделить всё
LookupSQLQuery.Locate('name', 'Товарный чек', [])
Метод возвращает ложь, хотя эта запись есть. Взял удалил из таблицы все записи с русскими символами и добавил только на латинице. После этого DBLookupComboBox заработал (Locate правда не проверял). Но как сделать, чтобы он и с русскими символами правильно работал? Не могу разобраться.
Расскажите как вы работаете с компонентом DBLookupComboBox. Ни у кого подобных проблем не возникало?