![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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