mudança de cor em qrband

Delphi

26/12/2006

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;


Daia

Daia

Curtidas 0

Respostas

Daia

Daia

26/12/2006

Ninguém q possa me ajudar?? Preciso muito...
Valeu!


GOSTEI 0
Macario

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:
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

Daia

26/12/2006

Muito obrigada por responder...
Mas esta dando erro: SetKey: undeclared identifier...
Como tenho q declarar??


GOSTEI 0
Macario

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.


GOSTEI 0
Daia

Daia

26/12/2006

são TQuery... da aba BDE


GOSTEI 0
Macario

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.


GOSTEI 0
Daia

Daia

26/12/2006

agora piorou... não sou muito expert...


GOSTEI 0
POSTAR