Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.20;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
1-65039
bmai
2002-06-09 18:08
2002.06.20
2 вопроса по Hint -ам


1-65000
kay
2002-06-06 04:56
2002.06.20
MessageDld


8-65181
Beka
2002-02-05 19:50
2002.06.20
как исползовать startrecord


1-65020
Magic
2002-06-09 10:08
2002.06.20
TStringGrid - его методы


1-65052
kioto
2002-06-10 08:44
2002.06.20
Как отловить нажатие кнопок-стрелок ?