CONCORRENCIA DE DADOS
http://www.macoratti.net/09/03/vb6_amu.htm
Eu resolvi este problema e mais outros dois relacionados criando duas tabela a mais no Banco chamando as de Verificadores, ou seja, quando eu abro uma tabela qualquer para inclusão de dados ele gera o código automaticamente independente se mais algum outro usuario está incluindo registro nesta mesama tabela, o que se no modo convencional pode gerar id duplicados gerando erroso. Se for aberto para edição ou exclusão coloco o id do registro na tabela marco um campo relacionado dizendo que este registro esta aberto em modo de edição ou exclusão, assim nem um outro usuario não poder nem visualizar este registro enquanto a edição não for concluida, entendeu???
Para fazer sua aplicação Visual Basic com acesso a banco de dados via DAO ou ADO funcionar em um ambiente multiusuário é só compartilhar o banco de dados. Até aqui tudo bem...
O grande problema e a grande maioria das dúvidas ocorrem com relação a que atitude tomar quando dois usuários acessam o mesmo registro para fazer alterações , ou um o que fazer quando um usuário tentar acessar um registro que acabou de se excluÃdo ? Tudo bem você deve travar o registro/página , mas como a ADO funciona neste quesito e o que ela trouxe de novo ???
Ao utilizar a DAO , todos já devem saber , o travamento era feito exclusivamente por páginas , i.e, você não conseguia travar um registro , trava uma página inteira com um determinado número de registros.
Com o advento da ADO e a partir da versão 4.0 do Jet Engine do Access você pode travar um registro do banco de dados. Traçamos assim a hierarquia do travamento :
Travamento do Banco dados
Travamento da tabela
Travamento de registros
[Ô]Mas o que eu devo fazer para que ao abrir um banco de dados com ADO o travamento de registros seja habilitado ?[Ô] . Boa Pergunta ! A resposta é - [Ô]Absolutamente Nada ![Ô].
Isto mesmo , você não precisa fazer nada , pois o este é o estado padrão para um banco de dados Access aberto via ADO. Você pode explicitar isto usando o parâmetro : Database Locking Mode = 1. Assim:
conexao = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & SeuArquivo & [Ô];Jet OLEDB;Database Locking Mode=1
O travamento por página ainda é utilizado quando você executa comandos SQL para Excluir ( Delete ) , Atualizar ( Update ) dentre outros e para atualizações em campos do tipo MEMORANDO e em campos INDEXADOS.
No demais para tratar os conflitos de acesso simultâneo aos registros da tabela você apenas deve escrever uma rotina para travar o registro e verificar se ocorre um erro ; se o erro ocorrer você deve interceptá-lo e responder conforme o tipo de erro.
Font: Macorrati
e este link também pode te ajudar
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q190727
Citação:DANIKULL escreveu:
AMELORP, boa noite.
Eu resolvi este problema e mais outros dois relacionados criando duas tabela a mais no Banco chamando as de Verificadores, ou seja, quando eu abro uma tabela qualquer para inclusão de dados ele gera o código automaticamente independente se mais algum outro usuario está incluindo registro nesta mesama tabela, o que se no modo convencional pode gerar id duplicados gerando erroso. Se for aberto para edição ou exclusão coloco o id do registro na tabela marco um campo relacionado dizendo que este registro esta aberto em modo de edição ou exclusão, assim nem um outro usuario não poder nem visualizar este registro enquanto a edição não for concluida, entendeu???
ENTENDI...vou tentar montar uma estrutura como a sua...é bem interessante...obrigado!
Citação:MARCELO-TREZE escreveu:
Acho que a esta altura você já deve estar escolado sobre como funciona o bloqueio de registros com DAO . Criando um aplicação Multiusuário com ADO. Neste dica apenas vamos por os pingos nos is...
Para fazer sua aplicação Visual Basic com acesso a banco de dados via DAO ou ADO funcionar em um ambiente multiusuário é só compartilhar o banco de dados. Até aqui tudo bem...
O grande problema e a grande maioria das dúvidas ocorrem com relação a que atitude tomar quando dois usuários acessam o mesmo registro para fazer alterações , ou um o que fazer quando um usuário tentar acessar um registro que acabou de se excluÃdo ? Tudo bem você deve travar o registro/página , mas como a ADO funciona neste quesito e o que ela trouxe de novo ???
Ao utilizar a DAO , todos já devem saber , o travamento era feito exclusivamente por páginas , i.e, você não conseguia travar um registro , trava uma página inteira com um determinado número de registros.
Com o advento da ADO e a partir da versão 4.0 do Jet Engine do Access você pode travar um registro do banco de dados. Traçamos assim a hierarquia do travamento :
Travamento do Banco dados
Travamento da tabela
Travamento de registros
[Ô]Mas o que eu devo fazer para que ao abrir um banco de dados com ADO o travamento de registros seja habilitado ?[Ô] . Boa Pergunta ! A resposta é - [Ô]Absolutamente Nada ![Ô].
Isto mesmo , você não precisa fazer nada , pois o este é o estado padrão para um banco de dados Access aberto via ADO. Você pode explicitar isto usando o parâmetro : Database Locking Mode = 1. Assim:
conexao = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & SeuArquivo & [Ô];Jet OLEDB;Database Locking Mode=1
O travamento por página ainda é utilizado quando você executa comandos SQL para Excluir ( Delete ) , Atualizar ( Update ) dentre outros e para atualizações em campos do tipo MEMORANDO e em campos INDEXADOS.
No demais para tratar os conflitos de acesso simultâneo aos registros da tabela você apenas deve escrever uma rotina para travar o registro e verificar se ocorre um erro ; se o erro ocorrer você deve interceptá-lo e responder conforme o tipo de erro.
Font: Macorrati
e este link também pode te ajudar
http://support.microsoft.com/default.aspx?scid=kb;EN-US;q190727
OK Obrigado pela ajuda...vou ler o artigo...realmente o meu maior problema é quanto à tratar os erros, interceptar antes que venham os travamentos....obrigado!