Главная страница
    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.008 c
3-76824
PavelOKES
2003-04-07 08:43
2003.04.24
Запрос из TQuery


1-77011
Rule
2003-04-14 02:46
2003.04.24
Помогиет пожалуйста какаято непонятка при преобразовании типов


3-76834
Boo
2003-04-05 22:13
2003.04.24
Проблемы печати DBGridEh (EhLib2.5)


1-76896
GeorgeM
2003-04-14 17:24
2003.04.24
Ruler


6-77068
Snake2000
2003-03-02 13:47
2003.04.24
NMSMTP - Обработка ошибок





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