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

Вниз

TQuery   Найти похожие ветки 

 
lak_b   (2002-05-24 18:36) [0]

Как можно результаты работы одного TQuery использовать другим TQuery?


 
TSV   (2002-05-24 19:52) [1]

Запросы надо грамотно писать. Фактически речь идет от вложенном подзапросе или дополнительных WHERE-условиях и т.п.


 
MAxiMum   (2002-05-24 19:58) [2]

А может нужно и другое. Короче, под 1-ый Query ставишь 1-ый DataSource и свойство MasterDataSource ставишь на DataSource первого. Таким образом ты выбираешь только данные из 1-ого запроса, при этом еще получая возможность использовать первый. Если така явозможность не нужна, то используй вложенные запросы и/или where-условия и зависимости join.


 
lak_b   (2002-05-24 23:54) [3]

К вопросу об использовании TQuery другим TQuery (lak_b).
Я написал процедуру

// Поиск адреса по показателям ФИО и/или Телефона:

{***}

procedure AddSearchFioAndPhoneOutput (Query: TQuery; Surname, Name, SecondName, Phone: string);

begin
if Phone <> "" then //Если ввели телефон
begin
// Сначала Фильтруем по телефону, потом по фамилии:
Query.Close;
Query.SQL.Clear;
Query.SQL.Add("Select");
Query.SQL.Add("PersonIDField, SurnameField, NameField, SecondNameField, PlaceIDField, PartIDField");
Query.SQL.Add("From Persons");
Query.SQL.Add("where PlaceIdField = (Select PlaceIdField from Phones where PhoneField like :PPP) ");
Query.SQL.Add("and PartIdField = (Select PartIdField from Phones where PhoneField like :PPP) ");

If Surname <> "" then Query.SQL.Add("and SurnameField = :AAA");
If Name <> "" then Query.SQL.Add("and NameField = :BBB");
If SecondName <> "" then Query.SQL.Add("and SecondNameField = :CCC");

Query.ParamByName("PPP").AsString := Phone+"%";

If Surname <> "" then Query.ParamByName("AAA").AsString := Surname;
If Name <> "" then Query.ParamByName("BBB").AsString := Name;
If SecondName <> "" then Query.ParamByName("CCC").AsString := SecondName;

Query.Open;
end
else // Телефона не ввели - фильтруем просто по фамилии
begin
Query.Close;
Query.SQL.Clear;
Query.SQL.Add("Select");
Query.SQL.Add("PersonIDField, SurnameField, NameField, SecondNameField, PlaceIDField, PartIDField");
Query.SQL.Add("From Persons Where ");

If Surname <> "" then //Начало с фамилии
begin
Query.SQL.Add("SurnameField = :AAA");
If Name <> "" then Query.SQL.Add("and NameField = :BBB");
If SecondName <> "" then Query.SQL.Add("and SecondNameField = :CCC");
end
else
begin
If Name <> "" then //Начало с имени
begin
Query.SQL.Add("NameField = :BBB");
If SecondName <> "" then Query.SQL.Add("and SecondNameField = :CCC");
end
else If SecondName <> "" then Query.SQL.Add("SecondNameField = :CCC")
else //Все поля = ""
begin
//Ничего не делаем
end;
end;

If Surname <> "" then Query.ParamByName("AAA").AsString := Surname;
If Name <> "" then Query.ParamByName("BBB").AsString := Name;
If SecondName <> "" then Query.ParamByName("CCC").AsString := SecondName;

if (Surname <> "") or (Name <> "") or (SecondName <> "") then Query.Open
else // В противном случае создаем невыполнимый запрос:
begin
Query.SQL.Add("PersonIDField = -1");
Query.Open;
end;
end;
end;

{***}
Весь прикол в том, что из курсора, возвращаемого Query мне нужно забрать значения двух только полей: PlaceIDField, PartIDField для всех записей для других целей. Использовать текущий курсор не могу, так как значения этих полей в нем повтояются в записях а мне нужен курсор с уникальными записями из этих двух полей. Писать такую же процедуру для другого Query не хочу. Можно ли как-нибудь доступиться другим Query до Курсора первого Query и выбрать оттуда нужную инфу?

Если ты знаешь, как написать грамотный запрос, пожалуйста напиши.
Буду очень признателен.


 
Fay   (2002-05-25 15:23) [4]

Странный запрос



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.06.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
1-65000
kay
2002-06-06 04:56
2002.06.20
MessageDld


1-65164
Dr. Web
2002-06-07 15:47
2002.06.20
получить Иконки в MDIChild ах через Messages...


3-64955
Dok_3D
2002-05-27 13:58
2002.06.20
Почему TDataSetProvider не поддерживает ...


3-64892
Explorer
2002-05-24 15:06
2002.06.20
ошибка при работе с PReport


1-65171
mifi
2002-06-08 00:16
2002.06.20
MyImage :Array





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