1 (edited by Hram 2014-07-22 08:47:37)

Topic: Отчет FastReport по выбранным полям TableGrid

Доброго времени суток.
В англоязычной ветке форума рассматривается вопрос о перемещении в FastReport выбранной строки из TableGrid. Подскажите, как сделать если нужно вывести все содержимое таблицы (в таблице выборка из базы)?

Re: Отчет FastReport по выбранным полям TableGrid

Приветствую,


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


либо вы имеете ввиду вывести в отчет содержимое компонента TableGrid?
непосредственно это сделать не получится, вам необходимо сформировать SQL запрос для отчета, таким образом, чтобы в секции WHERE участвовали те же компоненты для поиска, которые использовались для кнопки Поиск, таким образом вы получите аналогичный результат для отчета.


в скором времени я сделаю возможность формировать отчет без использования SQL, процесс будет почти такой же, как настройка кнопки Поиск.

Dmitry.

3 (edited by Hram 2014-07-22 10:52:01)

Re: Отчет FastReport по выбранным полям TableGrid

Ок, но есть маленькая проблема. Если в условии стоит

WHERE ZapicNaPriem.Day={Data}

, то все работает, но если меняю на

WHERE ZapicNaPriem.First_Name={First_Name}

то выдает ошибку No such column:Александр.
ZapicNaPriem.First_Name текстовое поле. {First_Name} - TextBox.

Re: Отчет FastReport по выбранным полям TableGrid

необходимо написать так:

WHERE ZapicNaPriem.First_Name LIKE '{First_Name}'

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


в случае для TextBox

WHERE
(case when '{edFirstName}'='' then 1=1 else person.firstname LIKE '%{edFirstName}%' end) AND
(case when '{edLastName}'='' then 1=1 else person.lastname LIKE '%{edLastName}%' end);

в случае для ComboBox

WHERE (case when {ComboBox1}=-1 then 1=1 else {ComboBox1}=id_group end)

в случае для DateTimePicker

(case when ifnull({DateTimePicker1},1)=1 then 1=1 else person.datebirth = {DateTimePicker} end)
Dmitry.

Re: Отчет FastReport по выбранным полям TableGrid

Понял. Спасибо за дополнения.

6 (edited by Hram 2014-07-24 12:33:50)

Re: Отчет FastReport по выбранным полям TableGrid

Кстати, по сабжу.. Реализовал, но опять же через костыль.
Создается копия целевой таблицы, в нее идет все сохранение и с нее берутся необходимые данные для Report, затем через
INSERT INTO все копируется в целевую таблицу, затем  DELETE from Temp на OnClose формы.
Как-то так...

7 (edited by Чучкин Евгений 2014-08-07 04:28:48)

Re: Отчет FastReport по выбранным полям TableGrid

Добрый день.
Столкнулся со следующей проблемой.
При формировании отчета из нескольких таблиц в одной из граф отчета (скажем наименование организации из  базовой таблицы) некоторые строки не заполняются именно по одной графе. все остальные вторичные графы заполняются а первая нет. Причем это характерно только для от дельных строк. мистика какая то.



Все извините за беспокойство. Накосячил в запросе.

Re: Отчет FastReport по выбранным полям TableGrid

Добрый день.
Окажите нубу помощь кто может. Дайте совет по формированию отчета с использованием SQL запроса.
Есть 4 таблицы:
1. Организация
2. Проекты
3. Договоры
4. Платежи по договорам

Каждая из последующих является как бы наследницей предыдущей.

Соответственно в отчете я хочу выбрать данные о проеке (табл2) опредленной организации (табл1) с 2-я таблицами (о действующих договорах и платежам по каждому договору).
Проблема в следующем. Если я делаю select данных from Таблица 4 то при отсутствии платежа выбор данных вобще не производиться (а мне надо чтобы шапка отчета все равно содержала данные из тблицы 1 и таблицы 2). Если есть хоть 1 платеж - то все нормально.
Если же я делаю запрос select из Таблицы 2 то шапка всегда выводится но при наличии нескольких платежей (таблица 4) данные о количестве договоров (из Таблицы 3)  дублируются по количеству записей из таблицы 4 (а мне надо чтобы в отчете отражался список Договоров.

Пример отчета:
Организация
- все реквизиты
Проект
- все параметры проекта
Таблица Договоров по данному проекту
- с параметрами
Таблица платежей
- с параметрами привязки к договору.

Если не понятно объяснил - ответьте плиз.

Re: Отчет FastReport по выбранным полям TableGrid

Чучкин Евгений
вам необходимо правильно соединить таблицы, подробней почитать об этом можно здесь
http://www.k-press.ru/cs/2009/3/join/join.asp


скопируйте пожалуйста ваш SQL запрос сюда, попробую исправить.

Dmitry.

Re: Отчет FastReport по выбранным полям TableGrid

DriveSoft wrote:

Чучкин Евгений
вам необходимо правильно соединить таблицы, подробней почитать об этом можно здесь
http://www.k-press.ru/cs/2009/3/join/join.asp


скопируйте пожалуйста ваш SQL запрос сюда, попробую исправить.

SELECT
organ.*
,Proj.name as name_proj
,service.*
,position.*
FROM position
left join service on service.id=position.id_service
left join Proj on Proj.id=position.id_Proj
left join organ on organ.id=position.id_organ
WHERE organ.id = '{ComboBox1}' and proj.id = '{ComboBox2}'

Re: Отчет FastReport по выбранным полям TableGrid

Помогите реализовать: в Отчет (SQL) необходимо поместить id записи при свойстве комбобокса мултиселект?

Re: Отчет FastReport по выбранным полям TableGrid

delphinsl wrote:

Помогите реализовать: в Отчет (SQL) необходимо поместить id записи при свойстве комбобокса мултиселект?

Пожалуйста создайте отдельную тему и опишите вопрос более подробно.

Dmitry.

13 (edited by sts36 2018-01-20 15:57:55)

Re: Отчет FastReport по выбранным полям TableGrid

DriveSoft wrote:

в скором времени я сделаю возможность формировать отчет без использования SQL, процесс будет почти такой же, как настройка кнопки Поиск.

Доброго дня, реализована ли данная возможность в текущей версии программы? Если да то подскажите как сделать? sad
Необходимо вывести в отчет содержимое компонента TableGrid которое формируется кнопкой Поиск в (поиске участвуют 10 компонентов), или только так

WHERE
(case when '{edFirstName}'='' then 1=1 else person.firstname LIKE '%{edFirstName}%' end) AND
(case when '{edLastName}'='' then 1=1 else person.lastname LIKE '%{edLastName}%' end);

Ворпос снят. Разобрался.

You should set up button [REPORT] in the same way like button [SEARCH] after that you will get same result for the report.