Менять текст запроса не желательно, так как запрос тяжелый и выполняется долго.
Тогда в приложении в качестве источника данных использовать TClientDataSet или подобный, допускающий сортировку на клиенте. И сортировать на клиенте, без выполнения запроса к серверу.
Тогда в приложении в качестве источника данных использовать TClientDataSet или подобный, допускающий сортировку на клиенте. И сортировать на клиенте, без выполнения запроса к серверу.
Спасибо за ответ, но хотелось бы максимально перенести датасеты на сторону фастика. Типа есть модульок, который запускается из ком строки с параметрами и выводится готовый отчет. И еще, может в курсе почему при выполнении на Query ExecSql не подхватывает присвоенные параметры? Вот кусок кода из скриптаprocedure Button1OnClick(Sender: TfrxComponent);
begin
QTempObjects.ExecSQL;
QInsertTempObjects.Open;
QGeneralInfo.ExecSQL;
QbillDetail.Open;
QBillMaster.Open;
QOrganizationUnit.Open;
end;
При выполнении PrepareReport Access violation at address 0059FC87 in module 'rg.exe'. Read of address 000000EC.
В дизайнере все ок, как и при выполнении ShowReport.
В чем может быть проблема?
Спасибо за ответ, но хотелось бы максимально перенести датасеты на сторону фастика. Типа есть модульок, который запускается из ком строки с параметрами и выводится готовый отчет.
При таком подходе нормально можно использовать TClientDataSet. Если напрямую его использование противоречит религии, написать обертку к FR. Кстати, кто-то выкладывал в ньюсах.
При таком подходе нормально можно использовать TClientDataSet. Если напрямую его использование противоречит религии, написать обертку к FR. Кстати, кто-то выкладывал в ньюсах.
Постоянно использую параметры, никаких проблем. Сделай минималистический пример, на котором проявляется проблема, выложи. Посмотрим что и как.
Вроде понял в чем проблема, я использую обертку от компонента Sdac, так вот через нее параметры не подтягивает. Буду смотреть исходники.
Еще одна трабла нарисовалась с запуском модуля с параметрами. В проэкте есть только DataModule, на нем компоненты подключения и фастик. После успешного подключения пробую выполнить процедуру
procedure TForm20.run;
var
i: integer;
begin
report.LoadFromFile(ParamStr(2));
{ for i := 1 to ParamCount do
begin
if SearchString('@', ParamStr(i), 1) > 0 then
begin
if Report.Variables.IndexOf(ParsParam(ParamStr(i), 1)) <> -1 then
begin
Report.Variables[ParsParam(ParamStr(i), 1)] := '''' +
ParsParam(ParamStr(i), 2) + '''';
end;
end;
end; }
{ if ParamStr(1) = 'sh' then
begin
try}
Report.EngineOptions.NewSilentMode:= simSilent;
Report.PrepareReport(false);
Report.ShowPreparedReport;
{except
on E: Exception do ShowMessage(E.Message);
end;
end;
if ParamStr(1) = 'de' then
begin
Report.DesignReport;
end;}
end;
перед выводом любого отчета
First chance exception at $7C812AFB. Exception class EAccessViolation with message 'Access violation at address 0059FC87 in module 'rg.exe'. Read of address 000000EC'. Process rg.exe (2648)
Почему?
перед выводом любого отчета
First chance exception at $7C812AFB. Exception class EAccessViolation with message 'Access violation at address 0059FC87 in module 'rg.exe'. Read of address 000000EC'. Process rg.exe (2648)
Почему?
На какой строке ругается?
В отладчике по шагам, параметры коммандной сроки задать и запустить.
Это так странно датамодуль назван? Если в есть ещё и форма, скорее всего её нужно создать перед вызовам метода.
На какой строке ругается?
В отладчике по шагам, параметры коммандной сроки задать и запустить.
Сорри. Не из того места скопировал. датамодуль назван DM.
Выполнение валится на :
procedure TfrxReport.DoNotifyEvent(Obj: TObject; const EventName: String;
RunAlways: Boolean = False);
begin
{$IFNDEF FR_VER_BASIC}
if FEngine.Running or RunAlways then
if EventName <> '' then
FScript.CallFunction(EventName, VarArrayOf([Integer(Obj)]));
{$ENDIF}
end;
Это так странно датамодуль назван? Если в есть ещё и форма, скорее всего её нужно создать перед вызовам метода.
На какой строке ругается?
В отладчике по шагам, параметры коммандной сроки задать и запустить.
Комментарии
Скорее всего да. Только перед печатью бенда, нужно будет менять текст запроса.
Тогда в приложении в качестве источника данных использовать TClientDataSet или подобный, допускающий сортировку на клиенте. И сортировать на клиенте, без выполнения запроса к серверу.
begin
QTempObjects.ExecSQL;
QInsertTempObjects.Open;
QGeneralInfo.ExecSQL;
QbillDetail.Open;
QBillMaster.Open;
QOrganizationUnit.Open;
end;
При выполнении PrepareReport Access violation at address 0059FC87 in module 'rg.exe'. Read of address 000000EC.
В дизайнере все ок, как и при выполнении ShowReport.
В чем может быть проблема?
Постоянно использую параметры, никаких проблем. Сделай минималистический пример, на котором проявляется проблема, выложи. Посмотрим что и как.
Еще одна трабла нарисовалась с запуском модуля с параметрами. В проэкте есть только DataModule, на нем компоненты подключения и фастик. После успешного подключения пробую выполнить процедуру
перед выводом любого отчета
First chance exception at $7C812AFB. Exception class EAccessViolation with message 'Access violation at address 0059FC87 in module 'rg.exe'. Read of address 000000EC'. Process rg.exe (2648)
Почему?
Это так странно датамодуль назван? Если в есть ещё и форма, скорее всего её нужно создать перед вызовам метода.
На какой строке ругается?
В отладчике по шагам, параметры коммандной сроки задать и запустить.
Выполнение валится на :