Fórum Quick Report, problemas com OnNeedData #345711
10/09/2007
0
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
Curtir tópico
+ 0Posts
10/09/2007
Onjahyr
Meu problema é este: http://forum.devmedia.com.br/viewtopic.php?t=89902 (veja como fica o MoreDate)
Gostei + 0
11/09/2007
Eric.miranda
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
Gostei + 0
12/09/2007
Eric.miranda
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)