Сортировка датасет

отредактировано 16:34 Раздел: FastReport 4.0
Здрасте. Можно ли создать один TfrxADOQuery в дизейнере и использовать датасет в двух разных masterdata с разной сортировкой.

Комментарии

  • Lizard~Lizard~ Тольятти
    отредактировано 16:34
    VAbramyak написал: »
    Здрасте. Можно ли создать один TfrxADOQuery в дизейнере и использовать датасет в двух разных masterdata с разной сортировкой.

    Скорее всего да. Только перед печатью бенда, нужно будет менять текст запроса.
  • отредактировано 16:34
    LizarD написал: »
    Скорее всего да. Только перед печатью бенда, нужно будет менять текст запроса.
    Менять текст запроса не желательно, так как запрос тяжелый и выполняется долго.
  • Lizard~Lizard~ Тольятти
    отредактировано 16:34
    VAbramyak написал: »
    Менять текст запроса не желательно, так как запрос тяжелый и выполняется долго.

    Тогда в приложении в качестве источника данных использовать TClientDataSet или подобный, допускающий сортировку на клиенте. И сортировать на клиенте, без выполнения запроса к серверу.
  • отредактировано 16:34
    LizarD написал: »
    Тогда в приложении в качестве источника данных использовать 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.
    В чем может быть проблема?
  • Lizard~Lizard~ Тольятти
    отредактировано 16:34
    VAbramyak написал: »
    Спасибо за ответ, но хотелось бы максимально перенести датасеты на сторону фастика. Типа есть модульок, который запускается из ком строки с параметрами и выводится готовый отчет.
    При таком подходе нормально можно использовать TClientDataSet. Если напрямую его использование противоречит религии, написать обертку к FR. Кстати, кто-то выкладывал в ньюсах.
    VAbramyak написал: »
    И еще, может в курсе почему при выполнении на Query ExecSql не подхватывает присвоенные параметры?

    Постоянно использую параметры, никаких проблем. Сделай минималистический пример, на котором проявляется проблема, выложи. Посмотрим что и как.
  • отредактировано 16:34
    LizarD написал: »
    При таком подходе нормально можно использовать 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)
    Почему?
  • Lizard~Lizard~ Тольятти
    отредактировано 16:34
    VAbramyak написал: »
    В проэкте есть только DataModule, на нем компоненты подключения и фастик. После успешного подключения пробую выполнить процедуру

    procedure TForm20.run;
    end;
    

    Это так странно датамодуль назван? Если в есть ещё и форма, скорее всего её нужно создать перед вызовам метода.
    VAbramyak написал: »
    перед выводом любого отчета
    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)
    Почему?
    На какой строке ругается?
    В отладчике по шагам, параметры коммандной сроки задать и запустить.
  • отредактировано 16:34
    LizarD написал: »
    Это так странно датамодуль назван? Если в есть ещё и форма, скорее всего её нужно создать перед вызовам метода.
    На какой строке ругается?
    В отладчике по шагам, параметры коммандной сроки задать и запустить.
    Сорри. Не из того места скопировал. датамодуль назван 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;
    
  • отредактировано 16:34
    LizarD написал: »
    Это так странно датамодуль назван? Если в есть ещё и форма, скорее всего её нужно создать перед вызовам метода.
    На какой строке ругается?
    В отладчике по шагам, параметры коммандной сроки задать и запустить.
    прокрутил в отладчике. Валится на
    frxclass.Tfrxreport.DoEventNotify(nil,'蛀ƪ䞖@㊨粐'#$12''#$12''#$12''#$12''#$12#$32BC'粐'#$12''#$12'㉺粐'#$12''#$12''#$12''#$12'앜K'#1#0''#$12''#$12#$AA0F'粒'#$12''#$12''#$12''#$12'앜...
    
    Шо за ерунда такая?

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.