Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

FIB [D7, FireBird]


mv ©   (2008-06-17 17:08:00) 

Добрый день!
Помогите реализовать задачу: Сделать в приложении возможность при выборе значений  oto_task_distrib_main.type_task in (300,400,500,600,700) отсеивать записи в TcxLookupComboBox по статусу APIO.status in (3,5,8), а при выборе oto_task_distrib_main.type_task = 800 -  APIO.status in (3,5,8,11,12 и т.д.).
Я так понимаю, что нужно делать два разных запроса.
Типа if FIBDataSet.FieldByName('TYPE_TASK').Value = '800'  then исполняем один запрос, при остальных значениях - второй.
В общем, как сделать мне понятно, но не пойму как переделать запрос, чтобы можно было выбрать TYPE_TASK из набора.

SELECT ID, AGENTPOINT_NAME, AGENT_LIMIT, CUSTID, STATUS_NAME
FROM AGENTPOINT_PLACE_IN_OTOEX(:BANK_PARTNER_ID_IN) APIO
WHERE NOT exists (SELECT * FROM oto_task_distrib
                            INNER join oto_task_distrib_main
                            ON oto_task_distrib.task_id = oto_task_distrib_main.id and  oto_task_distrib_main.type_task in (300,400,500,600,700,800)
                            WHERE oto_task_distrib.agentpoint_place_id = APIO.ID AND oto_task_distrib.status in (0,50))
                            and APIO.status in (3,5,8)

dsAgentPointName.Close;
 if bActive then
 begin
   dsAgentPointName.ParamByName('BANK_PARTNER_ID_IN').AsInteger := dsGetBankPartnerID.Fields.FieldByName('BANKPARTNER_ID').AsInteger;
  dsAgentPointName.SQLs.SelectSQL.Text;
  dsAgentPointName.Prepare;
   dsAgentPointName.Active := bActive;
 end;


mv   (2008-06-18 13:49:00) [1]

Не работает фильтр. помогите составить правильно, плиз.


mv   (2008-06-18 12:59:00) [2]

вы все правильно поняли, именно это и хочется поиметь:
where
(заявка in (300,400,500,600,700) and статус in (3,5,8))
or
(заявка = 800 and статус in (3,5,8,12)).

Но руки кривоваты, чтобы правильно в запрос впихнуть, да еще, чтобы это все работало.


Поросенок Винни-Пух   (2008-06-18 12:43:00) [3]

так не выйдет статус за скобками фильтра

Нужно, чтобы для заявок  300,400,500,600,700 попадали пункты со статусом 3,5,8 , а для заявок 800 - 3,5,8,12 и т.д.

я ж сказал, что по человечески надо выразить что же именно хочется поиметь.


mv   (2008-06-18 12:42:00) [4]


> либо исходный запрос и селект из него если fb2.x


это и есть исходный запрос


mv   (2008-06-18 12:40:00) [5]

а вообще конечно стоит попробывать


mv   (2008-06-18 12:39:00) [6]


> where
> (заявка in (300,400,500,600,700) and статус in (3,5,8))
> or
> (заявка = 800 and статус in (3,5,8,12))
>


так не выйдет статус за скобками фильтра


Поросенок Винни-Пух   (2008-06-18 12:37:00) [7]

либо исходный запрос и селект из него если fb2.x


Поросенок Винни-Пух   (2008-06-18 12:35:00) [8]

Нужно, чтобы для заявок  300,400,500,600,700 попадали пункты со статусом 3,5,8 , а для заявок 800 - 3,5,8,12 и т.д.

where
(заявка in (300,400,500,600,700) and статус in (3,5,8))
or
(заявка = 800 and статус in (3,5,8,12))


Sergey13   (2008-06-18 12:29:00) [9]

> [4] mv   (18.06.08 12:21)

Фильтровать датасет?


mv   (2008-06-18 12:21:00) [10]

Из датасет в комбобокс для заявок с типом 300,400,500,600,700,800 попадают пункты со статусом 3,5,8.

WHERE NOT exists (SELECT * FROM oto_task_distrib
                           INNER join oto_task_distrib_main
                           ON oto_task_distrib.task_id = oto_task_distrib_main.id and  oto_task_distrib_main.type_task in (300,400,500,600,700,800)
                           WHERE oto_task_distrib.agentpoint_place_id = APIO.ID AND oto_task_distrib.status in (0,50))
                           and APIO.status in (3,5,8)


Нужно, чтобы для заявок  300,400,500,600,700 попадали пункты со статусом 3,5,8 , а для заявок 800 - 3,5,8,12 и т.д.


Поросенок Винни-Пух   (2008-06-18 10:58:00) [11]

можно, если на человеческом языке сможешь сформулировать что же тебе надо


mv   (2008-06-18 10:35:00) [12]

это можно решить одним запросом? Сомневаюсь


Поросенок Винни-Пух   (2008-06-17 18:29:00) [13]

где
(тайп_таск ин (....) and статус такой-то)
или
(тайп_таск ин (....) and статус такой-то)


Наверх

Титульная страница Поиск, карта сайта Написать письмо