Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.24;
Скачать: CL | DM;

Вниз

Запрос из TQuery   Найти похожие ветки 

 
PavelOKES   (2003-04-07 08:43) [0]

Всем привет! Народ, кто-нибудь скажет, как можно сделать выборку из выборки? То есть может ли один Query ссылаться на другой Query?


 
Geka ©   (2003-04-07 08:48) [1]

Вложенный запрос


 
PavelOKES   (2003-04-07 08:59) [2]

Не канает. Нужно именно из Query.


 
Мегабайт ©   (2003-04-07 09:24) [3]

А иначе никак. Запрос выполняется на серваке, а он не знает, что такое TQuery, он понимает только SQL (для файлов dbf, db и подобных BDE прикидывается серваком). TQuery - это компонент твоей программы, он выдал тебе данные, а дальше работай с ними сам, BDE больше не поможет. Подзапрос - только в SQL-тексте TQuery.


 
PavelOKES   (2003-04-07 09:28) [4]

Понятно, спасибо.


 
RDA ©   (2003-04-07 09:36) [5]

>>Не канает. Нужно именно из Query.
Из Query это и есть подзапрос.


 
Alik007   (2003-04-07 09:46) [6]

Можно сохранить результаты запроса в таблицу и сделать запрос уже к ней
Check(DbiQInstantiateAnswer(Query.StmtHandle,
Query.Handle,PChar(FileName),szDBASE,True,Nil));



 
Соловьев ©   (2003-04-07 10:04) [7]

Никогда не пользовался, но в кулибах сказано что можно выполнить запрос к уже запросу:
DbiMakePermanent (hCursor: hDBICur; pszName: PChar; bOverWrite: Bool): DBIResult


 
perov ©   (2003-04-07 10:52) [8]

Есть такой компонент как txQuery, он позволяет делать запросы из любого датасета.


 
Андрю-ХА ©   (2003-04-07 11:38) [9]

Извините, но ерунду все предлагаете.
1. Кидаешь на форму Query1, Query2, DataSource1.
2. Присваиваешь Query.DataBaseName
3. Дальше:

DataSource1.DataSet := Query1;
Query2.DataSource := DataSource1; // эта строчка обеспечивает вложенный запрос
Query1.SQL.Text := "SELECT FIELD1, FIELD2 FROM MY_TABLE";
Query2.SQL.Text := "SELECT FIELD2 FROM MY_TABLE WHERE FIELD1 = :FIELD1" // :FIELD1 - сюда будет автоматом подставляться значение из Query1

4. Любуешься результатом.


 
Соловьев ©   (2003-04-07 11:42) [10]


> Андрю-ХА © (07.04.03 11:38)
> Извините, но ерунду все предлагаете.

извини, но предлагаешь ерунду ты...
Ты предлагаешь просо автоматизировать подстановку параметра в запрос. Т.е. чтобы не писать код в проге:
...
ParamsByName("FIELD1").AsInteger := Query1.FieldByName("FIELD1").AsInteger;
...

А тут требуется выполнить запрос к уже полученому запросу.


 
Наталия ©   (2003-04-07 11:57) [11]

В LocalSQL существует возможность делать запрос по результатам другого запроса. Для этого нужно текст первого запроса сохранить в файле с расширением sql в той же директории, что и программа.
А второй запрос будет выглядеть примерно так:
select * from tmp.sql
Подробнее - в help LocalSQL.


 
Андрю-ХА ©   (2003-04-07 13:05) [12]

//Соловьев © (07.04.03 11:42)
Согласен, видимо не до конца осознал вопрос :)


 
Mike Kouzmine ©   (2003-04-07 15:43) [13]

Наталия © Все верно, только не в той директории, что и программа, а в любой. (на которую указывае databasename)


 
sunrider   (2003-04-07 15:48) [14]

Есть еще один способ - работать с ClientDataSet, для Delphi до 6
версией один из лучших способов работать с данными уже полученными с сервака. Кстати результат ClientDataSet можно
сохранить в файле как бинарном, так и в XML-формате, и потом
работать с ним как с локальной базой данных. Можно создать
структуру такого файла в виде XML заранее, и уж потом заполнять данными. Последнее хорошо, когда работаешь с перекрестными таблицами.



Страницы: 1 вся ветка

Текущий архив: 2003.04.24;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
4-77225
NikotiN
2003-02-26 18:59
2003.04.24
Перехват сообщения


3-76806
Андрей Королёв
2003-04-05 18:27
2003.04.24
Как заставить InputQuery принимать INTEGER значения


14-77133
Kost
2003-04-08 14:17
2003.04.24
Нужен компонент для работы с базой данных


1-76943
Vertx
2003-04-11 19:53
2003.04.24
Word


3-76846
Term
2003-04-07 11:53
2003.04.24
Индексные поля