Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.04.24;
Скачать: [xml.tar.bz2];

Вниз

Запрос из 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.017 c
14-77077
Fiximil
2003-04-05 12:05
2003.04.24
Помогите осуществить сложную задачу...


7-77173
Casperr
2003-03-05 10:26
2003.04.24
USB


1-77009
klyonov
2003-04-12 00:22
2003.04.24
Events в COM


11-76868
Alexei Dragoner
2002-07-17 19:46
2003.04.24
TKOLForm.Paint, где ты?


8-77034
Chernishov
2003-01-23 10:55
2003.04.24
DirectX





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