Страница 1 из 1
LookUpCombo в IBObjects 4.5 в гриде
Добавлено: 20 июн 2005, 05:23
Solo
Так и не понял, как засунуть в IB_Grid компонент IB_LookUpCombo (использую библиотеку IBObjects 4.5). В хелпе довольно подробно рассказано, как затолкать грид в комбо. Или LookUpList. А вот как сделать наоборот - так и непонятно.
Может, кто сталкивался? Напоминаю, что речь идет о библиотеке IBO.
Re: LookUpCombo в IBObjects 4.5 в гриде
Добавлено: 21 июн 2005, 19:12
Dmitry Beloshistov
solo писал(а):Так и не понял, как засунуть в IB_Grid компонент IB_LookUpCombo (использую библиотеку IBObjects 4.5). В хелпе довольно подробно рассказано, как затолкать грид в комбо. Или LookUpList. А вот как сделать наоборот - так и непонятно.
Может, кто сталкивался? Напоминаю, что речь идет о библиотеке IBO.
Все довольно просто:
1) Ложишь на форму IB_Grid и IB_Query+IB_DataSource для грида
(QGrid, DSGrid)
2) Ложишь
на IB_Grid IB_LookupCombo и IB_Query+IB_Datasource для Lookup`a (QLook, DSQ)
3) Пишешь для QGrid Update,Insert,Delete SQL
4) Ставишь у QLook KeySource=DSGrid и прописываешь KeyLinks
5) Вводишь отображаемое поле IB_Lookup1.DisplayField:=???;
Пример:
Пусть есть 2 таблицы:
Код: Выделить всё
/*ошибки пользователя*/
CREATE TABLE ER( ID integer, /*PK*/
ERRDATE DATE,
ERRDESCRIPT varchar(100),
STATE integer); /*FK на ESREF*/
/*состояние (справочник)*/
CREATE TABLE ESREF (ID integer, /*PK*/
ETYPENAME varchar(100));
Показываем в основном гриде:
Код: Выделить всё
QGrid.SQL.Text:='SELECT ER.ID, ER.ERRDATE,ER.ERRDESCRIPT,ER.STATE, ESREF.ETYPENAME FROM ER, ESREF WHERE ER.STATE=ESREF.ID ';
Делаем Lookup:
Код: Выделить всё
QLook.SQL.Text:='SELECT * FROM ESREF';
QLook.KeySource:=DSGrid;
QLook.KeyLinks.Add('ESREF.ID=ER.STATE');
IBLook.DisplayField:='ETYPENAME';
Надеюсь, обьяснил доходчиво...
-
Re: LookUpCombo в IBObjects 4.5 в гриде
Добавлено: 22 июн 2005, 03:32
Solo
Dmitry Beloshistov писал(а):...
Надеюсь, обьяснил доходчиво...

Спасибо!!! Надеюсь, что так. Сегодня вечером же и попробую. А то ведь до чего дошло - самому приходится описывать OnEdit, OnNewRecord и пр. Появлять LookUp-ный лист, обрабатывать клик по нему, а самого главного - халявы-то и нет!
Re: LookUpCombo в IBObjects 4.5 в гриде
Добавлено: 23 июн 2005, 05:36
Solo
Dmitry Beloshistov писал(а):
Пример:
Пусть есть 2 таблицы:
Код: Выделить всё
/*ошибки пользователя*/
CREATE TABLE ER( ID integer, /*PK*/
ERRDATE DATE,
ERRDESCRIPT varchar(100),
[b]STATE integer); /*FK на ESREF*/
[/b]
[/quote]
Что-то не могу создать форин-ключ (использую IBExpert).
Больше в этот момент базу никто не использует, и сама Delphi закрыта вообще.
Может быть, ключевые поля должны рядом находиться?
У меня так: Главная таблица TARIFS имеет 4 поля:
ID - первичный ключ
S_NAME (varchar 50) - наименование услуги
S_PRICE (дабл пресижн) - Стоимость услуги
[b]NUM_SPOS[/b] (integer) - номер способа расчета
LооkUp-ная таблица SPOSOB (то-есть как раз способы расчета)
[b]NUM_SPOS[/b] (Первичный ключ PK_SPOSOB)
NAM_SPOS (varchar 50) - наименование способа
Пытаюсь сделать FK для таблицы TARIFS с поля NUM_SPOS на таблицу SPOSOB на поле NUM_SPOS (там другого и нет).
Он и скрипт формирует без ошибки, но при попытке запуска скрипта кричит, что Violation на ключе PK_SPOSOB
Re: LookUpCombo в IBObjects 4.5 в гриде
Добавлено: 23 июн 2005, 11:12
Dmitry Beloshistov
solo писал(а):
Что-то не могу создать форин-ключ (использую IBExpert).
Больше в этот момент базу никто не использует, и сама Delphi закрыта вообще.
Может быть, ключевые поля должны рядом находиться?
1. Для примера в принципе FK можно и не создавать.
2. Delphi тут вообще никаким боком не касается
3. Расположение ключевых полей тоже пофигу - у меня есть таблицы у которых 7-10 FK и разбросаны поля как бог (тьфу, я - как sysdba

) на душу положит.
4. Попробуй переконектиться к базе перед созданием FK.
Re: LookUpCombo в IBObjects 4.5 в гриде
Добавлено: 24 июн 2005, 03:16
Solo
Dmitry Beloshistov писал(а):solo писал(а):
1. Для примера в принципе FK можно и не создавать.
2. Delphi тут вообще никаким боком не касается
3. Расположение ключевых полей тоже пофигу - у меня есть таблицы у которых 7-10 FK и разбросаны поля как бог (тьфу, я - как sysdba

) на душу положит.
4. Попробуй переконектиться к базе перед созданием FK.
Все-таки создал

Проблема была вообще банальна - лукапная таблица была пуста, а в грид-таблице уже были в этом поле цифры, введенные вручную. Заполнил лукапную таблицу и все создалось.
Вставить LookUpCombo в грид тоже получилось, правда, он пустой, но кажется, я допер - туда надо IB_LookUpList или другой грид вставлять.
Ну, вроде вопрос закрыт.
Спасибо 