DUVIDAS SOBRE SISTEMA MULTI USUARIO
O travamento otimista é usado para modificações que acontecem simultaneamente, ou onde tem múltiplos usuários fazendo mudanças nos mesmos registros. Com um bloqueio opmistic, a tabela ou o registro só é bloqueado quando o método Update do RecordSet é chamado.
Ai entra o que o Weber disse , é questão de segundos. Se acontecer, que é dificil mas acontece, é só tratar com a mensagem ao usuario pedindo para que ele clique novamente.
Citação:Case -2147217887 'Estão editando o reg ao mesmo tempo
'MsgBox Err.Number & Err.Description
doevents
Err.Clear
Me.MousePointer = 0
Me.Enabled = True
lblProcesso = ""
RSClientes.Close
Set RSClientes = Nothing
Conexao.RollbackTrans
MsgBox "O Registro esta sendo ditado por outro Usuário ao mesmo tempo, Tente Novamente", vbCritical, "Aviso"
Agora Weber, quanto a utilizar controle de transções, em casos de grandes rotinas de inserção de dados é imprecindivel.
Se vc estiver inserindo registros em varias tabelas como por exemplo em casos de vendas onde entram comissões, historico de clientes, baixa de estoque... etc, uma queda de energia nesse intervalo ou algum tipo de erro, um BeginTrans antes de tudo evitaria uma grande falha, como uma comissão indevida por exemplo.
T+
Citação:NIL escreveu:
adLockOptimistic
O travamento otimista é usado para modificações que acontecem simultaneamente, ou onde tem múltiplos usuários fazendo mudanças nos mesmos registros. Com um bloqueio opmistic, a tabela ou o registro só é bloqueado quando o método Update do RecordSet é chamado.
Ai entra o que o Weber disse , é questão de segundos. Se acontecer, que é dificil mas acontece, é só tratar com a mensagem ao usuario pedindo para que ele clique novamente.
Case -2147217887 [ÃÂ']Estão editando o reg ao mesmo tempo
[ÃÂ']MsgBox Err.Number & Err.Description
doevents
Err.Clear
Me.MousePointer = 0
Me.Enabled = True
lblProcesso =
RSClientes.Close
Set RSClientes = Nothing
Conexao.RollbackTrans
MsgBox O Registro esta sendo ditado por outro Usuário ao mesmo tempo, Tente Novamente , vbCritical, Aviso
Agora Weber, quanto a utilizar controle de transções, em casos de grandes rotinas de inserção de dados é imprecindivel.
Se vc estiver inserindo registros em varias tabelas como por exemplo em casos de vendas onde entram comissões, historico de clientes, baixa de estoque... etc, uma queda de energia nesse intervalo ou algum tipo de erro, um BeginTrans antes de tudo evitaria uma grande falha, como uma comissão indevida por exemplo.
T+
pode ser bom ser humano é isso mesmo vivendo e aprendendo, mas ql versao do ado permite o uso do begtrans... e comitrans qualquer uma ou so apartir de uma especifica, vou realizar alguns testes mas tu nao nenhuma perda de performace sei la
Citação:adLockOptimistic
O travamento otimista é usado para modificações que acontecem simultaneamente, ou onde tem múltiplos usuários fazendo mudanças nos mesmos registros. Com um bloqueio opmistic, a tabela ou o registro só é bloqueado quando o método Update do RecordSet é chamado.
Nil quanto a isso vc tem razão, somente um detalhe tem q ser acrescentado.
o texto abaixo foi extraido da Microsoft :
Nossa outra constante - adLockOptimistic - é usada para configurar o "tipo de bloqueio" dos registros. O tipo de bloqueio determina como (e se) o banco de dados bloqueia o registro que está sendo exibido, atribuindo a você o direito exclusivo de modificar esse registro.
adLockOptimistic
Bloqueia momentaneamente um registro somente quando o método Update é chamado.
O restante do bloqueio quem faz sou eu, atravéz do compo já citado.
mas na pratica vi que nao é, de mais de uma centena de clientes apenas um tem problemas, e o pior era recorrente, em certa parte do sistema a informação era uma( o cliente devia) em outra ele havia pago com cheque ou crt de credito pra tal dia, os problemas acabaram com a implementação do begintrans e cia ltda.
Minha rotina da pagamento eh mto extensa, entao acontecia da comunicação cair no meio do processo, a conexao do meu cliente eh via rede de fibra otica dedicada(2 MB)... Nem assim a conexao continua foi garantida...
Hailll Transação Segura...
Realmente vivendo e aprendendo, e eu ja aprendi muito com você.
Olha, quanto a versão do ADO eu ja realizei com 2.0 e 2.8 então acho que serve para qualqer uma.
Performance ? Não percebo diferença alguma.
Abraço.
Fox,
Perfeito, e não contesto seu metodo da forma que é feito e sim que se não houver a declaração de tipo de bloqueio antes da edição e em seguida execuntado db.execute "update tabela ....", não funciona.
Abraço