Procedure SQL função Delphi
07/04/2006
0
Iai Galera,
possuo uma duvida e gostaria que me ajudassem.
Seguinte,
Tenho uma procedure no SQl que me retorna se existe alguma informação :
Create Procedure Sp_TemNota( @NrLtAtend Char(9) )
AS
Begin
Select Top 1 TpPed From PedSai
Where NrLtAtend = @NrLtAtend
And Nota = ´S´
End
Tenho uma função no Delphi que me retorna um resultado desta função:
function TfrmLoteDoc.TemNota(NrLtAtend: String): Boolean;
begin
with sp_TemNota do
Begin
Params[1].AsString := NrLtAtend;
Open;
Result := Not IsEmpty;
Close;
End;
end;
Isto server para me dizer se um daterminado Lote possui Nota, nota é se uma pessoa já visualizou e realizou as operações necessarias.
E quando sim, a linha tem que ficar azul, uso o evento do Grid
procedure TfrmLoteDoc.GridDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
mColor : TColor;
begin
if TemNota( qryLotesNrLtAtend.AsString ) Then
mColor := clBlue
else
mColor := clBlack;
if ( gdselected in State ) Then
begin
Grid.Canvas.Font.Style := [fsBold];
Grid.Canvas.Brush.Color := $00FFEFDF;
end
else
Grid.Canvas.Font.Style := [];
Grid.Canvas.Font.Color := mColor;
Grid.DefaultDrawColumnCell( Rect , Grid.SelectedIndex , Column , State );
end;
Só que este procedimento está ficando demorado. Alguém teria uma idéia para que talvez fique mais rapido.
Qualquer idéia é valida galera....
Muito Obrigado
Abraços...
possuo uma duvida e gostaria que me ajudassem.
Seguinte,
Tenho uma procedure no SQl que me retorna se existe alguma informação :
Create Procedure Sp_TemNota( @NrLtAtend Char(9) )
AS
Begin
Select Top 1 TpPed From PedSai
Where NrLtAtend = @NrLtAtend
And Nota = ´S´
End
Tenho uma função no Delphi que me retorna um resultado desta função:
function TfrmLoteDoc.TemNota(NrLtAtend: String): Boolean;
begin
with sp_TemNota do
Begin
Params[1].AsString := NrLtAtend;
Open;
Result := Not IsEmpty;
Close;
End;
end;
Isto server para me dizer se um daterminado Lote possui Nota, nota é se uma pessoa já visualizou e realizou as operações necessarias.
E quando sim, a linha tem que ficar azul, uso o evento do Grid
procedure TfrmLoteDoc.GridDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
mColor : TColor;
begin
if TemNota( qryLotesNrLtAtend.AsString ) Then
mColor := clBlue
else
mColor := clBlack;
if ( gdselected in State ) Then
begin
Grid.Canvas.Font.Style := [fsBold];
Grid.Canvas.Brush.Color := $00FFEFDF;
end
else
Grid.Canvas.Font.Style := [];
Grid.Canvas.Font.Color := mColor;
Grid.DefaultDrawColumnCell( Rect , Grid.SelectedIndex , Column , State );
end;
Só que este procedimento está ficando demorado. Alguém teria uma idéia para que talvez fique mais rapido.
Qualquer idéia é valida galera....
Muito Obrigado
Abraços...
Tremonti
Curtir tópico
+ 0
Responder
Posts
07/04/2006
Osocram
Amigo.. Esse evento
Non tem como vc colocar um campo ou os campos q vc verifica se jah foi feito as operacoes no DataSet do DBGrid?
Dae vc apenas faria a comparacao na hora....
Espero ter ajudado.
GridDrawColumnCell
eh executado a cada celula pintada.... enton agora imagina q a cada celula desse dbgrid ele tem q ficar fazendo o sql e retornando o resultado p vc... agora imagina alguns computadores fazendo isso ao mesmo tempo (non sei se o seu sistema eh multiusuario... foi so um exemplo), eh por isso q deve estar ficando lento....Non tem como vc colocar um campo ou os campos q vc verifica se jah foi feito as operacoes no DataSet do DBGrid?
Dae vc apenas faria a comparacao na hora....
Espero ter ajudado.
Responder
Clique aqui para fazer login e interagir na Comunidade :)