Форум: "Начинающим";
Текущий архив: 2009.08.23;
Скачать: [xml.tar.bz2];
ВнизВызов ХП из 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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.005 c