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

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

DBLookupComboBox, KeyValue, два ключевых поля... Что делать? [D6, Oracle]


Denis_P ©   (2002-08-28 15:54:00) 

Здравствуйте, господа!
Возникла такая вот проблемка... Нигде не смог найти подобное, так что если я сильно повторяюсь, то, пожалуйста, ногами не пинайте!...
Собственно проблема: есть DBLookupComboBox, при помощи к-рого выбирается нужное значение. Св-во DataSource не используется. Ключевых поля два. Но в KeyField можно указать только одно поле, тем не менее выбранное значение (а точнее - значения, т.к. их два) получаем через ListSource.DataSet .
А вот как сделать, чтоб DBLookupComboBox отображал нужную нам запись по _ДВУМ_ ключевым полям??? Метод ListSource.DataSet.Locate исправно работает, но как известно DBLookupComboBox не отображает перемещения по ListSource.DataSet ...
Как выйти из подобной ситуации с меньшими потерями?
Заранее спасибо! Денис.


MW   (2002-08-30 10:19:00) [1]

Если эти два ключевых поля являются Primary key, то для них поумолчанию создается unique index в качестве constraint, если нет то индекс можно и сделать. Даже по двум полям.
Если справочник фиксированной длины и не будет изменяться, то можно использовать кластер или хешированный кластер в зависимости от потребностей и объемов.
А ip3000 можно купить, только дорого насколько я помню.


Denis_P   (2002-08-29 20:01:00) [2]

Всем спасибо за участие и ответы!
Сщвет MW понятен, и я так пока и делаю, но есть "боязнь", что в случае большого справочника KeyField := UnionKey будет долго выполняться, по причине отсутсвия индекса... Но тем не менее!..

Уважаемый ShuraGrp, а не подскажете где это можно найти/скачать?
Денис.


ShuraGrp   (2002-08-29 11:25:00) [3]

Используй wwDBLookupCombo (из набора ip3000) там можно хоть пять


MW   (2002-08-29 10:13:00) [4]

Перестрой запрос:
select pkey1 || pkey2 UnionKey, DataName
from AnyTable

В KeyField := UnionKey

Получится составной ключ.
Подходит?


ЮЮ   (2002-08-29 03:08:00) [5]

Переделай один из dblookupов и положи в Кладовку.
Или сделай два dblookup-а, один на одно поле ("главное"), а второй на другое("подчинённое") и программно обрабатывай изменения в "главном" поле, перестраивая ListSourse.Dataset dblookup-а "подчинённого" поля


Mike Kouzmine   (2002-08-28 19:23:00) [6]

Посмотрел несколько dblookupов, там тоже только одно :(


Denis_P   (2002-08-28 19:18:00) [7]

Ну эт совсем другое.... :-(


Mike Kouzmine   (2002-08-28 18:16:00) [8]

Ну, например, лукап поле в таблице. Насколько помню, там это можно.


Denis_P   (2002-08-28 17:55:00) [9]

А какие еще есть варианты, если надо предоставить для выбора значения из таблички?
Мож я чего не знаю...


Mike Kouzmine   (2002-08-28 17:06:00) [10]

А обязательно DBLookUp?


Denis_P   (2002-08-28 17:03:00) [11]

Нет. Такое не проходит... :-(((


Mike Kouzmine   (2002-08-28 16:34:00) [12]

KeyField := "Val1;Val2"


Denis_P   (2002-08-28 15:59:00) [13]

Намёк не понял... :-(((
Если можно, то поразвёрнутей пожалуйста!.. :-)


Mike Kouzmine   (2002-08-28 15:55:00) [14]

Val1;Val2


Наверх

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