Текущий архив: 2005.09.25;
Скачать: CL | DM;
Вниз
Не могу в DBGridEh сделать выбор из другой таблицы в виде ComboBo Найти похожие ветки
← →
AloneAli © (2005-08-12 11:48) [0]Не могу в DBGridEh сделать выбор из другой таблицы в виде ComboBox.
Смотрю пример, но не получается что-то...
БД: Interbase, Delphi6.
← →
ANB © (2005-08-12 11:50) [1]Это не в гриде, а в дейтасете надо делать. А грид автоматом сам затянет.
← →
AloneAli © (2005-08-12 11:54) [2]
> ANB © (12.08.05 11:50) [1]
А что в DataSet"е нужно делать?
← →
AloneAli © (2005-08-15 11:27) [3]Сделал то, что хотел.
Единственное, что не получается, это, чтобы в lookup"ом поле отображалось текущее значение. А оно не отображается. Только, когда нажимаешь на стрелочку, данные появляются, причем текущее значение выделено.
Ясно выразился?
← →
sniknik © (2005-08-15 11:41) [4]> Ясно выразился?
нет.
ясно - это когда по твоим словам можно повторить эффект, как это не работает (если ктото вдруг захочет тебе помочь и попытается воспроизвести именно так как у тебя. потому как если он будет делать по своему то у него все заработает... и неясно будет в чем же отличие).
p.s. сам спросил.
← →
AloneAli © (2005-08-15 12:25) [5]
> sniknik © (15.08.05 11:41) [4]
Ок.
Есть две таблицы. Условно обозначим
I-й этап:
1. Первая - JobTitle (Должность)
Поля:
ID - integer primary key
Name - varchar(50)
2. Вторая - Jober (Работник)
Поля:
ID - integer primary key
FIO - varchar(60)
fJobTitle - integer foreign key JobTitle(ID)
Т.е. приведенные мною таблицы связаны полем fJobTitle
II-й этап:
1. Для первой таблицы
ibdsJobTitle : TIBDataSet;
dsJobTitle: TDataSource;
Запрос на выборку: select * from JobTitle
2. Для второй таблицы
ibdsJober : TIBDataSet;
dsJober: TDataSource;
Запрос на выборку: select * from Jober
III-й этап:
1. В ibdsJober завожу lookup-поле: JobTitle: TStringField
LookupDataSet : dsJobTitle;
LookupKeyField : ID;
LookupResultField : Name;
KeyField : fJobTitle
2. На форму кидаю dbgeJober: TDBGridEh. Добавляю Columns. Нас интересует JobTitle:
ListSource : dsJobTitle;
ListField : Name;
KeyField : ID;
DataField : fJobTitle;
IV-й этап:
По логике у нас DBGrid дожлен выглядеть так:
|ФИО | Должность |
|Иванов | Президент РФ \/ |
Но у меня выглядит так:
|ФИО | Должность |
|Иванов | \/ |
Когда я щелкаю по стрелочке (\/), т.е. по полю "Должность", то высвечивается следующим образом:
| \/ |
| Дворник |
| Сапожник |
| Президент РФ |
| Мэр |
| Программист |
Вопрос: почему у меня высвечивается поле "Должность" именно так, как я описал?
Надеюсь, ясно выразился?
Сам просил...
← →
sniknik © (2005-08-15 13:43) [6]> 2. На форму кидаю dbgeJober: TDBGridEh. Добавляю Columns. Нас интересует JobTitle:
> ListSource : dsJobTitle;
> ListField : Name;
> KeyField : ID;
> DataField : fJobTitle;
вот это попробуй исключить. все что надо ты в датасетах сделал, незачем дублировать в гриде (не в курсе что это в DBGridEh значит, думаю аналог PickList или подобное)
в общем не делай никаких манипуляций с гридом, максимум добавить все поля и оставить все по умолчанию. а лучше вообще не заполняй грид полями.
и еще попробуй LookupCache поставить в труе
в дополнение к
> 1. В ibdsJober завожу lookup-поле: JobTitle: TStringField
(на случай если компоненты не закачивают данные до прямого обращения к ним)
и 3-е, жди спеца по DBGridEh/IB6, не по DBGrid/ADO ;о)). на этот раз понятно написано, должны разобраться (если захотят ;).
← →
AloneAli © (2005-08-16 12:02) [7]Заработало.
Решил все заново переделать:
1. Удалил dgeJober и поставил новый. Не помогло.
2. Удалил ibdsJober и dbgeJober. Поставил новые. Заработало.
Видно, какую-то галочку зря включил.
Страницы: 1 вся ветка
Текущий архив: 2005.09.25;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.04 c