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

Вниз

Как в запросе использовать результат другого запроса?   Найти похожие ветки 

 
leshik ©   (2002-10-24 13:28) [0]

Имеется бд1 из нее вытащена информация по Query1.
Имеется бд2 из нее вытащена информация по Query2.
Как составить запрос, который бы объединенил Query1 и Query2 по общему полю?


 
ЮЮ ©   (2002-10-24 13:31) [1]

В одном запросе объединить таблицы обоих запросов.
бд1, бд2 - это разные БД (в разных каталогах) ? Используешь БДЕ, АДО?


 
MsGuns ©   (2002-10-24 13:33) [2]

Если используешь Local SQL (BDE), то никак (только ручками).
Но можно каждый из них сохранить во временную таблицу с помощью TBatchMove (Mode:=batCopy), а затем давать любые запросы на эти таблицы. Временные таблицы надо создавать в PRIVATE DIRECTORY (иначе на сети работать не будет), а после использования удалять.


 
leshik ©   (2002-10-24 15:11) [3]

Да, Local SQL... А подскажи pls (лучше пример), как нужно использовать TBatchMove...


 
MsGuns ©   (2002-10-24 15:57) [4]

Пример, где TBatchMove и TTable для рез-та дин.созаются, а потом уничтожаются


function CopyFromQueryToTable(Sourse: TQuery; tmpTable: string): boolean;
var
bmv: TBatchMove;
tb: TTable;
begin
result := false;
bmv := TBatchMove.Create(self);
tb := TTable.Create(self);
tb.DatabaseName := ExtractFilePath(tmpTable);
tb.TableName := ExtractFileName(tmpTable);
tb.TableType := ttDBase; // Если для Fox, то ttFoxPro
tb.Exclusive := true; // Обязательно в моно-режим
bmv.Destination := tb; // Для рез-та
bmv.Source := Sourse; // Исходный НД
bmv.Mode := batCopy;
try
bmv.Execute;
tb.Exclusive := false; // Для дальнейшего доступв
result := true;
except
ShowMessage("Ошибка в имени вр.файла или этот файл уже используется");
end;
bmv.Free;
tb.Free;
end;

procedure Form1.ButtonNClick(Sender: TObject);
var
Tab1: string;
begin
...
{ Здесь выполняется запрос, возвращающий НД, который надо сохранить для следующего запроса }
...
Query1.Open; // Получили НД
Tab1 := Session.PrivateDir + "\"+"MyTmpTb1";
if not CopyFromQueryToTable(Query1,Tab1) then
exit; // Копирование не удалось - вышли 8(

{ Построение запроса на врем таблицу}
Query2.SQL.Add("SELECT * FROM "+Tab1)
Query2.SQL.Add(..)
...

end;



Код написан "на лету", поэтому при вводе проверь св-ва с помощью вариантов, предлагаемых компиллятором



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

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

Наверх




Память: 0.48 MB
Время: 0.014 c
1-45961
Zuvom
2002-11-04 13:31
2002.11.14
Удаление файла


4-46207
valerchik
2002-10-03 00:47
2002.11.14
Как перерисовать окно...


7-46181
dr.karter
2002-08-29 17:41
2002.11.14
Отключка


3-45728
Elvira
2002-10-23 15:15
2002.11.14
XlReport


3-45778
Gregory
2002-10-26 17:58
2002.11.14
Работа с базами Paradox