Fórum Altero o FIELD mas não altera no DBGRID #520313
19/05/2015
0
No meu código eu crio um ClientDataSet em tempo de execução e preencho os FIELDS, que são do tipo CURRENCY, com um saldo.
Coloquei esse DataSet no DBGRID e deixo o cliente alterar esse SALDO, porém coloquei no "onvalidate" desses fields uma verificação, aonde
ele compara o saldo com o valor que o usuário preencheu, e se for maior, ele manda uma mensagem e retorno o valor para o saldo.
Eu faço essa alteração no field, mas no DBGRID mantém o valor que o usuário digitou, não retornando pro saldo.
Alguém tem alguma ideia o que posso fazer?
Wash
Curtir tópico
+ 0Posts
19/05/2015
Marcos P
É isso ?!?
A alteração ocorre direto na célula da grid ou você carrega algum form para isso ?
Tentou um refresh na grid, depois de retornar o valor ?
Tentou um CancelUpdates ?
Tentou um ApplyUpdates no client data set ( mesmo sem ter existido qualquer alteração ) ?
Gostei + 0
19/05/2015
Wash
CancelUpdates não... mas eu acredito que no onvalidate ele já fez o update, porque a alteração é feita diretamente na grid... ela está editável.
Gostei + 0
19/05/2015
Marcos P
Bom não é... mas é uma solução de contorno funcional !
Gostei + 0
20/05/2015
Wash
Como fiz:
Eu criei uma procedure padrão UpdateData aonde eu faço a verificação se o valor digitado é maior que o saldo.
Se for, eu coloco Value := Saldo...
Aí após criar o clientdataset, eu percorri com um for o DbGrid para inserir no evento OnUpdateData das colunas a procedure...
for w := 2 to DBGrid.Columns.Count - 1 do
begin
DbGrid.Columns[w].OnUpdateData := UpdateData;
end;
e assim ele entra nessa validação.
Agora está ok!
Obrigado Marcos!
Gostei + 0
20/05/2015
Marcos P
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)