![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запрос из TQuery [D6, BDE]
PavelOKES © (2003-04-07 08:43:00)Всем привет! Народ, кто-нибудь скажет, как можно сделать выборку из выборки? То есть может ли один Query ссылаться на другой Query?
sunrider (2003-04-07 15:48:00) [1]Есть еще один способ - работать с ClientDataSet, для Delphi до 6
версией один из лучших способов работать с данными уже полученными с сервака. Кстати результат ClientDataSet можно
сохранить в файле как бинарном, так и в XML-формате, и потом
работать с ним как с локальной базой данных. Можно создать
структуру такого файла в виде XML заранее, и уж потом заполнять данными. Последнее хорошо, когда работаешь с перекрестными таблицами.
Mike Kouzmine (2003-04-07 15:43:00) [2]Наталия © Все верно, только не в той директории, что и программа, а в любой. (на которую указывае databasename)
Андрю-ХА (2003-04-07 13:05:00) [3]//Соловьев © (07.04.03 11:42)
Согласен, видимо не до конца осознал вопрос :)
Наталия (2003-04-07 11:57:00) [4]В LocalSQL существует возможность делать запрос по результатам другого запроса. Для этого нужно текст первого запроса сохранить в файле с расширением sql в той же директории, что и программа.
А второй запрос будет выглядеть примерно так:
select * from tmp.sql
Подробнее - в help LocalSQL.
Соловьев (2003-04-07 11:42:00) [5]
> Андрю-ХА © (07.04.03 11:38)
> Извините, но ерунду все предлагаете.
извини, но предлагаешь ерунду ты...
Ты предлагаешь просо автоматизировать подстановку параметра в запрос. Т.е. чтобы не писать код в проге:
...
ParamsByName("FIELD1").AsInteger := Query1.FieldByName("FIELD1").AsInteger;
...
А тут требуется выполнить запрос к уже полученому запросу.
Андрю-ХА (2003-04-07 11:38:00) [6]Извините, но ерунду все предлагаете.
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. Любуешься результатом.
perov (2003-04-07 10:52:00) [7]Есть такой компонент как txQuery, он позволяет делать запросы из любого датасета.
Соловьев (2003-04-07 10:04:00) [8]Никогда не пользовался, но в кулибах сказано что можно выполнить запрос к уже запросу:
DbiMakePermanent (hCursor: hDBICur; pszName: PChar; bOverWrite: Bool): DBIResult
Alik007 (2003-04-07 09:46:00) [9]Можно сохранить результаты запроса в таблицу и сделать запрос уже к ней
Check(DbiQInstantiateAnswer(Query.StmtHandle,
Query.Handle,PChar(FileName),szDBASE,True,Nil));
RDA (2003-04-07 09:36:00) [10]>>Не канает. Нужно именно из Query.
Из Query это и есть подзапрос.
PavelOKES (2003-04-07 09:28:00) [11]Понятно, спасибо.
Мегабайт (2003-04-07 09:24:00) [12]А иначе никак. Запрос выполняется на серваке, а он не знает, что такое TQuery, он понимает только SQL (для файлов dbf, db и подобных BDE прикидывается серваком). TQuery - это компонент твоей программы, он выдал тебе данные, а дальше работай с ними сам, BDE больше не поможет. Подзапрос - только в SQL-тексте TQuery.
PavelOKES (2003-04-07 08:59:00) [13]Не канает. Нужно именно из Query.
Geka (2003-04-07 08:48:00) [14]Вложенный запрос