Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.09;
Скачать: CL | DM;

Вниз

TField.LookupDataSet   Найти похожие ветки 

 
Saperxl   (2003-09-19 14:09) [0]

У меня есть две таблицы: bases и locations. В bases есть поле location, а в locations поля: id и name. Хочется чтобы при просмотре табла bases в TDBGrid в столбце location отображался не номер (bases.location), а название (bases.location->locations.id->lactions.name). Я привязываю IBTable к таблице bases добавляю поля; у поля location прописываю LookupDataSet, LookupKeyFields(locations.id), LookupResultFields(locations.name), KeyFields(location), ставлю FieldKind(fkLookup). А в гриде в поле location ничего вообще не отображается... Помогите, пожалуйста!


 
Vlad ©   (2003-09-19 14:13) [1]

Откуда у всех такая любовь к TTable ? Почему бы тоже самое не сделать в qurey с нормальным Join"ом в SQL запросе ?


 
Saperxl   (2003-09-19 14:27) [2]

Я не знаю как к TQuery присобачить DBGrid. Конечная цель очевидна, так чтобы грид мона было редактировать выбирая значения полей из списков возможных полей. Вообще говоря не совсем понятно нзачем Я определял в своей базе ForeiginKeys если при программировании все надо проделать заново...


 
Vlad ©   (2003-09-19 14:31) [3]

>Saperxl (19.09.03 14:27) [2]
Ничего заново переделывать не надо. Внешние ключи ты определил не зря. Именно они будут использоваться при Join в SQL предложении.

Я не знаю как к TQuery присобачить DBGrid.
Точно так же как и к TTable, через DataSource.


 
Saperxl   (2003-09-19 14:39) [4]

Как через DataSource Я положил Query на форму, а в поле DataSet у DataSource нет этого query (там ничего вообще нет)...


 
Vlad ©   (2003-09-19 14:49) [5]

Если они находятся на одной форме, то должно быть.
Если на разных, но в Uses надо добавить этот модуль.
Если не поможет, пропиши руками, может глюк какой.


 
Saperxl   (2003-09-19 14:59) [6]

Действительно глючок - просто надо DataSource добавлять на форму апосля. Спасибо!
Только грид теперь пустой вообще.
Я делаю так:
procedure TForm1.FormCreate(Sender: TObject);
begin
IBDatabase1.Open;
with IBQuery1.SQL do begin
Add("SELECT * FROM air_bases");
end; //with
IBQuery1.Open;
end;


 
Saperxl   (2003-09-19 15:17) [7]

А во!
теперь разобрался.
А что за Join?


 
Vlad ©   (2003-09-19 15:34) [8]

select b.*, l.name from bases b left outer join locations l on b.location=l.id
Получишь то что ты хочешь


 
Zacho ©   (2003-09-19 21:37) [9]


> Saperxl (19.09.03 15:17) [7]
> А что за Join?

Ну как можно работать с SQL-серверм не зная SQL ??? Настоятельно рекомендую: почитай любой учебник по SQL.
Один (а может и самый) из лучших - М.Грабер "SQL (бестселлер)"
А конкретно по IB - всегда под руками должны быть Data Definition Guide и Language Reference.


 
saperxl   (2003-09-20 21:08) [10]

Да Я уже понял, что необходимо освежить кое-что в памяти, да и собственно проблема разрешилась с Вашей помощью - Спасибо.



Страницы: 1 вся ветка

Текущий архив: 2003.10.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
14-27664
asafr
2003-09-22 13:20
2003.10.09
Предлагают работу. Кто бы как поступил?


1-27447
Ser_ega
2003-09-27 23:09
2003.10.09
Дата и время!


3-27360
Apollo
2003-09-19 13:01
2003.10.09
Фильтрация


14-27724
Mystic
2003-09-15 15:16
2003.10.09
Шахматы, игра с компьютеров.


1-27520
R
2003-09-30 02:00
2003.10.09
Какое сообщение посылает Win и посылает ли вообще при