Fórum Cálculo com afterpost. Preciso de opiniões #407774
18/09/2011
0
em uma tela do sistema, tenho 3 tabelas : movimento, movimento_itens e saldo, sendo que movimento e movimento_itens em master-detail. Com elas trabalho de forma
tranquila. Porém preciso puxar um saldo de um determinado usuário e atualiza-lo. Comecei a utilizar o afterpost para fazer isso, mas no evento keydown do dbgrid uso a seguinte função :
case Key of
vk_return: // Enter pelo Tab
begin
with dbgrd2 do
begin
if (SelectedIndex < (fieldcount - 1)) then // Se o item atual do DbGrid não for o último campo
SelectedIndex := SelectedIndex + 1 // aumenta o item em 1
else // caso contrario
begin
cdsMovVale.Next; // move para o proximo registro da tabela
SelectedIndex := 0; // seleciona o primeiro campo
if cdsMovVale.eof then
if cdsMovVale.State dsbrowse then
cdsMovVale.Append;
end;
end;
end;
end;
isso faz com que o evento afterpost seja disparado 2 vezes, uma quando o item é gravado na tabela movimento_itens e outra quando nessa função acima dispara o append para criar outra linha. Já tentei tirar o append, mas quando preciso adicionar mais um item o dbgrid da o append automaticamente.
O que voces me aconselham a fazer, estou meio parado nisso a algum tempo.
Agradeço desde já
Alexandre Torres
Alexandre Torres
Curtir tópico
+ 0Posts
18/09/2011
Ricardo Pereira
se tiver posso tentar lhe ajudar.
se nao.
tenta criar uma variavel global chamada
inicializou : boolean;
no create da tela coloca inicializou := false;
e faz o seguinte teste na sua função
if inicializou then
exit;
inicializou:= true;
e no afterpost do seu dataset de saldo depois voce seta
o inicializou:= false; novamente..
att. Ricardo silva
ricardo@sysworldti.com.br
Gostei + 0
18/09/2011
Alexandre Torres
se tiver posso tentar lhe ajudar.
se nao.
tenta criar uma variavel global chamada
inicializou : boolean;
no create da tela coloca inicializou := false;
e faz o seguinte teste na sua função
if inicializou then
exit;
inicializou:= true;
e no afterpost do seu dataset de saldo depois voce seta
o inicializou:= false; novamente..
att. Ricardo silva
ricardo@sysworldti.com.br
Muito obrigado pela participação mas minha bronca é ter uma opção que pelo que percebi, não seja o afterpost para atualizar esse determinado campo.
Vou ver se consigo aqui mandar a estrutura da tabela.
Agradeço
Alexander Torres
Gostei + 0
19/09/2011
Alexandre Torres
E aí alguem tem alguma outra opnião?
Agradeço desde já.
Alexandre Torres
Gostei + 0
27/09/2011
Alexandre Torres
em uma tela do sistema, tenho 3 tabelas : movimento, movimento_itens e saldo, sendo que movimento e movimento_itens em master-detail. Com elas trabalho de forma tranquila fazendo o cálculo dos itens adicionados com um campo aggregate. Porém preciso puxar um saldo(tabela saldo) de um determinado usuário e atualiza-lo conforme for adicionando itens. Comecei a utilizar o afterpost para fazer isso, mas no evento keydown do dbgrid uso a seguinte função :
Código:
case Key of vk_return: // Enter pelo Tab begin with dbgrd2 do begin if (SelectedIndex < (fieldcount - 1)) then // Se o item atual do DbGrid não for o último campo SelectedIndex := SelectedIndex + 1 // aumenta o item em 1 else // caso contrario begin cdsMovVale.Next; // move para o proximo registro da tabela SelectedIndex := 0; // seleciona o primeiro campo if cdsMovVale.eof then if cdsMovVale.State <> dsbrowse then cdsMovVale.Append; end; end; end; end;
isso faz com que o evento afterpost seja disparado 2 vezes, uma quando é dado o post na tabela movimento_itens e outra quando nessa função acima dispara o append para criar outra linha. Já tentei tirar o append, mas quando preciso adicionar mais um item o dbgrid da o append automaticamente.
O que voces me aconselham a fazer, estou meio parado nisso a algum tempo.
Agradeço desde já
Alexandre Torres
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)