Erro de violation no relatório...ao executar na segunda vez!

11/08/2008

0

Na primeira vez que eu executo o relatório dá tudo certo, mas quando eu vou rodar ele de novo ele dá esse erro:

Access violation at address 00404AA0 in nodule ´sistemacfc.exe´. Write of address 00000244.


esse é o meu codigo fonte :

var
  frmLisRelPraSemanais: TfrmLisRelPraSemanais;
  data, HorIni, HorFin, aluno, Inst, Cat :TQRLabel;
   i, a, b, c, d, e, Cont, soma, x, y, z :integer;
   SomaData, HrF : Integer;

implementation

uses fdtmiza, FRelPraSemanal, Praticas, FRelSemanal, IBQuery, FPrincipal, FPesquisa, funcoes;

{$R *.dfm}

procedure TfrmLisRelPraSemanais.spbfecClick(Sender: TObject);
begin
  Close;
end;

procedure TfrmLisRelPraSemanais.spbexiClick(Sender: TObject);
begin


  Application.CreateForm(TQrSemanal,QrSemanal);

   // Coluna das Datas
   for i:=1 to 7 do
      begin
        data                   := TQRLabel.Create(self);
        data.Name              := ´Dat´+inttostr(i);
        data.Left              := -40+(i*135);
        data.top               := 50;
        data.Frame.DrawTop     := true;
        data.Frame.DrawBottom  := true;
        data.Frame.DrawLeft    := true;
        data.Frame.DrawRight   := true;
        data.Transparent       := true;
        data.Width             := 130;
        data.Font.Size         := 12;
        data.Height            := 21;
        data.Font.Name         := ´Arial´;
        data.Font.Style        := [fsBold];
        data.AutoSize          := false;
        data.Caption           := DateToStr(DataInicial.Date-1 + i);
        data.Alignment         := TaCenter;
        data.Parent            := QrSemanal.QRBand1;
      end;

 // coluna de horarios
   for a:=1 to 16  do
      begin
        HorIni                   := TQRLabel.Create(self);
        HorIni.Name              := ´Hor´+inttostr(a);
        HorIni.Left              := 4;
        HorIni.Height            := 23;
        HorIni.Frame.DrawTop     := true;
        HorIni.Frame.DrawBottom  := true;
        HorIni.Frame.DrawLeft    := true;
        HorIni.Frame.DrawRight   := true;
        HorIni.Transparent       := true;
        HorIni.AutoSize          := false;
        HorIni.Width             := 43;
        HorIni.Font.Size         := 10;
        HorIni.Font.Name         := ´Arial´;
        HorIni.Font.Style        := [fsBold];
       // hora.Caption           := inttostr(6+a)+´:00´;
        HorIni.Caption           := ´´;
        HorIni.Alignment         := tacenter;
        HorIni.top               := 50+(a*25);
        HorIni.Parent            := QrSemanal.QRBand1;
      end;

 // coluna de horarios
   for HrF:=1 to 16  do
      begin
        HorFin                   := TQRLabel.Create(self);
        HorFin.Name              := ´HorFin´+inttostr(HrF);
        HorFin.Left              := 50;
        HorFin.Height            := 23;
        HorFin.Frame.DrawTop     := true;
        HorFin.Frame.DrawBottom  := true;
        HorFin.Frame.DrawLeft    := true;
        HorFin.Frame.DrawRight   := true;
        HorFin.Transparent       := true;
        HorFin.AutoSize          := false;
        HorFin.Width             := 43;
        HorFin.Font.Size         := 10;
        HorFin.Font.Name         := ´Arial´;
        HorFin.Font.Style        := [fsBold];
       // hora.Caption           := inttostr(6+a)+´:00´;
        HorFin.Caption           := ´´;
        HorFin.Alignment         := tacenter;
        HorFin.top               := 50+(HrF*25);
        HorFin.Parent            := QrSemanal.QRBand1;
      end;


         //criacao do QrLabel do Instrutor
        begin
          Inst                   := TQRLabel.Create(Self);
          Inst.Name              := ´Ins´;
          Inst.Left              := 104;
          Inst.top               := 480;
          Inst.Frame.DrawTop     := true;
          Inst.Frame.DrawBottom  := true;
          Inst.Frame.DrawLeft    := true;
          Inst.Frame.DrawRight   := true;
          Inst.Transparent       := true;
          Inst.AutoSize          := false;
          Inst.Width             := 300;
          Inst.Font.Size         := 12;
          Inst.Font.Name         := ´Arial´;
          Inst.Parent            := QrSemanal.QRBand1;
        end;

   soma := 0;
   for b:=1 to 16  do // total de aluno um em baixo do outro
     for c := 1 to 7 do // total de coluna de aluno
        begin

        soma := Soma + 1;
          aluno                   := TQRLabel.Create(Self);
          aluno.Name              := ´Al´+inttostr(soma);
          aluno.Left              := -40+(c*135);
          aluno.top               := 50+(b*25);
          aluno.Frame.DrawTop     := true;
          aluno.Frame.DrawBottom  := true;
          aluno.Frame.DrawLeft    := true;
          aluno.Frame.DrawRight   := true;
          aluno.Transparent       := true;
          aluno.AutoSize          := false;
          aluno.Width             := 130;
          aluno.Font.Size         := 9;
          Aluno.Height            := 22;
          aluno.Font.Name         := ´Arial´;
          Aluno.Font.Style        := [fsBold];
          aluno.Caption           := ´´;
          aluno.Parent            := QrSemanal.QRBand1;
        end;

      //mostrar o nome do instrutor
     With DtmIza.QryPraticas do
        begin
          close;
          sql.Clear;
          sql.add(´Select Codigo, Nome from Instrutores where codigo =´+ TxtInst.Text);
          open;
        end;
     If  not DtmIza.QryPraticas.IsEmpty then
          begin
             TQRLabel(FindComponent( ´Ins´ )).Caption := DtmIza.QryPraticas.FieldByName(´Nome´).AsString;
          end;


   // pesquisa de Horarios
   with dtmiza.QryIza do
     begin
       close;
       sql.clear;
       sql.add (´Select HorarioInicial, HorarioFinal, Instrutor from HorariosPraticas where Instrutor =:Ins´);
       ParamByName(´Ins´).AsString := TxtInst.Text;
       open;
     end;
   Cont := 1;
   while not dtmiza.QryIza.Eof do
     begin
       TQRLabel(FindComponent( ´Hor´ + IntToStr(Cont))).Caption := FormatDateTime(´hh:nn´, dtmiza.QryIza.FieldByName(´HorarioInicial´).AsDateTime);
       TQRLabel(FindComponent( ´HorFin´ + IntToStr(Cont))).Caption := FormatDateTime(´hh:nn´, dtmiza.QryIza.FieldByName(´HorarioFinal´).AsDateTime);
       DtmIza.QryIza.Next;
       Cont := Cont + 1;
     end;

   // pesquisa de alunos
   for x:=1 to 16 do
   begin
      for y:=1 to 7 do
      begin
        z:=z+1;

        if  TQRLabel(FindComponent( ´Hor´ + IntToStr(x))).Caption <>´´ then
        begin
          DtmIza.QryPraticas.close;
          DtmIza.QryPraticas.sql.Clear;
          DtmIza.QryPraticas.sql.Add(´select p.instrutor, p.horario, p.data, p.aluno, p.bloqueado, a.codigo, a.nome from praticas p, alunos a´
                                     +´ where instrutor =:inst and horario =:hor and data =:dat and p.aluno = a.codigo´);
          DtmIza.QryPraticas.ParamByName(´Inst´).AsString := TxtInst.Text;
          DtmIza.QryPraticas.ParamByName(´dat´).AsDate    := StrtoDate(TQRLabel(FindComponent(´Dat´ + IntToStr( y ) ) ).Caption);
          DtmIza.QryPraticas.ParamByName(´hor´).AsTime    := StrToTime(TQRLabel(FindComponent( ´Hor´ + IntToStr(x))).Caption);
          DtmIza.QryPraticas.open;
        end;

    if not DtmIza.QryPraticas.IsEmpty then
        begin
          if DtmIza.QryPraticas.FieldByName(´Bloqueado´).AsString = ´S´ then
            begin
              TQRLabel(FindComponent( ´Al´ + IntToStr(z))).Caption:= ´ **********************´;
            end;
            //else
           // begin
              TQRLabel(FindComponent( ´Al´ + IntToStr(z))).Caption := ´ ´ + DtmIza.QryPraticas.FieldByName(´nome´).asstring;
           // end;
       end;
     end;
   end;


   QrSemanal.Preview;
   QrSemanal.Free;
   DtmIza.QryPraticas.close;
   close;


 end;



Robinhocne

Robinhocne

Responder

Posts

12/08/2008

Wdrocha

Vc tah usando skin??


Responder

15/08/2008

Robinhocne

não, no relatório eu desabilito


Responder

15/08/2008

Wdrocha

Bom dia....conversando com um colega meu sobre o seu problema....


ele me disse q já teve o mesmo problema q o seu....

e q leu em um fórum q....


qdo uma aplicação tem mts Reports ela dá pau pq o QReport não é mais nativo do Delphi 7 e q ensinaram a ele usar o mínimo de QReports possível e no Menu Projects ----> Options -----> Auto Create Forms, carregá-los em memória junto com o Form Principal....


E disse q não teve mais problemas com os mesmos.....


Fica aew a dica....não testei....


Talvez seja o seu caso.....


Espero ter ajudado....


caso não resolva, posta aew....



Flw


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar