Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизLookup-поле в DBGridEh Найти похожие ветки
← →
kalishenko (2004-04-09 10:44) [0]Народ, помогите разобраться с гридом из EhLib. Никак не могу настроить lookup-поле в этой сетке. Да и хелп по нему какой-то скудный. Расскажите, если не трудно по шагам.
← →
kalishenko (2004-04-09 10:44) [0]Народ, помогите разобраться с гридом из EhLib. Никак не могу настроить lookup-поле в этой сетке. Да и хелп по нему какой-то скудный. Расскажите, если не трудно по шагам.
← →
Sergey13 © (2004-04-09 11:01) [1]Настраивай не грид а датасет. И все будет тип-топ.
← →
Sergey13 © (2004-04-09 11:01) [1]Настраивай не грид а датасет. И все будет тип-топ.
← →
kalishenko (2004-04-09 11:45) [2]А че в нем настраивать-то? И какое отношение имеет датасет к конкретному полю, которое я хочу сделать lookup. Я пытался настроить Columns -> Выбираю соот. поле -> DropDownBox -> ListSource -> а уже в нем DataSet. Далее в MasterSource делаю связь по двум полям, которые являются ключевыми в своих таблицах, но после запуска проги, нажимая на соответствующее поле появляется какой-то "калькулятор", а не список значений, заведенный в подчиненной таблице. Что не так?
← →
kalishenko (2004-04-09 11:45) [2]А че в нем настраивать-то? И какое отношение имеет датасет к конкретному полю, которое я хочу сделать lookup. Я пытался настроить Columns -> Выбираю соот. поле -> DropDownBox -> ListSource -> а уже в нем DataSet. Далее в MasterSource делаю связь по двум полям, которые являются ключевыми в своих таблицах, но после запуска проги, нажимая на соответствующее поле появляется какой-то "калькулятор", а не список значений, заведенный в подчиненной таблице. Что не так?
← →
Johnmen © (2004-04-09 12:32) [3]Скажем так - какое отношение имеют средства отображения (всякие гриды) к отображаемым данным (датасет) ?
Раздел lookup fields и ссылки из хелпа читать до полного просветления...
← →
Johnmen © (2004-04-09 12:32) [3]Скажем так - какое отношение имеют средства отображения (всякие гриды) к отображаемым данным (датасет) ?
Раздел lookup fields и ссылки из хелпа читать до полного просветления...
← →
ПавелТ (2004-04-09 12:56) [4]И так по порядку, как в TDBGridEh сделать лукап поле.
На самом деле лукап поле - это специальный тип поля в датасете.
Вот как это делается в IBX (для других датасетов думаю аналогично, но я их редко использую):
Пусть есть две таблицы А и LINK.
Таблица А содержит поля: (Integer)A_ID, (varchar(20))NAME
Таблица LINK: (Integer)LINK_ID, (Integer)A_ID foreign key A.A_ID
Мы хотим чтобы у нас отображались в сетке данные из LINK, но вместо A_ID там было A.NAME с возможностью выбора
1. Бросаем на форму IBDataSet1, в SelectSQL следующее "select LINK_ID, ID_A from LINK"
2. Бросаем на форму IBQuery1, в SQL "select ID_A, NAME from A"
(откроем после этого датасет и кверь)
3. Правый клик по IBDataSet1->FieldsEditor..., в открывшемся окошке правый клик Add all fields.
В результате у нас добавятся поля LINK_ID и ID_A.
4. Опять правый клик в редакторе полей IBDataSet1 и нажимаем NewField.
Это будет наше лукап поле. В открывшемся диалоге указываем произвольное имя поля (не такое как в БД)
пусть это будет A_LOOKUP. Тип его должен совпадать с A.NAME, то есть в случае с IBX это String, размер=20
А теперь собственно прикол: FieldType выставляем Lookup. После этого становится доступными эдиты Key Fields - в
нем указываем по какому полю дочерней таблицы (LINK) будем делать лукап, здесь ставим ID_A;
в эдите Dataset укажем IBQuery1 (датасет из которого бум делать лукап); Lookup Keys - значение какого поля
родительской таблицы (из которой делаем лукап - A) должно совпадать со значением поля указанного в Key Fields
дочерней (LINK) у нас это A.ID_A; ResultField - значение какого поля будет отображаться (A.NAME).
5. Теперь через DataSource связываем грид с IBDataSet1 и видим, что у нас там появилось три колонки
LINK_ID - ид из LINK
ID_A - форейн кей из LINK на А
A_LOOKUP - значения A.NAME для A.ID_A=LINK.ID_A
Теперь осталось сделать выпадающий список. Особенность реализации TDBGridEh такова, что она не даст
выпадающтй список, пока не пропишешь IBDataSet1.ModifySQL, засим там пишем:
"update LINK set ID_A=:ID_A where LINK_ID=:LINK_ID"
Это самый простой способ, но если покопаться в свойствах TDBGridEh то можно найти множество настроек для
выпадающего списка и поиска, хотя основной принцип тот-же.
← →
ПавелТ (2004-04-09 12:56) [4]И так по порядку, как в TDBGridEh сделать лукап поле.
На самом деле лукап поле - это специальный тип поля в датасете.
Вот как это делается в IBX (для других датасетов думаю аналогично, но я их редко использую):
Пусть есть две таблицы А и LINK.
Таблица А содержит поля: (Integer)A_ID, (varchar(20))NAME
Таблица LINK: (Integer)LINK_ID, (Integer)A_ID foreign key A.A_ID
Мы хотим чтобы у нас отображались в сетке данные из LINK, но вместо A_ID там было A.NAME с возможностью выбора
1. Бросаем на форму IBDataSet1, в SelectSQL следующее "select LINK_ID, ID_A from LINK"
2. Бросаем на форму IBQuery1, в SQL "select ID_A, NAME from A"
(откроем после этого датасет и кверь)
3. Правый клик по IBDataSet1->FieldsEditor..., в открывшемся окошке правый клик Add all fields.
В результате у нас добавятся поля LINK_ID и ID_A.
4. Опять правый клик в редакторе полей IBDataSet1 и нажимаем NewField.
Это будет наше лукап поле. В открывшемся диалоге указываем произвольное имя поля (не такое как в БД)
пусть это будет A_LOOKUP. Тип его должен совпадать с A.NAME, то есть в случае с IBX это String, размер=20
А теперь собственно прикол: FieldType выставляем Lookup. После этого становится доступными эдиты Key Fields - в
нем указываем по какому полю дочерней таблицы (LINK) будем делать лукап, здесь ставим ID_A;
в эдите Dataset укажем IBQuery1 (датасет из которого бум делать лукап); Lookup Keys - значение какого поля
родительской таблицы (из которой делаем лукап - A) должно совпадать со значением поля указанного в Key Fields
дочерней (LINK) у нас это A.ID_A; ResultField - значение какого поля будет отображаться (A.NAME).
5. Теперь через DataSource связываем грид с IBDataSet1 и видим, что у нас там появилось три колонки
LINK_ID - ид из LINK
ID_A - форейн кей из LINK на А
A_LOOKUP - значения A.NAME для A.ID_A=LINK.ID_A
Теперь осталось сделать выпадающий список. Особенность реализации TDBGridEh такова, что она не даст
выпадающтй список, пока не пропишешь IBDataSet1.ModifySQL, засим там пишем:
"update LINK set ID_A=:ID_A where LINK_ID=:LINK_ID"
Это самый простой способ, но если покопаться в свойствах TDBGridEh то можно найти множество настроек для
выпадающего списка и поиска, хотя основной принцип тот-же.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.036 c