Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Использование DBLookUpComboBox [D6, Paradox]


Юлия ©   (2002-11-24 16:02:00) 

В раскрывающемся списке находятся не все значения поля, а только то, которое соответствуют значеню поля в дочерне таблице. Почему? Как это исправить?
Установленные значения:
DataSource – родительская таблица
DataField – поле в родительской таблице
ListSource – дочерняя таблица
ListField – поле, значения которого должны отображаться в Combo
KeyField – ключевое поле дочерней таблицы


Юлия   (2002-11-25 20:36:00) [1]

Ой, спасибо, я поняла. Просто в таблице Banks у меня было установлено значение MasterSourсe. Вот он и фильтровал...


mike-d   (2002-11-25 20:32:00) [2]

Проверьте, не привязана ли Ваша Banks к какой нибудь таблице (MasterSource и MasterFields). Если да, то таким образом справочники не используются, т.к. мы не сможем получить всех значений справочника.
Если по логике программы Вам необходимо установить связь master-detail к Banks, тогда используйте в качестве справочник SQL запрос из Banks (SELECT * FROM Banks ORDER BY NameBank), чтобы все значения справочника были доступны. А при изменении Banks переоткрывайте запрос.


Юлия   (2002-11-25 18:55:00) [3]

Именно так я и делаю, но в выпадающий список заносится почему-то только одно значение - которое соответствует текущей записи Customer, хотя в Banks несколько записей!!! Причем, при движении по таблице Customer значение в DBLookUpComboBox меняется - отображется правильно, но только одно. :(((


mike-d   (2002-11-24 20:39:00) [4]

>Может, я неправильно понимаю, для чего вообще нужен DBLookupComboBox?
Скорее всего так оно и есть
Если ListSource дочерняя таблица, как Вы пишите, то и видеть будете только подчиненные записи определенные ключом в MasterFileds дочерней таблицы.
Стандартное применение Lookup полей заключается в подстановке значений элемента таблицы элементами из справочника. Например:

1-ая таблица (какие-то данные) (Customer)
1. ID клиента
2. Наименование клиента
3. ID банка обслуживающего клиента

2-ая таблица (справочник) (Banks)
1. ID банка
2. Наименование банка
3. И т.д.

Создаем Lookup поле в первой таблице
DataSource - Customer
DataField - Customer.FieldByNum(3)
ListSource - Banks
KeyField - Banks.FieldByNum(1)
ListField - Banks.FieldByNum(2)

Теперь Вы получаете возможность при вводе клиента в DBLookupComboBox выбирать наименования банков, а в Customer будут попадать их ID. Также при изменении наименования или реквизитов банка Вам не нужно заботиться об изменении их в таблице клиентов, все идет автоматом. Правда при изменении ID банка нужно позаботиться об изменении из в Customer, но это уже вопрос ссылочной целостности (Referential Integrity) и его решение зависит от движка БД, которым Вы пользуетесь.

Опишите проблему, почему Вы именно так хотите применить Lookup поле, может быть сумеем помочь...


Юлия   (2002-11-24 19:07:00) [5]

Мастера, помогите пожалуйста! Может, я неправильно понимаю, для чего вообще нужен DBLookupComboBox?


Наверх

Титульная страница Поиск, карта сайта Написать письмо