Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запрос из 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]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо