Topic: Сводная таблица в Fast Report

Надеюсь в этот раз не оплашаю с вопросом.
Есть SQL запрос на вывод отчета
SELECT INC.INC,INC.Date,INC.id_Performers,INC.id_Departament,INC.id_Result,INC.id_Time,INC.Date close,Departament.Departament,Performers.Performer,Accepted.Accepted,Difficulty.Difficulty,Time.Time,Result.Result
FROM INC
LEFT OUTER JOIN Performers ON Performers.id=id_Performers
LEFT OUTER JOIN Departament ON Departament.id=id_Departament
LEFT OUTER JOIN Accepted ON Accepted.id=id_Accepted
LEFT OUTER JOIN Difficulty ON Difficulty.id=id_Difficulty
LEFT OUTER JOIN Time ON Time.id=id_Time
LEFT OUTER JOIN Result ON Result.id=id_Result
WHERE INC.Date BETWEEN {DateTimePicker5} AND {DateTimePicker6} AND INC.id_Performers={ComboBox5}

от отчета требуется генерировать сводную таблицу. Но такого компонента нет в FastReport(если следовать справке по FastReport он должен быть), есть ли какие-то пути решения этой задачи?

Спасибо.

Re: Сводная таблица в Fast Report

Скачайте пожалуйста неофициальную версию 1.41, добавил данный компонент для сводной таблицы
https://www.dropbox.com/s/fr76z69sc69l1 … 201.41.zip


к сожалению не работал со сводными отчетами, поэтому мало что могу подсказать по ним.

Dmitry.

Re: Сводная таблица в Fast Report

Огромное спасибо! То что было нужно!
Очень приятно видеть настолько внимательного разработчика реагирующего максимально быстро на вопросы пользователей!

Есть один вопрос, никак не могу найти ответа. Как в запросе указать условие на комбобокс и если там пусто, то вывести все записи.
Пример:
WHERE Task.id_Performers={ComboBox5} OR ....

Еще раз спасибо!

Re: Сводная таблица в Fast Report

djon.home
WHERE (case when {ComboBox5}=-1 then 1=1 else Task.id_Performers={ComboBox5} end) OR ....

Dmitry.

Re: Сводная таблица в Fast Report

Как всегда в самую точку, спасибо!

Re: Сводная таблица в Fast Report

Тяжело пока с SQL, если не сложно задам еще один вопрос.
Как в одном запросе соединить два и более таких запроса:
1.
SELECT INC.INC,INC.Date,INC.id_Performers,INC.id_Departament,INC.id_Result,INC.id_Time,INC.Date close,Departament.Departament,Performers.Performer,Accepted.Accepted,Difficulty.Difficulty,Time.Time,Result.Result
FROM INC
LEFT OUTER JOIN Performers ON Performers.id=id_Performers
LEFT OUTER JOIN Departament ON Departament.id=id_Departament
LEFT OUTER JOIN Accepted ON Accepted.id=id_Accepted
LEFT OUTER JOIN Difficulty ON Difficulty.id=id_Difficulty
LEFT OUTER JOIN Time ON Time.id=id_Time
LEFT OUTER JOIN Result ON Result.id=id_Result
WHERE INC.Date BETWEEN {DateTimePicker5} AND {DateTimePicker6} AND (case when {ComboBox5}=-1 then 1=1 else INC.id_Performers={ComboBox5} end and case when {ComboBox7}=-1 then 1=1 else INC.id_Departament={ComboBox7} end)
2.
SELECT Task.TaskC,Task.Date,Task.id_Performers,Task.id_Departament,Task.id_Result,Task.id_Time,Task.Date close,Departament.Departament,Performers.Performer,Accepted.Accepted,Difficulty.Difficulty,Time.Time,Result.Result
FROM Task
LEFT OUTER JOIN Performers ON Performers.id=id_Performers
LEFT OUTER JOIN Departament ON Departament.id=id_Departament
LEFT OUTER JOIN Accepted ON Accepted.id=id_Accepted
LEFT OUTER JOIN Difficulty ON Difficulty.id=id_Difficulty
LEFT OUTER JOIN Time ON Time.id=id_Time
LEFT OUTER JOIN Result ON Result.id=id_Result
WHERE Task.Date BETWEEN {DateTimePicker5} AND {DateTimePicker6} AND (case when {ComboBox5}=-1 then 1=1 else Task.id_Performers={ComboBox5} end and case when {ComboBox7}=-1 then 1=1 else Task.id_Departament={ComboBox7} end)

Re: Сводная таблица в Fast Report

djon.home

сложно сказать, я не знаю какая имеется связь между таблицами INC и Task


Таблицы объединяются с помощью JOIN, как вы сами видите в вашем запросе, так же можно объединить два и более независимых запроса с помощью оператора UNION, но при это у каждого запроса должно быть одинаковое количество полей и их тип. Более подробно об этом способе можно прочитать здесь http://www.sql.ru/docs/sql/u_sql/ch14.shtml

Dmitry.

Re: Сводная таблица в Fast Report

Дело в том, что таблицы INC и Task никак не связаны, кроме того, что используют общие связанные таблицы(словари). Оператор Union их соединит в общую кашу без заголовков. У меня необходимость просто объединить два однотипных запроса в один, для формирования сводного отчета из двух разных таблиц.

Re: Сводная таблица в Fast Report

djon.home

Тогда думаю только UNION поможет, заголовки можно задать в двух запросах одинаковые, с помощью псевдонимов, SELECT field as "fieldname" и в каждом отдельном запросе завести дополнительное поле, в котором будет содержать некий идентификатор, чтобы различать  в отчете данные от какого запроса пришли, например

SELECT "01" as "idsql", field...

UNION

SELECT "02"  as "idsql", field...


а далее в отчетах можно уже воспользоваться скриптом при необходимости, чтобы различить данные, от какого запроса пришли, с помощью поля idsql

Dmitry.