![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DBLookupComboBox [D5, MS Access]
Silla © (2003-07-07 15:09:00)Привет Мастерам!
У меня есть две таблицы
TblMaterialType
TblMaterial
Связаны они один ко многим
TblMaterialType --> TblMaterial
При помощи TDBLookupComboBox (список)
выполняется навигация
При открытии таблиц у DBLookupComboBox"a
ничего не отображается
Ворос: Как сделать так, чтобы он не был пустым?
PS. DataField & DataSource - не заполняю.
Fuelfire (2003-07-08 17:43:00) [1]Поле соответствия имитирует реальное поле, выполняя подстановку значения из другой таблицы, соответствующее имеющемуся ключевому значению. Допустим мы связываем Таблицу 1 с Таблицей 2 по ключевому полю.
Создание.
1. Добавь с помощью редактора полей в конец Таблицы 1 новое поле (в конец желательно, чтобы не влиять на порядок полей, доступ к которым осуществляется по индексам)...
2. Введи имя поля, тип и укажи - Lockup...
3. В определении поля соответствия в списке KeyFields укажи поле, связывающее таблицы между собой. В списке DataSet выбери Таблицу 2. В списке Lockup Keys укажи поле ID Таблицы 2, связанное с полем Таблицы 1. В Result Field укажи поле Таблицы 2, подставляемое вместо ида Таблицы 1...
Отображение.
1. Добавляешь TDBLockupListBox
2. DataSource должно указывать на источник исходных данных, то есть на соурс Таблицы 1
3. DataField должно указывать на поле Id, по которому выполняется связь с Таблицей 2.
4. ListSource должно указывать на источник данных, откуда извлекаются значения для заполнения списка..
5. KeyField определяет ключевое поле этого источника, привязываемое к полю, указанному в св-ве DataField
6. ListField указывает поле, из которого будут браться значения для списка...
По-моему, теперь проблем у тебя возникнуть не должно...
Silla (2003-07-08 17:11:00) [2]Поначалу вопрос был про люкап
я и хотел услышать про него
а не как строить свою задачу
не могу же я тебе написать все тз
иначе форум превратится в какое-нибудь СП
DenK_vrtz (2003-07-08 16:12:00) [3]Начинал с того, что было две таблицы. Теперь их оказывается намного больше.
Я не вижу проблемы! Опиши полностью задачу, а то гадаем на кофейной гуще!!!
А лучше попробуй сам сделать, для самоудовлетворения :-)
Silla (2003-07-08 16:04:00) [4]На мой взгляд
выпадающий список не помешал бы
И все на одной форме вмещается
DenK_vrtz (2003-07-08 15:27:00) [5]А что мешает?
Silla (2003-07-08 15:24:00) [6]Поначалу так и сделал
Есть необходимость
разбить по изготовителям и по группам
DenK_vrtz (2003-07-08 11:30:00) [7]Silla © (08.07.03 11:21), если таблицы связаны, то два грида первый - тип, второй - материалы! Идешь по первому гриду, а во втором видишь детализацию!
Silla (2003-07-08 11:21:00) [8]>DenK_vrtz
По поводу структуры таблиц - все в порядке
Необходимо как можно больше разгрузить пользователя
Помимо типов существуют свойства, виды и др.
Выбрал тип
Получил список видов,
Выбрал вид
Получил список материалов по свойствам
Выше писал, что
таблица материалов имеет мастерсоурс = таблице типов
>ЮЮ
>только выбор записи в ListSource вовсе не означает, что эта >запись станет текущей в ListSource.DataSet
Проверял - курсор переходит на текущую строку
ЮЮ (2003-07-08 09:20:00) [9]>Тогда это не для DBLookupComboBox.
Почитайте об этом компоненте подробней - у него другие задачи.
Если у него не указывать DataSource и DataField, то вполне можно использовать для выбора записи, только выбор записи в ListSource вовсе не означает, что эта запись станет текущей в ListSource.DataSet
интересующийся (2003-07-08 09:06:00) [10]>Silla © (07.07.03 16:19)
>Необходимо сделать выпадающий список по которому
>я выбираю тип
>а в гриде отображается материал который относится только
>к этому типу
>Таблица материалов имеет мастерсоурс = таблице типов
Как я понял Вы хотите сделать фильтрацию в гриде
по значению типа материала, выбранного из списка.
Тогда это не для DBLookupComboBox.
Почитайте об этом компоненте подробней - у него другие задачи.
DenK_vrtz (2003-07-08 08:16:00) [11]Silla © (07.07.03 17:06), разберись, как мне кажется со структурой или с тем, что хочешь получить.
Вот смотри:
>>я выбираю тип
это обыкновенный lookup поле (делается в дизайнере) к таблице типов, здесь все ОК
>>а в гриде отображается материал который относится только
>>к этому типу
а по какому условию ты будешь отбирать материал, когда таблица материалов не имее ни одной записи? Список материалов изначально будет пустым!
По моему, в твоем случае на материал ни какого списка формировать не надо, а просто необходимо ввести название материала после ввода его типа. Или, как говорил выше, пересматривай структуру.
ЮЮ (2003-07-08 03:30:00) [12]>При открытии таблиц у DBLookupComboBox"a ничего не отображается
Отображается тот факт, что DBLookupComboBox.KeyValue = NULL. Установи нужное значение и будет отображаться что нужно, например, значение ключевого поля активной на данный момент (первой, если сразу после открытия) записи из ListSource:
DBLookupComboBox.KeyValue :=
DBLookupComboBox.ListSource.DataSet.FieldByName(DBLookupComboBox.KeyField).Value;
Silla (2003-07-07 17:06:00) [13]Таблица типов
Id - Идентификатор
Name - Наименование
Таблица материалов
Id - Идентификатор
IdTypeMaterial - внешний ключ из Таблицы типов
Name - Наименование
IdMaterialUnit - внешний ключ из таблицы Единиц измерений
DenK_vrtz (2003-07-07 16:33:00) [14]Может структуру таблиц покажешь?
Silla (2003-07-07 16:19:00) [15]Может я неправильно выбрал компонент
Необходимо сделать выпадающий список по которому
я выбираю тип
а в гриде отображается материал который относится только
к этому типу
Таблица материалов имеет мастерсоурс = таблице типов
DenK_vrtz (2003-07-07 16:01:00) [16]Val © (07.07.03 15:57), так почему же он DataField & DataSource не заполняет?
Вопрос(Ответ) про look up поля, чуть ниже в форуме!
Val (2003-07-07 15:57:00) [17]>DenK_vrtz © (07.07.03 15:52)
автор хочет видеть текущее значение, как я понял, и иметь возможность выбрать другие.
DenK_vrtz (2003-07-07 15:52:00) [18]Тогда я не понял!?
>>Ворос: Как сделать так, чтобы он не был пустым?
и тут же
>>Конено заполняю, получается выпадающий список
хде логика?
Silla (2003-07-07 15:50:00) [19]Конено заполняю, получается выпадающий список
DenK_vrtz (2003-07-07 15:22:00) [20]да и KeyField заодно!