Fórum Access ADO em rede #296715

22/09/2005

0

Olá
Tenho um sistema em Access 2000 + ADO (Microsoft Jet 4.0), onde o banco e o executável ficam no servidor, e as máquinas cliente possuem atalhos para o executável no servidor. Não uso ADOTables, somente ADOQueries. Quando o sistema tá aberto em duas máquinas cliente diferentes, existe um form que mostra a seguinte mensagem de erro quando os dois usuários tentam gravar registros na tabela correspondente a esse form:

"Não foi possível atualizar; atualmente bloqueado pelo usuário <usuário> no computador <computador>"

Isso só acontece nesse form, os outros não dão problema. Alguém já passou por isso antes? Pelo jeito, o erro se originou no Access e foi passado pro Delphi. Sei q o Access não é apropriado para uso em rede, mas será q utilizando TClientDataSets + TDataSetProviders eu remediaria a situação? Alguém pode me indicar bons links para entender as vantagens de usar TClientDataSets + TDataSetProviders na prática?
Abraços


Tnaires

Tnaires

Responder

Posts

23/09/2005

Tnaires

Bom, eu nunca tinha mexido com ClientDataSets antes, li bastante coisa d ontem pra hj, e já tô mudando o projeto :D
Entretanto, gostaria de saber se alguém já obteve essa mensagem d erro.
Portanto, sobe :wink:


Responder

Gostei + 0

25/09/2005

Thomaz_prg

Colega, com o Access eu não vejo vantagens em se mudar o projeto, para utilizar CLientDataSet´s (no entando é uma opinião pessoal minha). No caso da mensagem de erro, é uma mensagem que vem do Access mesmo. Tente fazer o seguinte, abra o seu banco, vá em Ferramentas, Opções, na aba Avançado, deixe marcada a opção Modo de Abertura Padrão para Compartilhado e a opção Proteção de Registros Padrão, deixe marcado para Registro Editado ou Sem Proteção. Tente isso, e veja se funciona.


Responder

Gostei + 0

26/09/2005

Tnaires

Olá Thomaz, obrigado pela resposta!
Eu tb não gosto d Access em rede, mas é uma decisão do meu chefe, ou seja, não depende d mim. Mas eu tô sugerindo a ele pra mudar pra Firebird. D qq forma, esse problema tem q ser resolvido antes d migrar o banco, pq o sistema já tá funcionando lá.
Qto à sua sugestão, o banco d dados tá dando esse erro no modo compartilhado e sem proteção d registro ( q são as opções padrão ).
Abraços


Responder

Gostei + 0

26/09/2005

Thomaz_prg

Colega, ao abrir esse form que está dando problema, é executada alguma operação no banco? algo do tipo inserção, exclusão ou alteração?
Tente fazer o seguinte, se sua ADOquery estiver aberta, tente fechar e abri-la novamente, antes de abrir esse forma, talvez resolva. Mais uma dúvida, o erro é nesse formulário, ou na tabela usada no formulário (tipo, se essa tabela é usada em outros módulos e dá problema)?

Realmente é estranho, pois tenho um sistema assim, com os atalhos e tal... o problema que tive foi com o MDAC que tive que atualizar (porque na máquina cliente tava com Windows95, e dava um erro). Isso resolveu.
Também teve um caso (de uma máquina em especial) que tive que instalar o office, para que o sistema funcionasse (apenas instalei e removi e o sistema começou a funcionar normalmente).


Responder

Gostei + 0

26/09/2005

Tnaires

O form funciona assim: eu tenho uma tabela de movimentos ( TbMovimentos ) e uma tabela de itens desse movimento ( TbItens ). Não existe nenhum relacionamento entre essas tabelas no Access, e tb não há relação entre os dois DataSets no Delphi. Eu só gravo o código do movimento nos itens q o usuário insere ( o código é gerado manualmente ).
Qdo eu abro o form, eu inicio uma transação no ADOConnection ( BeginTrans ), dou um insert na query de movimentos, e só abro a query d itens. O usuário insere ou remove itens através d um DBNavigator. Se o usuário clicar no botão ´Gravar´ do formulário, após todas as alterações, eu dou um Commit; caso ele clique no botão ´Cancelar´ do form, eu dou um Rollback.
O erro acontece assim: suponha q este formulário esteja aberto nos computadores A e B. O usuário de A insere um novo item, e o grava. O usuário d B insere um novo item. Qdo este usuário vai gravar, aparece a mensagem de erro.
Obrigado pela sua paciência, e abraços.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar