VERIFICAR SE REGSITRO FOI ALTERADO NO FORM

ALCIRTEODORO 26/04/2010 11:50:00
#340262
Quando o usuário abre um registro no form para alterar e fecha sem salvar perde os dados que acabou de alterar.

Gostaria de colocar um aviso que verificasse se o usuário alterou algum campo no form e emitisse um aviso se o usuário clicasse em SAIR sem salvar os dados que acabou de alterar.

Como fazer? Verificar seu algum campo no form foi alterado?
EDERMIR 26/04/2010 12:00:09
#340263
Resposta escolhida
Grave o valor de cada campo na propriedade TAG do TEXT.

Ao sair, verifique se o campo TEXT é igual a propriedade TAG: TEXT1.TEXT = TEXT1.TAG

Se houver valores diferentes emita o aviso de perda de dados.
MSMJUDAS 26/04/2010 12:00:37
#340264
Vc pode fazer um loop na sua tabela e comparar se os dados são iguais aos que estão e cada campo do cadastro ou guardar cada campo em uma variável diferente e na hora de sair verifica se o que está no textbox, combobox, etc é igual ou diferente do que vc guardou nas variaveis.

Tente usar arrays tbm


Não sei se conseguiu entender
PH1959 26/04/2010 12:06:24
#340266


para garantir q de certo, primeiro vc tem q remover o controlbox do form... porque se o usuario clicar fechar no controlbox não será POSSIVEL efetuar a verificação.

Depois, vc pode criar um array e jogar todos os dados dentro...
qdo o usuario for sair os dados serão comparados...
EDERMIR 26/04/2010 12:32:16
#340269
Citação:

:


para garantir q de certo, primeiro vc tem q remover o controlbox do form... porque se o usuario clicar fechar no controlbox não será POSSIVEL efetuar a verificação.

Depois, vc pode criar um array e jogar todos os dados dentro...
qdo o usuario for sair os dados serão comparados...



Aparentemente, se você colocar no evento TERMINATE funciona.
ALCIRTEODORO 26/04/2010 14:00:06
#340271
Existe alguma forma de percorrer (FOR ... NEXT) todos os controles do form e guardar o conteudo dos controles na propriedade TAG de cada controle, para depois caso o usuario feche a tela sem salvar comparar com a propriedade TEXT dos controles.

ALCIRTEODORO 26/04/2010 14:39:32
#340275
Amigos, graças a ajuda de todos vocêis consegui. Veja abaixo como gravar a propriedade TAG de todos os controles do form:

For i = 0 To Tela.Controls.Count - 1
If TypeOf Tela.Controls(i) Is TextBox Then
Tela.Controls(i).Tag = Tela.Controls(i).Text
End If
Next

E abaixo como verificar se algum controle esta diferente:

For i = 0 To Tela.Controls.Count - 1
If TypeOf Tela.Controls(i) Is TextBox Then
If Tela.Controls(i).Text <> Tela.Controls(i).Tag Then
intStatusRegistros = intStatusRegistros + 1
Exit For
End If
End If
Next

Eu mandei somar um variavel os controles que foram alterados. Se por acaso a variavel intStatusRegistros for igual ao maior do que 1 significa que algum controle foi alterado e avisa o usuário.

Não sei se esta correto, ou existe uma maneira mais facil, mas deu certo.
Tópico encerrado , respostas não são mais permitidas