Ir para conteúdo
Fórum Script Brasil
  • 0

Erro na exibição do relatorio pela segunda consulta


robinhocne

Pergunta

Eu executo o relatorio uma vez ai beleza, mas depois executa

mais outra vez dá esse erro:

Access violation at address 00404AA0 in module 'sistemacfc.exe'.Write of address 00000244.

Ai executo novamente e dá esse erro:

A component named QrSemanal already exists.

esse QrSemanal é o nome do meu relatório, sei que está muito grande

e já tentei varias maneiras para resolver mais nada, mas vou

passar todo o codigo fonte para alguém me ajudar..

procedure TfrmLisRelPraSemanais.spbexiClick(Sender: TObject);
begin

  Application.CreateForm(TQrSemanal,QrSemanal);

   // Coluna das Datas
   for i:=1 to 7 do
      begin

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

 // coluna de horarios
   for a:=1 to 16  do
      begin

        HorIni := TQRLabel.Create(self);
        with HorIni do
        begin
          Name              := 'Hor'+inttostr(a);
          Left              := 4;
          Height            := 22;
          Frame.DrawTop     := true;
          Frame.DrawBottom  := true;
          Frame.DrawLeft    := true;
          Frame.DrawRight   := true;
          Transparent       := true;
          AutoSize          := false;
          Width             := 43;
          Font.Size         := 10;
          Font.Name         := 'Arial';
          Font.Style        := [fsBold];
          Caption           := '';
          Alignment         := tacenter;
          top               := 50+(a*25);
          Parent            := QrSemanal.QRBand1;
        end;
     // end;

 // coluna de horarios
 //  for HrF:=1 to 16  do
     // begin

        HorFin := TQRLabel.Create(self);
        with HorFin do
        begin
          Name              := 'HorFin'+inttostr(a);
          Left              := 50;
          Height            := 22;
          Frame.DrawTop     := true;
          Frame.DrawBottom  := true;
          Frame.DrawLeft    := true;
          Frame.DrawRight   := true;
          Transparent       := true;
          AutoSize          := false;
          Width             := 43;
          Font.Size         := 10;
          Font.Name         := 'Arial';
          Font.Style        := [fsBold];
          Caption           := '';
          Alignment         := tacenter;
          top               := 50+(a*25);
          Parent            := QrSemanal.QRBand1;
        end;
      end;


         //criacao do QrLabel do Instrutor
        begin
          Inst := TQRLabel.Create(Self);

          with Inst do
          begin
            Name              := 'Ins';
            Left              := 104;
            top               := 480;
            Frame.DrawTop     := true;
            Frame.DrawBottom  := true;
            Frame.DrawLeft    := true;
            Frame.DrawRight   := true;
            Transparent       := true;
            AutoSize          := false;
            Width             := 300;
            Font.Size         := 12;
            Font.Name         := 'Arial';
            Parent            := QrSemanal.QRBand1;
          end;
        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);

          with Aluno do
          begin
            Name              := 'Al'+inttostr(soma);
            Left              := -40+(c*135);
            top               := 50+(b*25);
            Frame.DrawTop     := true;
            Frame.DrawBottom  := true;
            Frame.DrawLeft    := true;
            Frame.DrawRight   := true;
            Transparent       := true;
            AutoSize          := false;
            Width             := 130;
            Font.Size         := 9;
            Height            := 22;
            Font.Name         := 'Arial';
            Font.Style        := [fsBold];
            Caption           := '';
            Parent            := QrSemanal.QRBand1;
          end;
        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.Status, 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('Status').AsInteger = 0 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;
   close;

end;

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0
Ai executo novamente e dá esse erro:

A component named QrSemanal already exists.

O erro está a maneira como voce cria o QR

O componente nomeado QrSemanal já existe. por isso da o erro, pois voce esta tentando criar novamente o mesmo componente.

Tente fazer esta modificação

try
      if QrSemanal = Nil then
         QrSemanal:= TQrSemanal.Create(self);
   except
      ShowMessage('Erro na criação do relatório!!');
      exit;
   end;

   QrSemanal.PreviewModal;
   QrSemanal.Free;
   close;

OBS: Para maiores informações sobre o uso do comando Free veja o help do delphi

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Ai executo novamente e dá esse erro:

A component named QrSemanal already exists.

O erro está a maneira como voce cria o QR

O componente nomeado QrSemanal já existe. por isso da o erro, pois voce esta tentando criar novamente o mesmo componente.

Tente fazer esta modificação

try
      if QrSemanal = Nil then
         QrSemanal:= TQrSemanal.Create(self);
   except
      ShowMessage('Erro na criação do relatório!!');
      exit;
   end;

   QrSemanal.PreviewModal;
   QrSemanal.Free;
   close;
OBS: Para maiores informações sobre o uso do comando Free veja o help do delphi abraço
no começo eu coloquei assim:
try
  if QrSemanal = Nil then
  QrSemanal:= TQrSemanal.Create(self);
except
  ShowMessage('Erro na criação do relatório!!');
exit;
end;


.......código fonte.......


no fim assim....

   QrSemanal.PreviewModal;
   QrSemanal.Free;
   close;

mas continua dando o mesmo erro, mas reparei que quando eu não tenh nada na minha consulta para mostrar no relatorio ai nem dá erro, mas quando eu tenho dados para ser exibido no relatorio ai ele dá o erro....

Link para o comentário
Compartilhar em outros sites

  • 0
mas continua dando o mesmo erro, mas reparei que quando eu não tenh nada na minha consulta para mostrar no relatorio ai nem dá erro, mas quando eu tenho dados para ser exibido no relatorio ai ele dá o erro....

Robinho .. experimente tirar o QrSemanal.Free e veja se da certo.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
mas continua dando o mesmo erro, mas reparei que quando eu não tenh nada na minha consulta para mostrar no relatorio ai nem dá erro, mas quando eu tenho dados para ser exibido no relatorio ai ele dá o erro....

Robinho .. experimente tirar o QrSemanal.Free e veja se da certo.

abraço

Tirei e ai parou de esse erro:

A component named QrSemanal already exists.
mas ai ele deu o mesmo erro mas assim
A component named Dat1 already exists.

esse dat1 é os componentes de data, mas ai fiz a mesma coisa que tinha feito nesse anterior e continuou dando o mesmo erro, o que estou achando estranho que em outro relatorio eu uso a mesma coisa e dá certo e nesse não.

Link para o comentário
Compartilhar em outros sites

  • 0
mas ai ele deu o mesmo erro mas assim

A component named Dat1 already exists.

O erro esta aqui:

// Coluna das Datas

for i:=1 to 7 do

begin

data := TQRLabel.Create(self);

Name := 'Dat'+inttostr(i);

Não é possivel criar 7 vezes o componente com o mesmo nome

deveria ser :

data1 := TQRLabel.Create(self);

data2 := TQRLabel.Create(self);

data3 := TQRLabel.Create(self);

data4 := TQRLabel.Create(self);

então voce deve achar uma maneira de nomear este componente de acordo com o exemplo, já que a criação do componente está dentro de um comando For

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
mas ai ele deu o mesmo erro mas assim

A component named Dat1 already exists.

O erro esta aqui:

// Coluna das Datas

for i:=1 to 7 do

begin

data := TQRLabel.Create(self);

Name := 'Dat'+inttostr(i);

Não é possivel criar 7 vezes o componente com o mesmo nome

deveria ser :

data1 := TQRLabel.Create(self);

data2 := TQRLabel.Create(self);

data3 := TQRLabel.Create(self);

data4 := TQRLabel.Create(self);

então voce deve achar uma maneira de nomear este componente de acordo com o exemplo, já que a criação do componente está dentro de um comando For

abraço

ou colocar antes do For ?

e quando eu fecho o relatorio e já fecho o formulario que chamo o relatorio então em questão de criar com o mesmo nome já que foi finalizado está meio esquisito para mim

Link para o comentário
Compartilhar em outros sites

  • 0
e quando eu fecho o relatorio e já fecho o formulario que chamo o relatorio então em questão de criar com o mesmo nome já que foi finalizado está meio esquisito para mim

Mas será que realmente foi finalizado ? ou ainda continua na memoria ?

por isso o erro acontece.

A component named Dat1 already exists.

O componente nomeado Dat1 já existe

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...