-
Добрый день! Помогите реализовать задачу: Сделать в приложении возможность при выборе значений 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;
-
где (тайп_таск ин (....) and статус такой-то) или (тайп_таск ин (....) and статус такой-то)
-
это можно решить одним запросом? Сомневаюсь
-
можно, если на человеческом языке сможешь сформулировать что же тебе надо
-
Из датасет в комбобокс для заявок с типом 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 и т.д.
-
> [4] mv (18.06.08 12:21)
Фильтровать датасет?
-
Нужно, чтобы для заявок 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))
-
либо исходный запрос и селект из него если fb2.x
-
> where > (заявка in (300,400,500,600,700) and статус in (3,5,8)) > or > (заявка = 800 and статус in (3,5,8,12)) >
так не выйдет статус за скобками фильтра
-
а вообще конечно стоит попробывать
-
> либо исходный запрос и селект из него если fb2.x
это и есть исходный запрос
-
так не выйдет статус за скобками фильтра
Нужно, чтобы для заявок 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)).
Но руки кривоваты, чтобы правильно в запрос впихнуть, да еще, чтобы это все работало.
-
Не работает фильтр. помогите составить правильно, плиз.
|