Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Вопрос по FastReport 2.5


Автор: Serg1234 20.6.2006, 14:33
Добрый день.
Вопрос такой:
 - как определить из программы какая строка таблицы в данный момент обрабатывается при формировании отчета


Заранее благодарен. 

Автор: Vas 20.6.2006, 15:17
Цитата(Serg1234 @  20.6.2006,  14:33 Найти цитируемый пост)
- как определить из программы какая строка таблицы в данный момент обрабатывается при формировании отчета

Ясное дело текущая  smile 

А вообще не понял смысла вопроса, если надо просто проверить какое то значение поля текущей строки то в самом FR можно написать скрипт на Band или на Memo.
 

Автор: Serg1234 20.6.2006, 17:13
Что строка текущая - это понятно, не понятно какой номер этой строки. И как этот номер увидеть в программе, а не в самом отчете. (В самом отчете есть команда Line#)

Задача в том, что мне необходимо создать отчет в который заносится информация из нескольких таблиц. Создавать новую таблицу непосредственно для отчета не хочется. Поэтому возникает необходимость определить номер строки и посылать в отчет данные, которые соответствуют этой строке. 

Автор: bas 20.6.2006, 17:43
frRsGetValue,OnBeforePrint.
А зачем это надо ? Есть Maser data,Detail Data, Subdetail data.... 

Автор: Serg1234 20.6.2006, 18:16
OnBeforePrint - событие в отчете, а мне необходимо получить информацию в программе и с помощью функции заполнить переменную(например Cell1), которая для первой строки таблицы будет иметь одно значение, а для второй строки - другое. 

Автор: Vas 21.6.2006, 06:57
Цитата(Serg1234 @  20.6.2006,  18:16 Найти цитируемый пост)
OnBeforePrint - событие в отчете, а мне необходимо получить информацию в программе и с помощью функции заполнить переменную(например Cell1), которая для первой строки таблицы будет иметь одно значение, а для второй строки - другое.  

А запросом одним это сделать нельзя?  

Автор: ТоляМБА 22.6.2006, 06:14
Цитата(Serg1234 @  20.6.2006,  17:13 Найти цитируемый пост)
не понятно какой номер этой строки

Цитата(Serg1234 @  20.6.2006,  18:16 Найти цитируемый пост)
первой строки таблицы будет иметь одно значение, а для второй строки - другое.  
 smile  smile  smile Ну нету в таблицах понятия "номер строки". Если у меня в таблице 2 поля: Фирма, продажа.
Данные:
Альфа, 50
Дэльта, 10.
Если я отсортирую по полю Фирма - первая строка будет с Альфой, а если отсортирую по полю Продажа, то первой строкой будет Дэльта. Надеюсь понятно объяснил? Для идентефикации строки обычно вводится автоинкрементное поле ID.
 

Автор: Serg1234 26.6.2006, 08:53
Спасибо ТоляМБА, все понятно с номером строки.
Как я понял необходимо сформировать таблицу с данными для отчета и "вмешиваться" в процесс формирования отчета(печати таблицы) из программы я уже не могу?  

 

Автор: ТоляМБА 27.6.2006, 08:57
Цитата(Serg1234 @  26.6.2006,  08:53 Найти цитируемый пост)
сформировать таблицу с данными для отчета 
Ты формируешь не таблицу, а SQL-запрос.
Цитата(Serg1234 @  26.6.2006,  08:53 Найти цитируемый пост)
"вмешиваться" в процесс формирования отчета(печати таблицы) из программы я уже не могу? 
Задай корректный вопрос: какие данные ты хочешь получить (например список сотрудников принятых после 1 января 2006 года) и что с ними надо сделать (например посчитать количество, сумму зарплаты).
 

Автор: Serg1234 27.6.2006, 17:31
На счет корректного вопроса ты прав.
Я пишу на D7, для доступа к базе данных использую BDE. 
У меня есть Grid, в который я снес всю необходимую информацию с разных таблиц и теперь мне этот Grid необходимо распечатать.
Есть ли возможность обратится к переменным программы из отчета? 

Автор: bas 27.6.2006, 17:49
Цитата(Serg1234 @  27.6.2006,  17:31 Найти цитируемый пост)
У меня есть Grid, в который я снес всю необходимую информацию с разных таблиц и теперь мне этот Grid необходимо распечатать.

1.У DBGrid есть DataSource который в свою очередь привязан к 
DataSet где фактически и содержиться информация.
2.А использовать PrintGrid не пытались?
Или у вас StringGrid?
ЗЫ Отчет должен получать данные а не искать их.
 

Автор: Serg1234 29.6.2006, 21:28
Спасибо всем, кто откликнулся.
Вопрос я решил следующим образом с помощью объекта frVariables.
В скрипте одного из объектов в Master data записал
Код

 NumberLine:=[LINE#]

в программе в процедуре frReport1GetValue
Код

n := frVariables['NumberLine'];

n - это и есть тот номер который я искал.  smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)