Главная страница
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
14-46138
Anatoly Podgoretsky
2002-10-28 08:49
2002.11.14
Именинники 28 октября


1-45803
PycUS
2002-11-01 15:50
2002.11.14
Работа с файлами


1-45924
minnic
2002-11-02 20:19
2002.11.14
Приватык!!! :) Помогите плиз с вопросом:


1-45826
mihrutka
2002-11-05 11:31
2002.11.14
Как узнать индекс узла в TTreeView относительно всего дерева?


1-45875
Strumpf
2002-11-04 22:05
2002.11.14
Эмуляция фокуса на внутренней форме