Como posso fazer essa SQL e esse Relatório
Bom dia galera, estou com um problema na minha SQL, ela funciona assim.
DM1.QrClienteCompleto.Close;
DM1.QrClienteCompleto.SQL.Clear;
DM1.QrClienteCompleto.SQL.Add(´SELECT A.Contrato, A.Nome, A.Ativo, B.Contrato, B.Data_Venc, B.Data_Pagam FROM Clientes A, Lancam B´);
DM1.QrClienteCompleto.SQL.Add(´WHERE A.Contrato = B.Contrato and A.ATIVO = ´SIM´ and B.Data_Venc >= :pData1 and B.Data_Venc <= :pData2 Order By A.Nome´);
DM1.QrClienteCompleto.ParamByName(´pData1´).AsDateTime := StrToDate(vData1);
DM1.QrClienteCompleto.ParamByName(´pData2´).AsDateTime := StrToDate(vData2);
Até aí beleza tudo funciona, porém preciso implementar um relatório que quando for verificado que o campo B.Data_Pagam = Vazio imprima ´EM ABERTO´, tentei implementar o código abaixo no BeforePrint do Relatório mas ele só imprime ´EM ABERTO´, em todos os registros mesmo que o campo Data_Pagam tenha um informação.
If DM1.QrClienteCompleto.FieldByName(´Data_Pagam´).isNull then
Begin
QrLabel8.Font.Color := clRed;
QrLabel8.Caption := ´Em Aberto´;
End
Galera agradeço a ajuda de todos.
Abraços.
Alexandre...
DM1.QrClienteCompleto.Close;
DM1.QrClienteCompleto.SQL.Clear;
DM1.QrClienteCompleto.SQL.Add(´SELECT A.Contrato, A.Nome, A.Ativo, B.Contrato, B.Data_Venc, B.Data_Pagam FROM Clientes A, Lancam B´);
DM1.QrClienteCompleto.SQL.Add(´WHERE A.Contrato = B.Contrato and A.ATIVO = ´SIM´ and B.Data_Venc >= :pData1 and B.Data_Venc <= :pData2 Order By A.Nome´);
DM1.QrClienteCompleto.ParamByName(´pData1´).AsDateTime := StrToDate(vData1);
DM1.QrClienteCompleto.ParamByName(´pData2´).AsDateTime := StrToDate(vData2);
Até aí beleza tudo funciona, porém preciso implementar um relatório que quando for verificado que o campo B.Data_Pagam = Vazio imprima ´EM ABERTO´, tentei implementar o código abaixo no BeforePrint do Relatório mas ele só imprime ´EM ABERTO´, em todos os registros mesmo que o campo Data_Pagam tenha um informação.
If DM1.QrClienteCompleto.FieldByName(´Data_Pagam´).isNull then
Begin
QrLabel8.Font.Color := clRed;
QrLabel8.Caption := ´Em Aberto´;
End
Galera agradeço a ajuda de todos.
Abraços.
Alexandre...
Vieira_alex
Curtidas 0
Respostas
Demian Soares
19/01/2005
amigo esse qrlabel8 voce limpa ele depois de impresso a primeira vez?, pq vc atribui a ele um valor e nao limpa mais.. ou limpa?... qrlabel8.capiton = ´´ ?...
GOSTEI 0
Massuda
19/01/2005
Se você quer que o ´EM ABERTO´ apareça nas linhas detalhe onde não consta a data de pagamento, você precisa fazer duas coisas:[list:81bae20af0][*:81bae20af0]Executar seu código de teste do pagamento em aberto no BeforePrint da banda de detalhe[*:81bae20af0]Limpar o Caption do QrLabel8 no caso do pagamento não estar em aberto.[/list:u:81bae20af0]
GOSTEI 0
Emerson Nascimento
19/01/2005
ilustrando o que o colega Massuda disse, seu BeforePrint deveria ser algo como:
If DM1.QrClienteCompleto.FieldByName(´Data_Pagam´).isNull then
Begin
    QrLabel8.Font.Color := clRed;
    QrLabel8.Caption := ´Em Aberto´;
End
Else
    QrLabel8.Caption := ´´;
If DM1.QrClienteCompleto.FieldByName(´Data_Pagam´).isNull then
Begin
    QrLabel8.Font.Color := clRed;
    QrLabel8.Caption := ´Em Aberto´;
End
Else
    QrLabel8.Caption := ´´;
GOSTEI 0
Vieira_alex
19/01/2005
Galera obrigado pela ajuda, pois meu problema já foi solucionado, o procedimento que eu estava fazendo estava correto, porém estava colocando no BeforePrint do Relatório e SENDO que o correto é no
DetailBand1BeforePrint.
Desde já agradeço a ajuda de todos.
DetailBand1BeforePrint.
Desde já agradeço a ajuda de todos.
GOSTEI 0