Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.053 c
9-1070862678
Kair
2003-12-08 08:51
2004.05.09
Фигуры


14-1082029483
Kolyan
2004-04-15 15:44
2004.05.09
БЕЗОПАСНОСТЬ ПО ЛОКАЛКЕ


1-1082549262
Andy BitOff
2004-04-21 16:07
2004.05.09
Экспорт/импорт реестра.


3-1082024650
Ткаченко Сергей
2004-04-15 14:24
2004.05.09
Контекстное меню правой кнопкой мыши на записи в DBgrid???


3-1081883886
Серг
2004-04-13 23:18
2004.05.09
Путь к сетевой БД





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский