Главная страница
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.024 c
1-45864
Lahtak
2002-11-05 15:02
2002.11.14
Убить все threads


7-46164
mate
2002-09-11 12:22
2002.11.14
Окна и приложения


3-45721
VikOss
2002-10-24 10:32
2002.11.14
Редактирование базы


14-46076
Anatoly Podgoretsky
2002-10-24 08:52
2002.11.14
Именинники 24 октября


3-45748
Ээх
2002-10-24 22:45
2002.11.14
Как установить ширину столбца в RxDBGrid, чтоб был виден ...