Fórum Deletar no banco o que o grid aponta? #41971
31/01/2004
0
#Inseri os itens com o seu custo e quantidade.
Cada vez que insiro um item ele me dá um total de quanto vai me sair esse pedido em reais, automáticamente.
Problema.
No momento em que deleto um item, tenho que jogar um ´last´ na tabela para que o sistema pegue o último valor inserido e o retire do valor total porém, se eu quizer clicar em um item que esteja no meio do dbgrid, ele não vai apontar para esse item no banco, ouseja ele vai deletar, mas vai atualizar o total do pedido de forma incorreta. pois o valor que ele vai pegar para subtrair do total vai ser ou o primeiro ou o último.
Como faço para apontar no banco o item que eu estiver clicando no dbgride ?
que não esteja tirar ssempre o último e
Valdiney
Curtir tópico
+ 0Posts
01/02/2004
Pedih
olá
como vc tá mostrando registros num grid, provavelmente estes ja devem estar filtrados por uma sql. Eu faço assim em meus projetos :
evento apos deletar ( .delete)
var Reg : TBookmark;
SomaGeral : Currency;
begin
Reg := cdsEntrada.GetBookmark; // pega registro corrente
cdsEntrada.DisableControls; // desarma os controles visuais
cdsEntrada.First;
SomaGeral := 0;
while not cdsEntrada.Eof do
begin
SomaGeral := SomaGeral + cdsEntradaSomaItem.Value;
cdsEntrada.Next;
end;
cdsEntrada.GotoBookmark(Reg); // volta para o registro q estava
cdsEntrada.EnableControls; // ativa os controles
seuEdit_ou_seuLabel := FormatCurr(´#,,0.00´, SomaGeral);
end;
Espero ter ajudado.
pedih@uol.com.br, pedih_rp@yahoo.com.br
Gostei + 0
01/02/2004
Luppy
Vc poderia usar uma query separada pra totalizar o pedido:
QueryTotal.Close;
QueryTotal.Sql.Clear;
QueryTotal.Sql.Add(´sum(ValorUnitario*Quantidade) as ValorTotalPedido´);
QueryTotal.Sql.Add(´where CodigoPedido = :CodigoAtual´);
QueryTotal.ParamByName(´CodigoAtual´).AsInteger := ´seu código atual´;
QueryTotal.Open;
Atualize a query nos evendos After Insert, Edit e Delete da tabela Itens.
Se for usar da forma como o pedih sugeriu, não esqueça de liberar o ponteiro da memória:
cdsEntrada.GotoBookmark(Reg); // volta para o registro q estava
cdsEntrada.FreeBookmark(Reg); // Limpa o Bookmark da mem.
Abraço.
Gostei + 0
01/02/2004
Luppy
Desculpe, no After Post e Delete.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)