Главная страница
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
3-27315
Игорь Ч
2003-09-17 18:07
2003.10.09
Как при компиляции изменить имя исполняемого файла?


1-27548
AtoL
2003-09-29 17:44
2003.10.09
Проблема с типом


7-27759
Buffoon
2003-07-24 00:04
2003.10.09
Синий экран в windows XP


1-27542
Viktor Kushnir
2003-09-28 16:39
2003.10.09
Размер надписи.


3-27324
tudor
2003-09-21 14:36
2003.10.09
dll и main.Использование одного коннекта