DBLookupComboBox - выбирается только первая запись

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

DBLookupComboBox - выбирается только первая запись

Сообщение 7bit » 12.12.2011 21:11:35

У меня есть главная форма, на которой размещен 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. Ни у кого подобных проблем не возникало?
7bit
новенький
 
Сообщения: 41
Зарегистрирован: 01.10.2011 12:35:52

Re: DBLookupComboBox - выбирается только первая запись

Сообщение Brainenjii » 13.12.2011 09:21:09

Если проблема в русских символах, то вполне вероятно что загвоздка в кодировке. Тем паче, что Lazarus работает с UTF8, что вызывает некоторые проблемы в работе на MS Windows. Посмотрите, в какой кодировке содержатся данные / создана база||таблица и какой указан COLLATE
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: DBLookupComboBox - выбирается только первая запись

Сообщение 7bit » 13.12.2011 17:56:34

Все разобрался. У себя в коде перемудрил. Спасибо Brainenjii за ответ.
7bit
новенький
 
Сообщения: 41
Зарегистрирован: 01.10.2011 12:35:52


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 238

Рейтинг@Mail.ru