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


Автор: alf138 10.9.2011, 20:25
Сама таблица формируется по sql запросу в dbgrid, ее и нужно вывести в отчет но dbgride в fastreport не выводит. В fastreport я нашел adoquery,adodatabase. Не долго думая подцепил к базе и вуаля работает, но вот не задача есть строчка 
Код

WHERE Поставщик='post' and Дата=:dat'

почитав книжки нашел 
Код

frxReport1.Variables['data']:=ComboBox1.Text;
frxReport1.Variables['post']:=DBLookupComboBox1.KeyValue;

т.е из под delphi отправляю эти переменные в репорт, должны... Что делаю не так ?

Автор: DarkProg 10.9.2011, 21:13
Переменные надо для начала создать и уже потом к ним пытаться обратиться.

Цитата(alf138 @  10.9.2011,  21:25 Найти цитируемый пост)
почитав книжки нашел 

Лучше не книжки, а статьи по fastreport, там хорошо описано как обращаться к переменным.

P.S. я извиняюсь за то что не напишу прямо код здесь, т.к. просто на память не помню как к переменным обратиться, а самому лезть лень, как ни крути - суббота, вечер...

Автор: Данкинг 10.9.2011, 21:18
Цитата(alf138 @  10.9.2011,  21:25 Найти цитируемый пост)
В fastreport я нашел adoquery,adodatabase.

Это как? smile 
Цитата(alf138 @  10.9.2011,  21:25 Найти цитируемый пост)
Что делаю не так ? 

Я вопроса-то и не понял. Какое отношение условие запроса имеет к отчёту в FR?

Автор: alf138 11.9.2011, 12:23
Цитата(DarkProg @  10.9.2011,  21:13 Найти цитируемый пост)
Переменные надо для начала создать и уже потом к ним пытаться обратиться.

Цитата(alf138 @  10.9.2011,  21:25 Найти цитируемый пост)
почитав книжки нашел 

Лучше не книжки, а статьи по fastreport, там хорошо описано как обращаться к переменным.

P.S. я извиняюсь за то что не напишу прямо код здесь, т.к. просто на память не помню как к переменным обратиться, а самому лезть лень, как ни крути - суббота, вечер... 

Не не все так просто нужно добавить переменную в самом fastreport и все query понимает что за переменная.
Теперь осталось разобраться с датой 
Код

frxReport1.Variables['data']:=ComboBox1.Text;

так он ругается требует вида #dd/mm/yy#

Автор: Данкинг 11.9.2011, 12:34
Цитата(alf138 @  11.9.2011,  13:23 Найти цитируемый пост)
Не не все так просто нужно добавить переменную в самом fastreport

Report-Variables-Category = создаём новую категорию
Открываем категорию - жмём Variable = создана New Variable. При желании можно переименовать её как надо.

Добавлено через 36 секунд
Цитата(alf138 @  11.9.2011,  13:23 Найти цитируемый пост)
переменную в самом fastreport и все query понимает что за переменная. 

Только всё равно не понял связи с Query.

Автор: alf138 11.9.2011, 12:37
Цитата(Данкинг @  11.9.2011,  12:34 Найти цитируемый пост)
Только всё равно не понял связи с Query. 

ну дублирую запрос с delphi в fast report. Дабы что у меня получается в grid не где не существует. Всё решил проблему и сдатой нужно передовать как 
Код

frxReport1.Variables['dat']:=StrToDate(ComboBox1.Text);

Всем спасибо за внимание...

Автор: Данкинг 11.9.2011, 13:38
Цитата(alf138 @  11.9.2011,  13:37 Найти цитируемый пост)
Всем спасибо за внимание...

А, ну так всего лишь тип неверный был. Я-то думал, вопрос в том, как создать в отчёте переменные и получить к ним доступ из программы.

Автор: alf138 11.9.2011, 14:59
Не вига не решенный  smile  Теперь sql запрос робит все хорошо, но fastreport выдает только одну строчку, хотя их должно быть больше 10 ...

Автор: Данкинг 11.9.2011, 15:02
На FR какой компонент-то лежит?

Автор: alf138 11.9.2011, 15:03
frxreport, frxdbdataset, а в самос FR лежать adodatabase и adoquery... 
Мысли в слух: А зачем frxdbdataset ?

Автор: Данкинг 11.9.2011, 15:11
Цитата(alf138 @  11.9.2011,  16:03 Найти цитируемый пост)
А зачем frxdbdataset ?

Чтобы как раз ему указать набор данных (AdoQuery, AdoTable и т.п.) для отчёта.

У меня другие мысли вслух: почему нельзя воспользоваться стандартными AdoQuery, зачем надо лезть в FR? Кидаешь на форму frxdbdataset, как DataSet задаёшь ему AdoQuery (обычный, который с вкладки ADO). В настройках отчёта (меню DATA вроде) набором данных указываешь этот frxdbdataset, и в сам отчёт вставляешь поля из него. В AdoQuery запросом выбираешь, что нужно; данные передаются в отчёт.

Автор: alf138 11.9.2011, 15:23
Цитата(Данкинг @  11.9.2011,  15:11 Найти цитируемый пост)
У меня другие мысли вслух: почему нельзя воспользоваться стандартными AdoQuery, зачем надо лезть в FR? Кидаешь на форму frxdbdataset, как DataSet задаёшь ему AdoQuery (обычный, который с вкладки ADO). В настройках отчёта (меню DATA вроде) набором данных указываешь этот frxdbdataset, и в сам отчёт вставляешь поля из него. В AdoQuery запросом выбираешь, что нужно; данные передаются в отчёт. 

Даже если сделать так то все равно одна строчка выходит. Хотя по такому же запросу в dbgrid на форме вылазит шт 10... 
Все получилось, но как и сам не понял ( smile 

Автор: Данкинг 11.9.2011, 17:46
Цитата(alf138 @  11.9.2011,  16:23 Найти цитируемый пост)
Все получилось, но как и сам не понял

Хорошо, что хорошо кончается. smile 

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