Главная страница
    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.47 MB
Время: 0.009 c
14-77096
Фикус
2003-04-04 11:26
2003.04.24
Оффшорное программирование: стОит ли заняться?


1-76901
Demon[DZ]
2003-04-14 13:32
2003.04.24
Parent


4-77224
igornov
2003-02-26 18:00
2003.04.24
Как зная хендл процесса найти главное окно приложения или наоборо


6-77045
Programist21
2003-02-20 16:21
2003.04.24
Post в IdHTTP


14-77132
Arkara
2003-04-08 11:45
2003.04.24
WinInet - где почитать?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский