Главная страница
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.017 c
1-45796
Vadia
2002-11-03 15:49
2002.11.14
Печать TMemo


3-45762
Элина
2002-10-23 18:09
2002.11.14
Создание новой БД! ПОМОГИТЕ!!!


14-46099
Николай Быков
2002-10-26 21:05
2002.11.14
Создание скрин-сэйверов


3-45749
kalan
2002-10-25 04:37
2002.11.14
Работа с клиентским набором данных


3-45692
Cossys
2002-10-17 16:11
2002.11.14
TTable.Locate по двум полям???