mudança de cor em qrband
Olá...
Faço uma comparação de um registro de uma tabela com outro registro de outra tabela...
E no BeforePrint da banda tenho o sql abaixo... onde quero q se for uma das condições ele imprima em vermelho e se satisfaz a outra condição imprima em verde... mas ele só está me imprimindo um registro... imagino q seja por causa do ´while´... mas preciso comparar os registros primeiro para q daí possa imrpimir...
Espero q alguém possa me ajudar... já perdi uma semana de serviço!!
Obrigada!
FPrincipal.work.First;
while not FPrincipal.work.Eof do begin
If (FPrincipal.work.FieldByName(´cRefer´).AsString = FPrincipal.work2.FieldByName(´cRefer´).AsString) then begin
QRDBText1.Font.Color := clRed;
QRDBText1.Font.Color := clRed;
QRDBText2.Font.Color := clRed;
QRDBText3.Font.Color := clRed;
QRDBText4.Font.Color := clRed;
QRDBText5.Font.Color := clRed;
QRDBText6.Font.Color := clRed;
QRDBText7.Font.Color := clRed;
QRDBText8.Font.Color := clRed;
QRDBText9.Font.Color := clRed;
QRDBText10.Font.Color := clRed;
QRDBText11.Font.Color := clRed;
QRDBText12.Font.Color := clRed;
QRDBText13.Font.Color := clRed;
QRDBText14.Font.Color := clRed;
QRDBText15.Font.Color := clRed;
QRDBText16.Font.Color := clRed;
QRDBText17.Font.Color := clRed;
QRDBText18.Font.Color := clRed;
QRDBText19.Font.Color := clRed;
QRDBText20.Font.Color := clRed;
QRDBText21.Font.Color := clRed;
QRDBText22.Font.Color := clRed;
QRDBText23.Font.Color := clRed;
QRDBText24.Font.Color := clRed;
QRDBText25.Font.Color := clRed;
QRDBText26.Font.Color := clRed;
FPrincipal.work.Next;
FPrincipal.work2.First;
end else begin
FPrincipal.work2.Next;
If FPrincipal.work2.Eof then begin
QRDBText1.Font.Color := clGreen;
QRDBText2.Font.Color := clGreen;
QRDBText3.Font.Color := clGreen;
QRDBText4.Font.Color := clGreen;
QRDBText5.Font.Color := clGreen;
QRDBText6.Font.Color := clGreen;
QRDBText7.Font.Color := clGreen;
QRDBText8.Font.Color := clGreen;
QRDBText9.Font.Color := clGreen;
QRDBText10.Font.Color := clGreen;
QRDBText11.Font.Color := clGreen;
QRDBText12.Font.Color := clGreen;
QRDBText13.Font.Color := clGreen;
QRDBText14.Font.Color := clGreen;
QRDBText15.Font.Color := clGreen;
QRDBText16.Font.Color := clGreen;
QRDBText17.Font.Color := clGreen;
QRDBText18.Font.Color := clGreen;
QRDBText19.Font.Color := clGreen;
QRDBText20.Font.Color := clGreen;
QRDBText21.Font.Color := clGreen;
QRDBText22.Font.Color := clGreen;
QRDBText23.Font.Color := clGreen;
QRDBText24.Font.Color := clGreen;
QRDBText25.Font.Color := clGreen;
QRDBText26.Font.Color := clGreen;
FPrincipal.work.Next;
FPrincipal.work2.First;
end;
end;
end;
Faço uma comparação de um registro de uma tabela com outro registro de outra tabela...
E no BeforePrint da banda tenho o sql abaixo... onde quero q se for uma das condições ele imprima em vermelho e se satisfaz a outra condição imprima em verde... mas ele só está me imprimindo um registro... imagino q seja por causa do ´while´... mas preciso comparar os registros primeiro para q daí possa imrpimir...
Espero q alguém possa me ajudar... já perdi uma semana de serviço!!
Obrigada!
FPrincipal.work.First;
while not FPrincipal.work.Eof do begin
If (FPrincipal.work.FieldByName(´cRefer´).AsString = FPrincipal.work2.FieldByName(´cRefer´).AsString) then begin
QRDBText1.Font.Color := clRed;
QRDBText1.Font.Color := clRed;
QRDBText2.Font.Color := clRed;
QRDBText3.Font.Color := clRed;
QRDBText4.Font.Color := clRed;
QRDBText5.Font.Color := clRed;
QRDBText6.Font.Color := clRed;
QRDBText7.Font.Color := clRed;
QRDBText8.Font.Color := clRed;
QRDBText9.Font.Color := clRed;
QRDBText10.Font.Color := clRed;
QRDBText11.Font.Color := clRed;
QRDBText12.Font.Color := clRed;
QRDBText13.Font.Color := clRed;
QRDBText14.Font.Color := clRed;
QRDBText15.Font.Color := clRed;
QRDBText16.Font.Color := clRed;
QRDBText17.Font.Color := clRed;
QRDBText18.Font.Color := clRed;
QRDBText19.Font.Color := clRed;
QRDBText20.Font.Color := clRed;
QRDBText21.Font.Color := clRed;
QRDBText22.Font.Color := clRed;
QRDBText23.Font.Color := clRed;
QRDBText24.Font.Color := clRed;
QRDBText25.Font.Color := clRed;
QRDBText26.Font.Color := clRed;
FPrincipal.work.Next;
FPrincipal.work2.First;
end else begin
FPrincipal.work2.Next;
If FPrincipal.work2.Eof then begin
QRDBText1.Font.Color := clGreen;
QRDBText2.Font.Color := clGreen;
QRDBText3.Font.Color := clGreen;
QRDBText4.Font.Color := clGreen;
QRDBText5.Font.Color := clGreen;
QRDBText6.Font.Color := clGreen;
QRDBText7.Font.Color := clGreen;
QRDBText8.Font.Color := clGreen;
QRDBText9.Font.Color := clGreen;
QRDBText10.Font.Color := clGreen;
QRDBText11.Font.Color := clGreen;
QRDBText12.Font.Color := clGreen;
QRDBText13.Font.Color := clGreen;
QRDBText14.Font.Color := clGreen;
QRDBText15.Font.Color := clGreen;
QRDBText16.Font.Color := clGreen;
QRDBText17.Font.Color := clGreen;
QRDBText18.Font.Color := clGreen;
QRDBText19.Font.Color := clGreen;
QRDBText20.Font.Color := clGreen;
QRDBText21.Font.Color := clGreen;
QRDBText22.Font.Color := clGreen;
QRDBText23.Font.Color := clGreen;
QRDBText24.Font.Color := clGreen;
QRDBText25.Font.Color := clGreen;
QRDBText26.Font.Color := clGreen;
FPrincipal.work.Next;
FPrincipal.work2.First;
end;
end;
end;
Daia
Curtidas 0
Respostas
Daia
26/12/2006
Ninguém q possa me ajudar?? Preciso muito...
Valeu!
Valeu!
GOSTEI 0
Macario
26/12/2006
Olá.
Não é preciso fazer um while no evento BeforePrint da Qrband(detail), pois o proprio QuickReport se encarrega disso.
creio que o voce poder tentar é no evento BeforePrint da banda voce faz:
Apenas lembre-se de setar indice para poder fazer a comparação.
Espero que ajude.
Não é preciso fazer um while no evento BeforePrint da Qrband(detail), pois o proprio QuickReport se encarrega disso.
creio que o voce poder tentar é no evento BeforePrint da banda voce faz:
var x: smallInt; vCor : TColor; begin FPrincipal.work.SetKey; FPrincipal.work.FieldByName(´cRefer´).AsString := FPrincipal.work2.FieldByName(´cRefer´).AsString; if FPrincipal.work.GotoKey then vCor := clRed else vCor := clGreen; for x:= 1 to 26 do TQRDBText.(´QRDBText´+IntToStr(x)).Font.Color := vCor; end;
Apenas lembre-se de setar indice para poder fazer a comparação.
Espero que ajude.
GOSTEI 0
Daia
26/12/2006
Muito obrigada por responder...
Mas esta dando erro: SetKey: undeclared identifier...
Como tenho q declarar??
Mas esta dando erro: SetKey: undeclared identifier...
Como tenho q declarar??
GOSTEI 0
Macario
26/12/2006
Olá [b:521604be5d]daia[/b:521604be5d].
Qual tipo de DataSet é [b:521604be5d]Work[/b:521604be5d]?
Obs.: Os comandos SetKey e gotoKey, para serem usados necessitam de um indice composto pelo(s) campo(s) da pesquisa.
Qual tipo de DataSet é [b:521604be5d]Work[/b:521604be5d]?
Obs.: Os comandos SetKey e gotoKey, para serem usados necessitam de um indice composto pelo(s) campo(s) da pesquisa.
GOSTEI 0
Daia
26/12/2006
são TQuery... da aba BDE
GOSTEI 0
Macario
26/12/2006
Olá.
Em TQuery não tem metodos SetKey, GotoKey e FindKey. O que poderia ser usado seria Locate, mas não sei lhe dizer quanto seria a perda de performance.
Tal vez se você fizer uso de join na sua instrução, trazendo um campo virtual como Flag, assim ficaria mais facil ´pintar´ seu relatorio.
Em TQuery não tem metodos SetKey, GotoKey e FindKey. O que poderia ser usado seria Locate, mas não sei lhe dizer quanto seria a perda de performance.
Tal vez se você fizer uso de join na sua instrução, trazendo um campo virtual como Flag, assim ficaria mais facil ´pintar´ seu relatorio.
GOSTEI 0
Daia
26/12/2006
agora piorou... não sou muito expert...
GOSTEI 0