DBLookupComboBox - не отображается текущее значение

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

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

Ответить
MaxIvanych
незнакомец
Сообщения: 5
Зарегистрирован: 14.01.2011 23:27:48

DBLookupComboBox - не отображается текущее значение

Сообщение MaxIvanych »

Добрый день,

В базе есть две таблицы: tblWorkers и slvDepartments. В первой - список сотрудников, во второй - список отделов. Связь идет по полям idDepart и ID соответственно. Настраиваю под эту пару DBLookupComboBox:
DataField = 'IdDepart'
DataSource = dsWorker
KeyField = 'ID'
ListField = 'DepatName'
ListFieldIndex = 0
ListSource = dsDepart
LookupCache = False
Результат: виден список значений, но при переходе на существующую запись не происходит отображения соответствующего значения из справочника.
Можно ли победить данную неприятность?
Lazarus 0.9.29, fpc 2.5.1, MySQL 5.1, Ubuntu.
Kitayets
постоялец
Сообщения: 174
Зарегистрирован: 05.05.2010 21:15:24

Сообщение Kitayets »

Не совсем понятна проблема объясните подробнее, что работает не правильно и что должно происходить.
MaxIvanych
незнакомец
Сообщения: 5
Зарегистрирован: 14.01.2011 23:27:48

Сообщение MaxIvanych »

Я лучше нарисую. Есть сотрудник, который работает в некотором отделе. На приведенном на картинке примере - в администрации. Внешний ключ таблицы tblWorkers (idDepart) не пуст, запись тестовая. Выпадающий список по таблице-словарю slvDepartments с первичным ключом ID заполнен.
В DBLookupComboBox в текстовом поле, по идее, должна быть надпись "Администрация". Ее нет, в чем, собственно и заключается проблема.
Заранее благодарю за любую помощь.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

может дело в ключевом столбце, столбец id должен быть скрыт, но он же изменяет значение в таблице. Какое именно поле отображать, а из какого брать id нужно настроить
MaxIvanych
незнакомец
Сообщения: 5
Зарегистрирован: 14.01.2011 23:27:48

Сообщение MaxIvanych »

Ism писал(а):может дело в ключевом столбце, столбец id должен быть скрыт, но он же изменяет значение в таблице. Какое именно поле отображать, а из какого брать id нужно настроить

То есть, настроек из первого поста недостаточно? Где и что еще можно попытаться настроить?
Kitayets
постоялец
Сообщения: 174
Зарегистрирован: 05.05.2010 21:15:24

Сообщение Kitayets »

Попробовал собрать проект по Вашим настройкам. Только использовал sqlite. Всё отрабатывает как должно быть. при переходе по записям мастер таблицы меняется отдел в комбобоксе.

всё это на win32 lazarus 0.9.29 (SVN 28797) fpc 2.4.3.

Вполне возможен глюк в отрисовке виджета, попробуйте скомпилировать проект под другой виджетсет (Qt/Gtk2).

Добавлено спустя 8 минут 51 секунду:
Кстати собрал под gtk 2 - тоже нормально отрабатывает. Qt на виндовой машине нет, по этому проверить не могу.

ЗЫ: ГТК под виндой выглядит как всегда - УГ.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
xcod
постоялец
Сообщения: 108
Зарегистрирован: 07.08.2009 12:37:23

Сообщение xcod »

если еще актуально то отвечу
была такая проблема со стандартным DBLookupComboBox
оказалось тип данных первичного ключа в MySQL и в лазарусе был разный
хотя RxDBLookupCombo от alex'a работал как надо
Kitayets
постоялец
Сообщения: 174
Зарегистрирован: 05.05.2010 21:15:24

Сообщение Kitayets »

Кстати, я попробовал такой пример - создал в TSQL - lookup Field, - и в таблице DBGrid - возникла такая же проблема как у топикстартера. Значения не отображаются, а в списке нужные значения присутствуют. Победить этот глюк так и не смог. :(

Добавлено спустя 10 минут 32 секунды:
На работе ограничение в отправки файлов - до 7КБ, приходится картинки резать по самое не балуйся.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Ответить