GARANTIR DESCONTO

Fórum Quick Report, problemas com OnNeedData #345711

10/09/2007

0

Bom dia pessoal,
estou tendo problemas aqui com o quick report e gostaria de pedir a ajuda de vcs..

Tenho que imprimir vários registros e estou encontrando duas dificuldades que acho que resolveria com o OnNeedData, só que não estou conseguindo..é o seguinte..
Em cada registro queria ver se no campo Ocorrenciafinalizada for F,não está finalizada, se T,está finalizada..
procedure TfrmRelOcorEndereco.qrpOcorrenciasEnderecoNeedData(
  Sender: TObject; var MoreData: Boolean);
begin
  If DM.qBOPCOCORRENCIAFINALIZADA.Value = ´F´ then
     lblfinalizada.Caption := ´Não Finalizada´
  Else
     lblfinalizada.Caption := ´Finalizada´;

end;

só q não funciona..
e tb queria imprimir um campo com 3000 caracteres.. estava usando o campo QRMemo tb no onNeedData, só que nem entra nesse evento..

onde estou errando??

Obrigado


Eric.miranda

Eric.miranda

Responder

Posts

10/09/2007

Onjahyr

Não sei se estou correto, também tô com o problema no QuickReport neste mesmo evento, mas, para ser executado alguma coisa neste evento, a variável MoreData tem que estar como ´True´, então você tem que criar um laço e informar que o MoreData é True e depois de terminar ele volta a ser False, senão, ele fica neste evento em LOOP infinito chegando a dar um crash no programa inteiro. Creio ser isso. Coloque a variável True no início após a verificação colocar False (um TRY FINALLY) resolveria o caso.

Meu problema é este: http://forum.devmedia.com.br/viewtopic.php?t=89902 (veja como fica o MoreDate)


Responder

Gostei + 0

11/09/2007

Eric.miranda

valeu onjahyr pela ajuda...mas não entendo o pq não está entrando nesse evento... devo estar fazendo alguma coisa de errado..

veja se vc pode me ajudar;;

em um formulário tenho um essa parte do código

procedure TfrmPesquisaOcorrenciaDesc.btnConsultarClick(Sender: TObject);
 var sqil : String;
begin
  If rbData.Checked then
     Begin
        sqil := ´SELECT PROTOCOLO,NOMEATENDENTE,DATAATENDIMENTO,HORAATENDIMENTO,NOMECLIENTE,TELEFONECLIENTE,´;
        sqil := sqil + ´LOCALOCORRENCIA,DESCOCORRENCIA,OCORRENCIAFINALIZADA FROM OCORRENCIAS ´;
        sqil := sqil + ´WHERE DATAATENDIMENTO BETWEEN :DT1 AND :DT2´;
        DM.qBOPC.Close;
        DM.qBOPC.SQL.Clear;
        DM.qBOPC.SQL.Add(sqil);
        DM.qBOPC.Parameters.ParamByName(´DT1´).DataType := ftString;
        DM.qBOPC.Parameters.ParamByName(´DT2´).DataType := ftString;
        DM.qBOPC.Parameters.ParamByName(´DT1´).Value := Copy(DatetoStr(dtInicial.Date),4,2)+´/´+Copy(DatetoStr(dtInicial.Date),1,2)+´/´+Copy(DatetoStr(dtInicial.Date),7,4);
        DM.qBOPC.Parameters.ParamByName(´DT2´).Value := Copy(DatetoStr(dtFinal.Date),4,2)+´/´+Copy(DatetoStr(dtFinal.Date),1,2)+´/´+Copy(DatetoStr(dtFinal.Date),7,4);
        DM.qBOPC.Open;
        If not DM.qBOPC.IsEmpty then
           Begin
              Application.CreateForm(TfrmRelOcorEndereco,frmRelOcorEndereco);
              //frmRelOcorEndereco.lblCriterio.Caption := ´Data : ´+ Datetostr(dtInicial.Date)+ ´ a ´+ Datetostr(dtFinal.Date);
              frmRelOcorEndereco.qrpOcorrenciasEndereco.Preview;
           End
        Else
           Application.MessageBox(´Nenhum registro encontrado com este critério!´,´Informação´,mb_ok);
     End
  Else If rbEndereco.Checked then
     Begin
        sqil := ´SELECT PROTOCOLO,NOMEATENDENTE,DATAATENDIMENTO,HORAATENDIMENTO,NOMECLIENTE,TELEFONECLIENTE,´;
        sqil := sqil + ´LOCALOCORRENCIA,DESCOCORRENCIA,OCORRENCIAFINALIZADA FROM OCORRENCIAS ´;
        sqil := sqil + ´WHERE LOCALOCORRENCIA LIKE :P_LOCALOCORRENCIA´;
        DM.qBOPC.Close;
        DM.qBOPC.SQL.Clear;
        DM.qBOPC.SQL.Add(sqil);
        DM.qBOPC.Parameters.ParamByName(´P_LOCALOCORRENCIA´).DataType := ftString;
        DM.qBOPC.Parameters.ParamByName(´P_LOCALOCORRENCIA´).Value    := ´¬´+Trim(edendereco.Text)+´¬´;
        DM.qBOPC.Open;
        If not DM.qBOPC.IsEmpty then
           Begin
              Application.CreateForm(TfrmRelOcorEndereco,frmRelOcorEndereco);
              //frmRelOcorEndereco.lblCriterio.Caption := ´Local de Pesquisa :´+Trim(edendereco.Text);
              frmRelOcorEndereco.qrpOcorrenciasEndereco.Preview;
           End
        Else
           Application.MessageBox(´Nenhum registro encontrado com este critério!´,´Informação´,mb_ok);
     End;
end;



no formulário de relatório está assim

procedure TfrmRelOcorEndereco.qrpOcorrenciasEnderecoBeforePrint(
  Sender: TCustomQuickRep; var PrintReport: Boolean);
begin
  DM.qBOPC.First;
end;

procedure TfrmRelOcorEndereco.qrpOcorrenciasEnderecoNeedData(
  Sender: TObject; var MoreData: Boolean);
begin
   MoreData := not DM.qBOPC.EOF;
   if not MoreData then
      Exit;
   If DM.qBOPCOcorrenciaFinalizada.Value = ´F´ then
      qrfinalizada.Caption := ´Finalizada´
   Else
     qrfinalizada.Caption := ´Não Finalizada´;
   
end;



valeu pessoal


Responder

Gostei + 0

12/09/2007

Eric.miranda

Bom dia pessoal.. ainda estou na luta para imprimir os dados com o oneeddata..
melhorou aqui mas ainda não está correto...
está assim..
no relatorio inseri um qrsubdetail.. e linkei ele na minha query..

no evento on need eu inseri

procedure TfrmRelOcorEndereco.qrpOcorrenciasEnderecoNeedData(
  Sender: TObject; var MoreData: Boolean);
var numero : String;
begin
 MoreData := (contador > 0);

 If not MoreData then
    exit;

 Numero := DM.qBOPCPROTOCOLO.AsString;
 QRMemo1.Lines.Add(Trim(DM.qBOPCDESCOCORRENCIA.AsString));
 If DM.qBOPCOCORRENCIAFINALIZADA.Value = ´F´ then
    lblfinalizada.Caption := ´Não Finalizada´
 Else
    lblfinalizada.Caption := ´Finalizada´;
 contador := contador -1;
 DM.qBOPC.Next;
end;

procedure TfrmRelOcorEndereco.qrpOcorrenciasEnderecoBeforePrint(
  Sender: TCustomQuickRep; var PrintReport: Boolean);
begin
   contador := DM.qBOPC.RecordCount;
end;


mas acontece que estao imprimindo em todas as linhas o mesmo registro ou seja o primeiro registro(nos dez existentes na consulta)

vcs sabem o que pode ser?
valeu


Responder

Gostei + 0

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

Aceitar