Форум: "Базы";
Текущий архив: 2002.11.14;
Скачать: [xml.tar.bz2];
ВнизКак в запросе использовать результат другого запроса? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c