Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.08.23;
Скачать: CL | DM;

Вниз

Вызов ХП из FastReport   Найти похожие ветки 

 
девушка   (2009-06-17 12:22) [0]

Добрый день!

Помогите пожалуйста, не могу понять в чем туплю.
Хочу в FR вызвать процедуру с параметрами.

В design-time создаю в репорте ADOQuery, цепляю его через frxADOComponent к своему основному коннекшену.

В тексте ADOQuery пишу вызов хранимки. Набор возвращаемых полей он определеяет.
НО!

Если пишу вызов просто процедуры (у которой нет параметров), то все работает.

exec dbo.p_select_PERSON_all


А если пишу вызов процедуры с параметром:

exec dbo.p_select_PERSON 1

то ничего не возвращает. Тот же самый запрос в SQLредакторе возвращает нужные данные.

В чем туплю???

Delphi 2005, FR 4


 
девушка   (2009-06-17 13:02) [1]

О! Вообще перестало анные возвращать... может быть по каким-то причинам не переоткрывается Query?


 
Dennis I. Komarov ©   (2009-06-17 13:08) [2]

1. Query -> DataSet
2. Вызвать процедуру скажем из QA(или аналоги)


 
девушка   (2009-06-17 13:11) [3]

Извините, все работает - просто какое-то сочетание моих внутренних глюков.
Создала чистый отчет, создала новые квери - все берет.
Осталось только параметры в отчет передаваить и все зашибись будет.


 
Dennis I. Komarov ©   (2009-06-17 13:13) [4]

Все-таки Query замените...


 
девушка   (2009-06-17 13:29) [5]

Да нету у меня такого компонента в фаст-репорте :(
Я создаю квери в САМОМ ОТЧЕТЕ


 
девушка   (2009-06-17 13:30) [6]

Странный глюк - когда создаю Query в уже существующем отчете - ничего не возвращает :(

И еще вопрос - на какое событие повесить присвоение параметров?


 
Dennis I. Komarov ©   (2009-06-17 13:32) [7]

:) А у меня FR. если нету, тогда не меняйте...


 
Dennis I. Komarov ©   (2009-06-17 13:33) [8]


> И еще вопрос - на какое событие повесить присвоение параметров?

???


 
девушка   (2009-06-17 13:38) [9]

имелось ввиду:

var C: TfrxComponent;
...
 C:=frxReport1.FindObject("ADOQuery1");
 if (C <> nil) and (C is TfrxADOQuery) then
   TfrxADOQuery(C).ParamByName("IdDoc").Value:=DBGrid.DataSource.DataSet.FieldValue s["IdDoc"];
...
 frxReport1.ShowReport();


ADOQuery - не компонент на форме, а компонент ВНУТРИ ОТЧЕТА


 
девушка   (2009-06-17 13:38) [10]

все-равно нифига не работает :(
параметр присваивает - но показывает пустую страницу


 
Dennis I. Komarov ©   (2009-06-17 13:45) [11]

речь вроде о хранимках шла, зачем ParamByName?

P.S.
 У меня нету FR...


 
девушка   (2009-06-17 13:55) [12]

Оказывается, тут дело вообще не в параметрах.

Profiler показывает что запрос вообще не отправляется на сервер.

В дата модуле есть ADOConnection - через который работают все датасеты в программе.
Для FR кидаю на форму frxADOComponents1, указываю там DefaultDatabase мой ADOConnection.
Кидаю на форму компонент frxReport. Создаю новый отчет.
В отчете в разделе Data кидаю ADOQuery. Этот ADOQuery сразу видет мой ADOConnection. У ADOQuery скуль-текст.

Так вот - похоже что где-то глючит вся эта связка и в момент когда я вызываю
frxReport.ShowReport();

Обнавление данных в ADOQuery не происходит :(


 
девушка   (2009-06-17 14:01) [13]

пробовала (запрос уже без параметров)

procedure Page1OnBeforePrint(Sender: TfrxComponent);
begin
 ShowMessage("Page1OnBeforePrint");                                
ADOQuery.Active:=true;
ShowMessage("Page1OnBeforePrint end");    
end;


не помогло.
Но профайлер видит что запрос был и отработал.


 
Dennis I. Komarov ©   (2009-06-17 14:27) [14]

Девушку не Виталиком зовут?


 
девушка   (2009-06-17 16:49) [15]

Нет - Катей.


 
Dennis I. Komarov ©   (2009-06-17 17:05) [16]


> Но профайлер видит что запрос был и отработал.

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


 
AndreyV ©   (2009-06-18 16:14) [17]

> [9] девушка   (17.06.09 13:38)
> имелось ввиду:
>
> var C: TfrxComponent;
> ...
> C:=frxReport1.FindObject("ADOQuery1");
> if (C <> nil) and (C is TfrxADOQuery) then
>   TfrxADOQuery(C).ParamByName("IdDoc").Value:=DBGrid.DataSource.DataSet.
> FieldValue s["IdDoc"];
> ...
> frxReport1.ShowReport();
>
> ADOQuery - не компонент на форме, а компонент ВНУТРИ ОТЧЕТА

По моему не понимание подходов ФР. Зачем лезть из хоста в "ADOQuery компонент ВНУТРИ ОТЧЕТА"? Ну и создай TADOQuery на форме и сделай всё как обычно, а свяжи с ФР посредством TfrxDBDataSet, или уж всё делай в ФР - TfrxADOQuery обёртка над TADOQuery, для изменения отчёта без перекомпиляции, но, как я вижу, у тебя не тот случай.


 
девушка   (2009-06-20 09:15) [18]


> как я вижу, у тебя не тот случай.


вся идея-то какраз в том чтобы вынести логику построения отчета из приложения. Вот у меня в приложении 10 видов отчетов, принимающих 1-2 целочисленых параметра.
Я хочу вынести все запросы в отчет и передавать туда переменные, а отчет уж пусть сам разбирается что да как...


 
AndreyV ©   (2009-06-20 22:57) [19]

> [18] девушка   (20.06.09 09:15)
> Я хочу вынести все запросы в отчет и передавать туда переменные,
> а отчет уж пусть сам разбирается что да как...

А в [9] что?

Надо назначить обработчик на OnGetValue и в нём передавать значение переменных в ФР.


 
Dennis I. Komarov ©   (2009-06-22 17:02) [20]


> Я хочу вынести все запросы в отчет и передавать туда переменные,
>  а отчет уж пусть сам разбирается что да как...

:) Я поражен логикой...

А давайте праграммировать "на отчетах и т.п." Зыж здорово - прикрутил отчет и программа готова  :)


 
AndreyV ©   (2009-06-22 19:20) [21]

> [20] Dennis I. Komarov ©   (22.06.09 17:02)
> > Я хочу вынести все запросы в отчет и передавать туда переменные,
> >  а отчет уж пусть сам разбирается что да как...
>
> :) Я поражен логикой...
>
> А давайте праграммировать "на отчетах и т.п." Зыж здорово
> - прикрутил отчет и программа готова  :)

Да нормальная логика - ФР это позволяет, в том его большой плюс, вот у автора, похоже, каша в голове.



Страницы: 1 вся ветка

Текущий архив: 2009.08.23;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.008 c
1-1212564995
Trei
2008-06-04 11:36
2009.08.23
Ссылка


2-1245754773
Priest
2009-06-23 14:59
2009.08.23
Как правильно работать с палитрой


15-1245702601
Юрий
2009-06-23 00:30
2009.08.23
С днем рождения ! 23 июня 2009 вторник


2-1245781221
Footballer
2009-06-23 22:20
2009.08.23
Не дать закрыть чужому приложению


2-1245831668
Polkin
2009-06-24 12:21
2009.08.23
Убрать XPManifest