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

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

Округление в запросе = Capability not supported ??? (D2007)


petvv ©   (2008-07-29 08:22:00) 

Был запрос:

select Fuel.Marka, Osnovan.Name, SUM(Statist.LitFact) Litr,
SUM(Statist.CurFact) Summa,
((SUM(Statist.LitFact)*Statist.Price))-SUM(Statist.CurFact)) Delta
from Fuel, Statist, Osnovan
where
Statist.DateTime>=:QDBeg and Statist.DateTime<=:QDEnd
and
Statist.Product=Fuel.Num
and
Statist.Osnovanye=Osnovan.Num
group by Marka, Name
having SUM(Statist.CurFact)<>0
union
select Fuel.Marka, Osnovan.Name, SUM(Statist.LitFact) Litr,
SUM(Statist.CurFact) Summa,
((SUM(Statist.LitFact)*0))-SUM(Statist.CurFact)) Delta
from Fuel, Statist, Osnovan
where
Statist.DateTime>=:QDBeg and Statist.DateTime<=:QDEnd
and
Statist.Product=Fuel.Num
and
Statist.Osnovanye=Osnovan.Num
group by Marka, Name
having SUM(Statist.CurFact)=0

усё работало.
Приспичило поставить округление, ставил cast и round


select Fuel.Marka, Osnovan.Name, SUM(Statist.LitFact) Litr,
SUM(Statist.CurFact) Summa,
(cast((SUM(Statist.LitFact)*Statist.Price) as decimal(15,2))-SUM(Statist.CurFact)) Delta
from Fuel, Statist, Osnovan
where
Statist.DateTime>=:QDBeg and Statist.DateTime<=:QDEnd
and
Statist.Product=Fuel.Num
and
Statist.Osnovanye=Osnovan.Num
group by Marka, Name
having SUM(Statist.CurFact)<>0
union
select Fuel.Marka, Osnovan.Name, SUM(Statist.LitFact) Litr,
SUM(Statist.CurFact) Summa,
(cast((SUM(Statist.LitFact)*0) as decimal(15,2))-SUM(Statist.CurFact)) Delta
from Fuel, Statist, Osnovan
where
Statist.DateTime>=:QDBeg and Statist.DateTime<=:QDEnd
and
Statist.Product=Fuel.Num
and
Statist.Osnovanye=Osnovan.Num
group by Marka, Name
having SUM(Statist.CurFact)=0



select Fuel.Marka, Osnovan.Name, SUM(Statist.LitFact) Litr,
SUM(Statist.CurFact) Summa,
(round((SUM(Statist.LitFact)*Statist.Price),2)-SUM(Statist.CurFact)) Delta
from Fuel, Statist, Osnovan
where
Statist.DateTime>=:QDBeg and Statist.DateTime<=:QDEnd
and
Statist.Product=Fuel.Num
and
Statist.Osnovanye=Osnovan.Num
group by Marka, Name
having SUM(Statist.CurFact)<>0
union
select Fuel.Marka, Osnovan.Name, SUM(Statist.LitFact) Litr,
SUM(Statist.CurFact) Summa,
(round((SUM(Statist.LitFact)*0),2)-SUM(Statist.CurFact)) Delta
from Fuel, Statist, Osnovan
where
Statist.DateTime>=:QDBeg and Statist.DateTime<=:QDEnd
and
Statist.Product=Fuel.Num
and
Statist.Osnovanye=Osnovan.Num
group by Marka, Name
having SUM(Statist.CurFact)=0


выдаёт Capability not supported ???

и где у меня коэффициент кривизны рук начинает резко отличаться от 0.


Нат   (2008-07-30 09:31:00) [1]

Удалено модератором


Johnmen   (2008-07-30 08:50:00) [2]

Удалено модератором


Нат   (2008-07-29 18:22:00) [3]

Удалено модератором


Amoeba   (2008-07-29 14:50:00) [4]


> petvv   (29.07.08 10:58) [14]
>
> О чём говорит сообщение я понимаю, как с этим бороться

Как? Каком кверху. Делать округление там, где оно возможно и не желать странного.


Правильный$Вася   (2008-07-29 11:22:00) [5]


> как с этим бороться

держать удар, сцепить зубы


Anatoly Podgoretsky   (2008-07-29 11:01:00) [6]

Ну так не поддержано же.


petvv   (2008-07-29 10:58:00) [7]

О чём говорит сообщение я понимаю, как с этим бороться


Anatoly Podgoretsky   (2008-07-29 10:23:00) [8]

Справка говорит, что функции Round нет в LocalSQL о чем и говорит сообщение об ошибке.


petvv   (2008-07-29 10:19:00) [9]

В отчёте округление делать бесполезно, потому, что в отчёт выводится итог по маркам бензинов, а данные беруться из базы чеков и если на каждый чек не произвести округление, то расчитаная потеря будет фуфельной


palva   (2008-07-29 10:11:00) [10]


> petvv   (29.07.08 08:56) [2]
>
> Paradox, BDE

Я не знаю, как это делается в BDE. А документацию для вас мне изучать лень.


Johnmen   (2008-07-29 10:01:00) [11]

Тебе уже ответили: Capability not supported


petvv   (2008-07-29 09:59:00) [12]

Люди, вы мне можете ответить на мойвопрос, там можно, но не нужно


Johnmen   (2008-07-29 09:52:00) [13]

Почему бы не воспользоваться округлением в генераторе отчетов?


petvv   (2008-07-29 09:43:00) [14]

Далее из запроса напрямую выкидывается в отчёт FR расчитывается потеря на скидках


Johnmen   (2008-07-29 09:30:00) [15]


> petvv   (29.07.08 08:22) 

А в чем сакральный смысл округления в запросе?


petvv   (2008-07-29 09:13:00) [16]

SQL сервера нет. Есть софтина, которая управляет АЗС, работает на БД Paradox. Использую D2007, для доступа к БД использую BDE


palva   (2008-07-29 08:56:00) [17]


> round(43.666, 2) должно возвращать 43.67

Вообще я немного ошибся, MS SQL возвращает 43.670. Но неважно. Сначала выясните с каким SQL-сервером вы работаете.


Нат   (2008-07-29 08:56:00) [18]


> (round((SUM(Statist.LitFact)*0),2)-SUM(Statist.CurFact))  Delta

Функции должны поддерживаться  сервером БД.

Что дает умножение на ноль?
Можно попробовать упростить слегка выражение и вынести операцию СУММ за скобки
SUM(  Statist.LitFact*Statist.Price - Statist.CurFact )


petvv   (2008-07-29 08:56:00) [19]

Paradox, BDE


palva   (2008-07-29 08:48:00) [20]

cast и round требуют дополнительных параметров, касающихся выходного формата.
Например round(43.666, 2) должно возвращать 43.67 (2 знака после точки)
Но это надо читать документацию к конкретному SQL-серверу, который у вас не указан.


Наверх

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