![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
помогите с отчетом [D6, IB6.x]
Doctor © (2002-07-16 13:27:00)народ, как быть ?
надо сделать в отчете таблицу типа
название товара/сумма/кол-во/за период/до периода/на конец периода
вот в этом периоде и вся загвоздка.
по идее надо сделать выборку где where period и даты, но это получается 3 запроса, а в отчет в DataSet можно вставить тоько 1 ресурс, по 2-м другим отчет не строится!!!!
делать union-тогда будет набор, из которого я не выберу информацию
и left join не катит, т.к. все данные из 1 таблицы
КТО ЗНАЕТ ПОМОГИТЕ, plz !!!!
Alexandr (2002-07-16 14:30:00) [1]насколько я припоминаю сейчас две верки создания RxLIb
одна на sourceforge
другая есть на www.demo.ru
только в них есть поддержка Delphi6
Какую из них выбрать - решать тебе...
Johnmen (2002-07-16 14:26:00) [2]http://www.delphiplus.org
http://www.delphiplus.spils.lv
http://www.torry.net- сделай поиск
Doctor (2002-07-16 14:15:00) [3]может тогда и подскажешь, где свачать rx,
а то я скачал откуда-то и при компиляции выдается ошибка
file not found "Gauges.dcu"
а компоненты действительно рулезные , у меня когда то стояла их старая версия.......
Johnmen (2002-07-16 14:08:00) [4]UNION"ами получаешь вертикально.
Есть такой очень неплохой компонент RxMemoryData из библ. RxLib. Это вирт. таблица.
Sergey13 (2002-07-16 14:07:00) [5]2Doctor (16.07.02 13:27)
Я такие весчи делал через CAST, т.е. типа
select name,cast((select sum from table1 t2 where ... ) as number) as pole_name
from table1 t1
where ...
За синтаксис не ручаюсь, давно я IB активно не юзал. Работало тормозно, и наверное коряво. Но работало. Для отчета пойдет.
Alexandr (2002-07-16 14:07:00) [6]поддерживается.
roottim (2002-07-16 14:05:00) [7]а в ИБ поддерживается ?
select
field,..,
(select field from...)
field
from mtable
where...
хотя не очень понятен вид отчета... хотябы пример
Doctor (2002-07-16 14:03:00) [8]а как через виртуальную таблицу, впервые слышу об этом
(надо в "горизонте")
ПИТОН (2002-07-16 14:03:00) [9]Попробуй юнионом объединить эти три таблицы в локальную так
select
optionid,sum(SUMMA) as summa ,count(dogovorid) as now, 0 as befor, 0 as after
from DOGOVOR
where zayavl_data <= :kon
group by optionId
Union all
select
optionid,0,0,count(dogovorid),0 from DOGOVOR
where zayavl_data <= :nach
group by optionId
union all
select
optionid,0,count(dogovorid),0,0 from DOGOVOR
where zayavl_data between :nach and :kon
group by optionId
а потом их просуммировать:
select optionid, sum(sum), sum(now), sum(befor), sum(after)
from localtable
group by optionid
Johnmen (2002-07-16 13:59:00) [10]Вариант такой.
Добавляем в каждый запрос поле XXX :
в первом - 1 AS XXX; в 2 - 2 AS XXX; 3 - 3 AS XXX
Объединяем запросы UNION ALL
В отчете делаем группировку по полю XXX
Если же надо в горизонте - то можно через виртуальную таблицу...
Doctor (2002-07-16 13:50:00) [11]вот 1 запрос
select
optionid,sum(SUMMA),count(dogovorid) from DOGOVOR
where zayavl_data <= :kon
group by optionId
2
select
optionid,sum(SUMMA),count(dogovorid) from DOGOVOR
where zayavl_data <= :nach
group by optionId
3
select
optionid,sum(SUMMA),count(dogovorid) from DOGOVOR
where zayavl_data between :nach and :kon
group by optionId
как объеденить все 3, если знаешь напиши
Johnmen (2002-07-16 13:48:00) [12]Приведи текст запроса и текст матюков...
Doctor (2002-07-16 13:45:00) [13]ну смотри, даже если будет название_табл.назв_поля
все равно то данные из 1 таблицы !!!
и будет матюкаться.........
Johnmen (2002-07-16 13:42:00) [14]укажи алиасы
Doctor (2002-07-16 13:39:00) [15]мне надо вывод 3 одинаковых поля для разных дат (периодов)
из за этого ругается компилятор, что не может раздуплить, где какое поле
Johnmen (2002-07-16 13:32:00) [16]Добрый Доктор, это неизлечимо ! :)))) Шучу.......:))))))
Ничто не мешает джойнить таблицу саму с собой. (Если это поможет...)