Форум: "Базы";
Текущий архив: 2009.01.25;
Скачать: [xml.tar.bz2];
ВнизFIB Найти похожие ветки
← →
mv (2008-06-17 17:08) [0]Добрый день!
Помогите реализовать задачу: Сделать в приложении возможность при выборе значений 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;
← →
Поросенок Винни-Пух © (2008-06-17 18:29) [1]где
(тайп_таск ин (....) and статус такой-то)
или
(тайп_таск ин (....) and статус такой-то)
← →
mv (2008-06-18 10:35) [2]это можно решить одним запросом? Сомневаюсь
← →
Поросенок Винни-Пух © (2008-06-18 10:58) [3]можно, если на человеческом языке сможешь сформулировать что же тебе надо
← →
mv (2008-06-18 12:21) [4]Из датасет в комбобокс для заявок с типом 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 и т.д.
← →
Sergey13 © (2008-06-18 12:29) [5]> [4] mv (18.06.08 12:21)
Фильтровать датасет?
← →
Поросенок Винни-Пух © (2008-06-18 12:35) [6]Нужно, чтобы для заявок 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))
← →
Поросенок Винни-Пух © (2008-06-18 12:37) [7]либо исходный запрос и селект из него если fb2.x
← →
mv (2008-06-18 12:39) [8]
> where
> (заявка in (300,400,500,600,700) and статус in (3,5,8))
> or
> (заявка = 800 and статус in (3,5,8,12))
>
так не выйдет статус за скобками фильтра
← →
mv (2008-06-18 12:40) [9]а вообще конечно стоит попробывать
← →
mv (2008-06-18 12:42) [10]
> либо исходный запрос и селект из него если fb2.x
это и есть исходный запрос
← →
Поросенок Винни-Пух © (2008-06-18 12:43) [11]так не выйдет статус за скобками фильтра
Нужно, чтобы для заявок 300,400,500,600,700 попадали пункты со статусом 3,5,8 , а для заявок 800 - 3,5,8,12 и т.д.
я ж сказал, что по человечески надо выразить что же именно хочется поиметь.
← →
mv (2008-06-18 12:59) [12]вы все правильно поняли, именно это и хочется поиметь:
where
(заявка in (300,400,500,600,700) and статус in (3,5,8))
or
(заявка = 800 and статус in (3,5,8,12)).
Но руки кривоваты, чтобы правильно в запрос впихнуть, да еще, чтобы это все работало.
← →
mv (2008-06-18 13:49) [13]Не работает фильтр. помогите составить правильно, плиз.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2009.01.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c