Erro com a formatação e o Banco de Dados

Delphi

26/02/2005

Caros amigos, estou enfrentando o seguinte problema:

Tenho de um formulário de vendas um gatilho que formata o texto do meu DBGrid de acordo com os seguintes critérios:

Quando a data de vencimento está longe de vencer, o texto do DBGrid aparece com aparência normal (preto), quando falta um dia para vencer as fontes mudam para a cor verde, quando está no dia do vencimento as fontes ficam azul e quando passa da data de vencimento, as fontes ficam vermelhas. E os nomes ´Atualizado´ e ´Pendências´ aparecem nos campos respectivos.

Acontece que o código que utilizei para conseguir tais resultado gera um erro muito chato, onde a Query fica louca e começa e criar e salvar vários registros em branco e, só pára se o form for fechado. Mas os registros em branco permanecem.

Tirei o código do meu sistema e ele roda normalmente. Acontece que não posso deixá-lo de fora, pois é uma exigência de meu cliente.

Se alguém puder me ajudar, dar uma olhada no código e dizer-me onde está o erro, ficarei eternamente agradecida.

Obs: Acredito que seja uma coisa bem simples, mas, que pelo fato de eu já estar de cabeça quente com o sistema, não estou conseguindo enxergar.

(O código foi colocado no Evento OnDrawColumnCell do DBGrid, estou trabalhando com Paradox e Query - Delphi 3 - Client/Server).



procedure TFormVendas_.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
S: String;
R: TRect;
begin
if (dm_.QryVendasVencimento.Value = StrToDateTime(DateToStr(Now+1)))then
begin
with DBGrid1.Canvas do
begin
Font.Color := clGreen;

if (dm_.QryVendasSituacao.Text ´Atualizado´) then
begin
dm_.QryVendas.Edit;
dm_.QryVendasSituacao.Text := ´Atualizado´;
dm_.QryVendasValorPend.Clear;
dm_.QryVendasValorAtual.Value := dm_.QryVendasValor.Value;
dm_.QryVendas.Post;
end;

FillRect(Rect);

S := Column.Field.AsString;
R := Rect;
DrawText(Handle, PChar(S), Length(S), R, DT_LEFT or DT_LEFT);
end;
end;

if (dm_.QryVendasVencimento.Value < StrToDateTime(DateToStr(Now)))then
begin
with DBGrid1.Canvas do
begin
Font.Color := clRed;

if (dm_.QryVendasSituacao.Text ´Pendências´) then
begin
dm_.QryVendas.Edit;
dm_.QryVendasSituacao.Text := ´Pendências´;
dm_.QryVendasValorAtual.Clear;
dm_.QryVendasValorPend.Value := dm_.QryVendasValor.Value;
dm_.QryVendas.Post;
end;

FillRect(Rect);

S := Column.Field.AsString;
R := Rect;
DrawText(Handle, PChar(S), Length(S), R, DT_LEFT or DT_LEFT);
end;
end;


if (dm_.QryVendasVencimento.Value = StrToDateTime(DateToStr(Now)))then
begin
with DBGrid1.Canvas do
begin
Font.Color := clBlue;

if (dm_.QryVendasSituacao.Text ´Atualizado´) then
begin
dm_.QryVendas.Edit;
dm_.QryVendasSituacao.Text := ´Atualizado´;
dm_.QryVendasValorPend.Clear;
dm_.QryVendasValorAtual.Value := dm_.QryVendasValor.Value;
dm_.QryVendas.Post;
end;

FillRect(Rect);

S := Column.Field.AsString;
R := Rect;
DrawText(Handle, PChar(S), Length(S), R, DT_LEFT or DT_LEFT);
end;
end;
end;


Anjinho Loiro

Anjinho Loiro

Curtidas 0

Respostas

Edilcimar

Edilcimar

26/02/2005

procure por cor dbgrid errada que eu escrevi, lá mostra um exemplo sobre isto


GOSTEI 0
Anjinho Loiro

Anjinho Loiro

26/02/2005

SOBE


GOSTEI 0
POSTAR