Erro Quick Report Windows XP (Access Violation)

Delphi

22/09/2006

Olá amigos, estou com um problema e tanto aqui e peço a ajuda de vocês.

É o seguinte eu tenho uma aplicação em [b:eb1eb8f410]Delphi 5 x BDE x Paradox[/b:eb1eb8f410] rodando em Windows XP. Quando eu dou um preview no QuickReport ele ocasionalmente dá erro de Access Violation quando eu dou um [b:eb1eb8f410]Free[/b:eb1eb8f410] no Form(TQuickRep) e se eu tentar dar Preview em outro ele mosta a mensagem:
[color=blue:eb1eb8f410][b:eb1eb8f410] A component named ´QRStandardPreview´ alread exist´[/b:eb1eb8f410][/color:eb1eb8f410]

Estou precisando resolver isso com urgencia!

Aqui vai o código completo do Form:

unit RelOSI2;

interface

uses Windows, SysUtils, Messages, Classes, Graphics, Controls,
  StdCtrls, ExtCtrls, Forms, Quickrpt, QRCtrls, Db, DBTables, ImgList;

type
  TQROsi2 = class(TQuickRep)
    qrReport: TQuery;
    qrTintas: TQuery;
    qrVariacoes: TQuery;
    PageHeaderBand1: TQRBand;
    lblOSI: TQRLabel;
    DetailBand1: TQRBand;
    QRShape1: TQRShape;
    QRLabel3: TQRLabel;
    QRLabel4: TQRLabel;
    QRLabel5: TQRLabel;
    QRLabel6: TQRLabel;
    QRLabel7: TQRLabel;
    QRLabel8: TQRLabel;
    QRLabel9: TQRLabel;
    lbUrgente: TQRLabel;
    QRLabel11: TQRLabel;
    QRLabel12: TQRLabel;
    QRLabel13: TQRLabel;
    QRLabel14: TQRLabel;
    QRLabel15: TQRLabel;
    QRLabel16: TQRLabel;
    QRLabel17: TQRLabel;
    QRLabel18: TQRLabel;
    QRLabel19: TQRLabel;
    QRLabel20: TQRLabel;
    QRLabel21: TQRLabel;
    QRLabel22: TQRLabel;
    QRLabel25: TQRLabel;
    QRLabel26: TQRLabel;
    QRLabel27: TQRLabel;
    QRLabel28: TQRLabel;
    QRLabel29: TQRLabel;
    QRLabel30: TQRLabel;
    QRLabel31: TQRLabel;
    QRLabel32: TQRLabel;
    QRLabel33: TQRLabel;
    QRLabel34: TQRLabel;
    QRLabel35: TQRLabel;
    QRLabel36: TQRLabel;
    QRLabel37: TQRLabel;
    QRLabel38: TQRLabel;
    QRLabel39: TQRLabel;
    QRLabel40: TQRLabel;
    QRLabel41: TQRLabel;
    QRLabel42: TQRLabel;
    QRLabel43: TQRLabel;
    QRLabel46: TQRLabel;
    QRLabel47: TQRLabel;
    QRLabel48: TQRLabel;
    QRLabel49: TQRLabel;
    QRLabel50: TQRLabel;
    QRLabel51: TQRLabel;
    QRLabel52: TQRLabel;
    QRLabel53: TQRLabel;
    QRLabel56: TQRLabel;
    QRLabel57: TQRLabel;
    QRLabel58: TQRLabel;
    QRLabel59: TQRLabel;
    QRLabel54: TQRLabel;
    QRLabel60: TQRLabel;
    QRLabel61: TQRLabel;
    QRLabel63: TQRLabel;
    QRLabel64: TQRLabel;
    QRDBText1: TQRDBText;
    QRDBText2: TQRDBText;
    QRDBText3: TQRDBText;
    QRDBText4: TQRDBText;
    QRDBText5: TQRDBText;
    QRDBText6: TQRDBText;
    QRDBText7: TQRDBText;
    QRDBText8: TQRDBText;
    QRDBText9: TQRDBText;
    QRDBText10: TQRDBText;
    QRDBText11: TQRDBText;
    QRDBText12: TQRDBText;
    QRDBText13: TQRDBText;
    QRDBText14: TQRDBText;
    QRDBText15: TQRDBText;
    QRDBText16: TQRDBText;
    QRDBText17: TQRDBText;
    QRDBText18: TQRDBText;
    QRDBText19: TQRDBText;
    QRDBText20: TQRDBText;
    QRDBText21: TQRDBText;
    QRDBText22: TQRDBText;
    QRDBText23: TQRDBText;
    QRDBText24: TQRDBText;
    QRDBText25: TQRDBText;
    QRDBText26: TQRDBText;
    QRDBText27: TQRDBText;
    QRDBText28: TQRDBText;
    QRDBText29: TQRDBText;
    QRDBText30: TQRDBText;
    QRDBText31: TQRDBText;
    QRDBText32: TQRDBText;
    QRDBText33: TQRDBText;
    QRDBText34: TQRDBText;
    QRDBText35: TQRDBText;
    QRDBText36: TQRDBText;
    QRDBText37: TQRDBText;
    QRDBText38: TQRDBText;
    QRDBText39: TQRDBText;
    QRDBText40: TQRDBText;
    QRDBText42: TQRDBText;
    QRDBText43: TQRDBText;
    QRDBText44: TQRDBText;
    QRDBText45: TQRDBText;
    QRDBText46: TQRDBText;
    QRDBText47: TQRDBText;
    QRLabel10: TQRLabel;
    QRLabel23: TQRLabel;
    QRLabel24: TQRLabel;
    QRLabel44: TQRLabel;
    QRLabel45: TQRLabel;
    QRLabel55: TQRLabel;
    lblCor: TQRLabel;
    lblLocal: TQRLabel;
    lblTinta: TQRLabel;
    lblAcabamento: TQRLabel;
    lblT: TQRLabel;
    lblR: TQRLabel;
    QRLabel65: TQRLabel;
    QRLabel66: TQRLabel;
    QRLabel67: TQRLabel;
    QRDBText48: TQRDBText;
    QRDBText49: TQRDBText;
    QRDBText50: TQRDBText;
    QRLabel68: TQRLabel;
    QRLabel69: TQRLabel;
    QRLabel70: TQRLabel;
    QRLabel71: TQRLabel;
    QRLabel72: TQRLabel;
    lblAssinatura: TQRLabel;
    lblQuant: TQRLabel;
    lblFilme: TQRLabel;
    lblPrazo: TQRLabel;
    lblImpEm: TQRLabel;
    QRLabel78: TQRLabel;
    lblNumero: TQRLabel;
    QRLabel80: TQRLabel;
    QRLabel79: TQRLabel;
    QRDBText51: TQRDBText;
    QRDBText52: TQRDBText;
    QRDBText53: TQRDBText;
    QRDBText54: TQRDBText;
    QRLabel81: TQRLabel;
    QRLabel82: TQRLabel;
    QRLabel83: TQRLabel;
    QRDBText55: TQRDBText;
    QRDBText56: TQRDBText;
    QRDBText57: TQRDBText;
    QRDBText58: TQRDBText;
    QRImage1: TQRImage;
    QRShape7: TQRShape;
    QRShape2: TQRShape;
    qrOSIAcab: TQuery;
    tbCores: TTable;
    QRLabel85: TQRLabel;
    QRDBText59: TQRDBText;
    QRDBText60: TQRDBText;
    QRDBText61: TQRDBText;
    QRDBText62: TQRDBText;
    QRDBText63: TQRDBText;
    QRLabel2: TQRLabel;
    QRLabel62: TQRLabel;
    ImageList1: TImageList;
    QRShape3: TQRShape;
    QRShape4: TQRShape;
    QRShape5: TQRShape;
    procedure QRDBText16Print(sender: TObject; var Value: String);
    procedure QRDBText1Print(sender: TObject; var Value: String);
    procedure QRDBText11Print(sender: TObject; var Value: String);
    procedure QRDBText12Print(sender: TObject; var Value: String);
    procedure QRDBText17Print(sender: TObject; var Value: String);
    procedure QRDBText18Print(sender: TObject; var Value: String);
    procedure QRDBText20Print(sender: TObject; var Value: String);
    procedure DetailBand1BeforePrint(Sender: TQRCustomBand;
      var PrintBand: Boolean);
    procedure QRDBText51Print(sender: TObject; var Value: String);
    procedure QRDBText58Print(sender: TObject; var Value: String);
    procedure QRDBText4Print(sender: TObject; var Value: String);
    procedure QRDBText36Print(sender: TObject; var Value: String);
    procedure QRDBText41Print(sender: TObject; var Value: String);
    procedure QRDBText40Print(sender: TObject; var Value: String);
    procedure PageHeaderBand1AfterPrint(Sender: TQRCustomBand;
      BandPrinted: Boolean);
  private
    procedure MontarListaCores(osi: Integer);
    procedure MontarListaVariacoes(osi: Integer);
    procedure MontarShapeCampos;
  public

  end;

var
  QROsi2: TQROsi2;

procedure ImprimirDadosOSI_parte1(osi: Integer);

implementation

uses Datatb, Generico;

{$R *.DFM}

{------------------------------------------------------------------------}
procedure TQROsi2.MontarListaCores(osi: Integer);
var lCor, lLocal, lTinta, lAcab, lT, lR: TQRLabel;
    desloc: Integer;
  procedure PreencherLabels;
  begin
    with qrTintas do
    begin
      lCor.Caption := ´ ´ + FieldByName(´COR´).AsString;
      lLocal.Caption := ´ ´ + FieldByName(´LOCAL´).AsString;
      lTinta.Caption := ´ ´ + FieldByName(´TIPO´).AsString;
      lAcab.Caption := ´ ´ + FieldByName(´ACAB´).AsString;
      if FieldByName(´TESTE´).AsString = ´S´
      then lT.Caption := ´X´
      else lT.Caption := ´ ´;
      if FieldByName(´RELEVO´).AsString = ´S´
      then lR.Caption := ´X´
      else lR.Caption := ´ ´;
    end;
  end;
  procedure CriarLabels;
    function DuplicarLabel(l_ori: TQRLabel): TQRLabel;
    begin
      Result := TQRLabel.Create(Self);
      Result.Parent := DetailBand1; // l_ori.Parent;
      Result.Font := l_ori.Font;
      Result.Alignment := l_ori.Alignment;
      Result.AutoSize := l_ori.AutoSize;
      Result.WordWrap := l_ori.WordWrap;
      Result.Left := l_ori.Left;
      Result.Width := l_ori.Width;
      Result.Frame.DrawLeft := l_ori.Frame.DrawLeft;
      Result.Frame.DrawRight := l_ori.Frame.DrawRight;
      Result.Frame.DrawTop := l_ori.Frame.DrawTop;
      Result.Frame.DrawBottom := l_ori.Frame.DrawBottom;
      Result.Top := l_ori.Top + l_ori.Height - 1;
      Result.Tag := l_ori.Tag;
    end;
  begin
    lCor := DuplicarLabel(lCor);
    lLocal := DuplicarLabel(lLocal);
    lAcab := DuplicarLabel(lAcab);
    lTinta := DuplicarLabel(lTinta);
    lT := DuplicarLabel(lT);
    lR := DuplicarLabel(lR);

    desloc := desloc + lCor.Height - 1;
  end;
begin
  lblCor.Caption := ´´;
  lblLocal.Caption := ´´;
  lblTinta.Caption := ´´;
  lblAcabamento.Caption := ´´;
  lblT.Caption := ´´;
  lblR.Caption := ´´;

  desloc := 0;

  with qrTintas do
  begin
    Params[0].AsInteger := osi;
    Open;

    if RecordCount > 0 then
    begin
      lCor := lblCor;
      lLocal := lblLocal;
      lAcab := lblAcabamento;
      lTinta := lblTinta;
      lT := lblT;
      lR := lblR;

      PreencherLabels;

      Next;

      while not Eof do
      begin
        // criar novas linhas na tabela
        CriarLabels;
        PreencherLabels;
        Next;
      end;
    end;
    Close;
  end;

  if desloc > 0 then
  begin
    QRLabel65.Top := QRLabel65.Top + desloc;
    QRLabel66.Top := QRLabel66.Top + desloc;
    QRLabel67.Top := QRLabel67.Top + desloc;
    QRDBText48.Top := QRDBText48.Top + desloc;
    QRDBText49.Top := QRDBText49.Top + desloc;
    QRDBText50.Top := QRDBText50.Top + desloc;

    QRLabel81.Top := QRLabel81.Top + desloc;
    QRLabel82.Top := QRLabel82.Top + desloc;
    QRLabel83.Top := QRLabel83.Top + desloc;
    QRDBText55.Top := QRDBText55.Top + desloc;
    QRDBText56.Top := QRDBText56.Top + desloc;
    QRDBText57.Top := QRDBText57.Top + desloc;

    QRLabel78.Top := QRLabel78.Top + desloc;
    QRLabel68.Top := QRLabel68.Top + desloc;
    QRLabel69.Top := QRLabel69.Top + desloc;
    QRLabel70.Top := QRLabel70.Top + desloc;
    QRLabel71.Top := QRLabel71.Top + desloc;
    QRLabel72.Top := QRLabel72.Top + desloc;
    lblNumero.Top := lblNumero.Top + desloc;
    lblAssinatura.Top := lblAssinatura.Top + desloc;
    lblQuant.Top := lblQuant.Top + desloc;
    lblFilme.Top := lblFilme.Top + desloc;
    lblPrazo.Top := lblPrazo.Top + desloc;
    lblImpEm.Top := lblImpEm.Top + desloc;
  end;
end;
{------------------------------------------------------------------------}
procedure TQROsi2.MontarListaVariacoes(osi: Integer);
var lNum, lVar, lQtd, lFilme, lPrazo, lImp: TQRLabel;
    flg_sum: Boolean;
    banda_pai: TQRBand;
    desloc, desloc_ini: Integer;

  procedure PreencherLabels;
  begin
    with qrVariacoes do
    begin
      lNum.Caption := FieldByName(´IDASS´).AsString + ´ ´;
      lVar.Caption := ´ ´ + FieldByName(´NOME´).AsString;
      lQtd.Caption := ´ ´ + FieldByName(´QTD´).AsString;
      lFilme.Caption := ´ ´ + FieldByName(´FILME´).AsString;
      lPrazo.Caption := ´ ´ + FieldByName(´PRAZO´).AsString;
      lImp.Caption := ´ ´;
    end;
  end;
  procedure CriarLabels;
    function DuplicarLabel(l_ori: TQRLabel): TQRLabel;
    begin
      Result := TQRLabel.Create(Self);
      Result.Parent := banda_pai; // l_ori.Parent;
      Result.Font := l_ori.Font;
      Result.Alignment := l_ori.Alignment;
      Result.AutoSize := l_ori.AutoSize;
      Result.WordWrap := l_ori.WordWrap;
      Result.Left := l_ori.Left;
      Result.Width := l_ori.Width;
      Result.Frame.DrawLeft := l_ori.Frame.DrawLeft;
      Result.Frame.DrawRight := l_ori.Frame.DrawRight;
      Result.Frame.DrawTop := l_ori.Frame.DrawTop;
      Result.Frame.DrawBottom := l_ori.Frame.DrawBottom;
      Result.Top := l_ori.Top + l_ori.Height - 1;
      Result.Tag := l_ori.Tag;
    end;
  begin
    lNum := DuplicarLabel(lNum);
    lVar := DuplicarLabel(lVar);
    lQtd := DuplicarLabel(lQtd);
    lFilme := DuplicarLabel(lFilme);
    lPrazo := DuplicarLabel(lPrazo);
    lImp := DuplicarLabel(lImp);

    desloc := desloc + lVar.Height - 1;
  end;
begin
  DetailBand1.Height := 685;
  banda_pai := DetailBand1;

  lblNumero.Caption := ´´;
  lblAssinatura.Caption := ´´;
  lblQuant.Caption := ´´;
  lblFilme.Caption := ´´;
  lblPrazo.Caption := ´´;
  lblImpEm.Caption := ´´;

  // sumário
//  lblAssinatura2.Caption := ´´;
  flg_sum := False;

  desloc := lblAssinatura.Top;

  with qrVariacoes do
  begin
    Params[0].AsInteger := osi;
    Open;

    if RecordCount > 0 then
    begin
      lNum := lblNumero;
      lVar := lblAssinatura;
      lQtd := lblQuant;
      lFilme := lblFilme;
      lPrazo := lblPrazo;
      lImp := lblImpEm;

      PreencherLabels;

      Next;

      while not Eof do
      begin
        if lVar.Top > QRLabel58.Top then
        begin
          if flg_sum then Break;

          flg_sum := True;
        end
        else
        begin
          // criar novas linhas na tabela
          CriarLabels;
        end;

        PreencherLabels;
        Next;
      end;
    end;
    Close;
  end;

  Bands.HasSummary := flg_sum;
end;
{------------------------------------------------------------------------}
procedure TQROsi2.PageHeaderBand1AfterPrint(Sender: TQRCustomBand;
  BandPrinted: Boolean);
begin
//  lblOSI.Left := PageHeaderBand1.Width - lblOSI.Width;
end;
{------------------------------------------------------------------------}
procedure TQROsi2.DetailBand1BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
//  edObsAcab.Lines.Text := qrReport.FieldByName(´OBS_ACAB´).AsString;
end;
{------------------------------------------------------------------------}
procedure TQROsi2.QRDBText1Print(sender: TObject; var Value: String);
begin
  // número da osi
  Value := ´ ´ + IntToStr(qrReport.FieldByName(´IDOSI´).AsInteger mod CONST_OSI);
end;
{------------------------------------------------------------------------}
procedure TQROsi2.QRDBText16Print(sender: TObject; var Value: String);
begin
  // campo orçamento / item     ,
  Value := Format(´ .¬4.4d       | ¬d´, [qrReport.FieldByName(´IDORCAMENTO´).AsInteger,
                                        qrReport.FieldByName(´ITEM´).AsInteger]);
end;
{------------------------------------------------------------------------}
procedure TQROsi2.QRDBText58Print(sender: TObject; var Value: String);
var dst: TDataSet;
    campo: string;
begin
  // campos de data
  dst := (sender as TQRDBText).DataSet;
  campo := (sender as TQRDBText).DataField;
  if not dst.FieldByName(campo).IsNull then
    Value := FormatDateTime(´ dd/mm/yyyy´, dst.FieldByName(campo).AsDateTime);
end;
{------------------------------------------------------------------------}
procedure TQROsi2.QRDBText4Print(sender: TObject; var Value: String);
begin
  Value := Value + ´ ´;
end;
{------------------------------------------------------------------------}
procedure TQROsi2.QRDBText51Print(sender: TObject; var Value: String);
var campo: string;
begin
  // campo de material fornecido
  campo := SoNumericos((sender as TQRDBText).DataField);

  Value := ´´;
  if qrReport.FieldByName(´MATERIAL´ + campo).AsString <> ´´ then
    if Value = ´S´ then
      Value := ´F´
    else
      Value := ´NF´;
end;
{------------------------------------------------------------------------}
procedure TQROsi2.QRDBText11Print(sender: TObject; var Value: String);
begin
  // formato aberto
  Value := Format(´ ¬.2f x ¬.2f´, [qrReport.FieldByName(´LARG_ABERTO´).AsFloat,
                                      qrReport.FieldByName(´ALT_ABERTO´).AsFloat]);
end;
{------------------------------------------------------------------------}
procedure TQROsi2.QRDBText12Print(sender: TObject; var Value: String);
begin
  // formato fechado
  Value := ´´;
  if not qrReport.FieldByName(´LARG_FECHADO´).IsNull or
     not qrReport.FieldByName(´ALT_FECHADO´).IsNull or
     not qrReport.FieldByName(´COMP_FECHADO´).IsNull then
    Value := Format(´ ¬.2f x ¬.2f x ¬.2f´,
                    [qrReport.FieldByName(´LARG_FECHADO´).AsFloat,
                     qrReport.FieldByName(´ALT_FECHADO´).AsFloat,
                     qrReport.FieldByName(´COMP_FECHADO´).AsFloat]);
end;
{------------------------------------------------------------------------}
procedure TQROsi2.QRDBText17Print(sender: TObject; var Value: String);
begin
  // corte inicial
  Value := Format(´ ¬.2f x ¬.2f´, [qrReport.FieldByName(´LARG_CORTE_INI´).AsFloat,
                                      qrReport.FieldByName(´ALT_CORTE_INI´).AsFloat]);
end;
{------------------------------------------------------------------------}
procedure TQROsi2.QRDBText18Print(sender: TObject; var Value: String);
begin
  // sobras
  Value := ´ ´ + IntToStr(qrReport.FieldByName(´SOBRAS´).AsInteger);
end;
{------------------------------------------------------------------------}
procedure TQROsi2.QRDBText20Print(sender: TObject; var Value: String);
begin
  // "checks"
  if Value = ´S´ then Value := ´X´
                 else Value := ´ ´;
end;
{------------------------------------------------------------------------}
procedure TQROsi2.QRDBText36Print(sender: TObject; var Value: String);
begin
  if Value <> ´´ then
    if tbCores.FindKey([StrToInt(Value)]) then
      Value := ´ ´ + tbCores.FieldByName(´NOME´).AsString;
end;
{------------------------------------------------------------------------}
procedure TQROsi2.QRDBText41Print(sender: TObject; var Value: String);
begin
  try if StrToInt(Value) > 0 then Value := ´X´
      else                        Value := ´´;
  except Value := ´´; end;
end;
{------------------------------------------------------------------------}
procedure TQROsi2.QRDBText40Print(sender: TObject; var Value: String);
begin
  Value := Value + ´ ´;
end;
{------------------------------------------------------------------------}
procedure TQROsi2.MontarShapeCampos;
var i: Integer;
    sh: TQRShape;
begin
  for i := 0 to ComponentCount -1 do
    if Components[i].Tag In [1, 2] then
    begin
      sh := TQRShape.Create(Self);
      sh.Brush.Style := bsClear;
      sh.Pen.Width := Components[i].Tag;
      sh.Left := (Components[i] as TQRCustomLabel).Left -1;
      sh.Top := (Components[i] as TQRCustomLabel).Top -1;
      sh.Height := (Components[i] as TQRCustomLabel).Height {+ 1};
      if Components[i].Tag = 2 then sh.Height := sh.Height - 1;
      sh.Width := (Components[i] as TQRCustomLabel).Width + 1;
      if Components[i].Tag = 2 then sh.Width := sh.Width - 1;
//      sh.Size := (Components[i] as TQRDBText).Size;
      sh.Parent := (Components[i] as TQRCustomLabel).Parent;
    end;
end;
{------------------------------------------------------------------------}
procedure ImprimirDadosOSI_parte1(osi: Integer);
var r: TQROsi2;
begin
  Application.CreateForm(TQROsi2, r);

  with r do
  begin
    MontarListaCores(osi);
    MontarListaVariacoes(osi);
    MontarShapeCampos;

    qrReport.Close;
    qrReport.Params[0].AsInteger := osi;
    qrReport.Open;

    qrOSIAcab.Close;
    qrOSIAcab.Params[0].AsInteger := osi;
    qrOSIAcab.Open;

    tbCores.Open;

    lbUrgente.Enabled := qrReport.FieldByName(´URGENTE´).AsString = ´S´;
    try
      Preview;
    except
      QRPrinter.Free;
    end;

    qrReport.Close;
    tbCores.Close;
    qrVariacoes.Close;
    qrTintas.Close;
    qrOSIAcab.Close;

    Free;
  end;
end;

end.


Desde já agradeço-os pela atenção[/b]


Rogick

Rogick

Curtidas 0

Respostas

Rogick

Rogick

22/09/2006

Ah, eu já pesquisei na internet e não conseguir achar algo que solucionasse o meu problema


GOSTEI 0
Joaoshi

Joaoshi

22/09/2006

Colega,

Crie a procedure abaixo e execute antes de chamar o preview do QR.

Procedure DestroiPreview;
var nIdx:Integer;
begin
for nIdx := (Screen.FormCount - 1) downto 0 do
With Screen.Forms[nIdx] do
if ClassName = ´TQRStandardPreview´ then
Destroy;
end;

Espero ter ajudado.


GOSTEI 0
Micheus

Micheus

22/09/2006

[b:d4eaf952c2]Rogick[/b:d4eaf952c2], verifique se vc não deixou o form QROsi2 no auto-create do projeto.
Estou achando um pouco estranho vc chamar [i:d4eaf952c2]QRPrinter.Free[/i:d4eaf952c2] na finalização do preview - não é comum.
Faça um teste, no procedimento abaixo modifiquei a forma como o form é criado, removí o QRPrinter.Free (já que o próprio qreport deve fazer isto) e ajustei a forma de liberação do formulário através do finally, pois ´tudo que foi feito´ antes do try, deve ser desfeito independente de ocorrer erro na visualização.
procedure ImprimirDadosOSI_parte1(osi: Integer);
var r: TQROsi2;
begin
  r := TQROsi2.Create(Application);   // ***
  with r do
  begin
    MontarListaCores(osi);
    MontarListaVariacoes(osi);
    MontarShapeCampos;

    qrReport.Close;
    qrReport.Params[0].AsInteger := osi;
    qrReport.Open;

    qrOSIAcab.Close;
    qrOSIAcab.Params[0].AsInteger := osi;
    qrOSIAcab.Open;

    tbCores.Open;

    lbUrgente.Enabled := qrReport.FieldByName(´URGENTE´).AsString = ´S´;
    try
      Preview;
    finally   // ***
      qrReport.Close;
      tbCores.Close;
      qrVariacoes.Close;
      qrTintas.Close;
      qrOSIAcab.Close;

      Free;
    end;
  end;
end;



GOSTEI 0
Leufmt

Leufmt

22/09/2006

Tu tem duas opções:
Acessar o site o fabricante do QuickReport e baixar a atualização do QuickReport para o Delphi 5 (o qual tu utiliza): http://www.qusoft.com/
Ou Começar a trabalhar com o Delphi 7, que é o que eu fiz e resolveu definitivamente o problema, pois o QuickReport no Delphi 7 não tem este problema.

Espero que eu possa ter lhe ajudado


GOSTEI 0
Rogick

Rogick

22/09/2006

Consegui resolver! Era só atualizar o QuickReport da versão 3.0.5 para 3.5.1. :D

Vlw [b:d277becf8e]leufmt[/b:d277becf8e]! ;)


GOSTEI 0
POSTAR