SABER SE UMA TABELA FOI ALTERA ANTES DE SALVA
Boa tarde, pessoal, como saber se uma tabela foi alterada antes de clicar em salvar / atualiza.
desde de já agradeço. att
desde de já agradeço. att
Alterada você quer dizer na estrutura ou se o registro ao qual você vai gravar está diferente do que está sendo visualizado?
Se vc utilizar um banco de dados é possivel, access só com gambiarra e nehuma é segura.
Já banco de dados vc pode utilizar o campo do tipo TimeStamp que só se altera quando alguma edição é feita de fato no registro.
Já banco de dados vc pode utilizar o campo do tipo TimeStamp que só se altera quando alguma edição é feita de fato no registro.
Eu faria assim: abriria o form para editar. Ao ser carregado, como nada ainda foi alterado, o botão <Salvar Alterações> ou <Gravar Alterações> estaria desabilitado...
DaÃ, mudaria uma informação qualquer num campo X do form. No evento <LostFocus> do campo editado, o botão <Salvar Alterações> ou <Gravar Alterações> passaria
a habilitado, indicando que houve alguma alteração nas informações da tabela.
(Para evitar algum equivoco nas informações da tabela, também um botão <Cancelar> seria habilitado, no evento <LostFocus> do campo modificado), deixando à sua
escolha salvar as alterações, ou abandonar sem salvar o que foi alterado.
DaÃ, mudaria uma informação qualquer num campo X do form. No evento <LostFocus> do campo editado, o botão <Salvar Alterações> ou <Gravar Alterações> passaria
a habilitado, indicando que houve alguma alteração nas informações da tabela.
(Para evitar algum equivoco nas informações da tabela, também um botão <Cancelar> seria habilitado, no evento <LostFocus> do campo modificado), deixando à sua
escolha salvar as alterações, ou abandonar sem salvar o que foi alterado.
Citação::
Alterada você quer dizer na estrutura ou se o registro ao qual você vai gravar está diferente do que está sendo visualizado?
Apenas o registro, tem como fazer essa comparação?
Tem várias maneiras de se fazer isso. Vai depender da estrutura do seu banco de dados.
Banco ?
o Banco de dados que estou a usar e Mysql.
Ótimo, então, se sua tabela não possui, insira um campo tipo timestamp.
Eu faço assim:
Quando entra o registro na tela eu gravo a data + hora em que ele entrou em uma variavel de entrada, quando o usuario for salvar, eu verifico o campo timestamp desse registro, se ele for mais recente que a varialvel de entrada, é sinal que houve alteração enquanto ele estava ali carregado, então não autorizo a edição e informo qual usuario o fez, em que maquina e em que horário, é claro, nessa tabela existe os campos, usuario/maquina e timestamp.
Eu faço assim:
Quando entra o registro na tela eu gravo a data + hora em que ele entrou em uma variavel de entrada, quando o usuario for salvar, eu verifico o campo timestamp desse registro, se ele for mais recente que a varialvel de entrada, é sinal que houve alteração enquanto ele estava ali carregado, então não autorizo a edição e informo qual usuario o fez, em que maquina e em que horário, é claro, nessa tabela existe os campos, usuario/maquina e timestamp.
Eu criei uma tabela, que mostra usuário, Data , Hora, form que entrou e Ação ( salvou, alterou, deletou, incluiu ou imprimiu), e num campo detalhes o que ele alterou, faço isso em cada comando executado pelo usuário. Se o usuário clicou em alterar e clicou em salvar, Ele salva o Log da ação independente se algum campo foi alterado ou não.
Ajuda, pois usuário ama dizer que o registro sumiu, alterou ou foi incluÃdo sozinho, dizendo culpa do sistema. teve um que disse que eu alterei o log para culpa-lo e o disse que o log de ações estava errado.
Ajuda, pois usuário ama dizer que o registro sumiu, alterou ou foi incluÃdo sozinho, dizendo culpa do sistema. teve um que disse que eu alterei o log para culpa-lo e o disse que o log de ações estava errado.
Citação:Ele salva o Log da ação independente se algum campo foi alterado ou não
Ai que esta a diferença, os timestamp só se alteram se houve de fato alteração, dessa forma vc passa uma informação precisa ao cliente.
E a questão não é se fez ou não, é se fez enquanto o registro esteve carregado na tela.
Tópico encerrado , respostas não são mais permitidas