Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.008 c
1-45873
Poirot
2002-11-03 19:16
2002.11.14
ImageList1.ResourceLoad()


4-46211
Manulo
2002-09-29 15:56
2002.11.14
MessageBeep


1-45899
KME
2002-11-05 22:43
2002.11.14
Дипломная работа


1-45836
Андрусь
2002-11-04 19:23
2002.11.14
Как создать форму с помощью API функций


3-45768
SerjKo
2002-10-24 15:06
2002.11.14
Преобразование формата





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский