ERRO AO DAR UPDATE NO BANCO ACCESS
é o seguinte:
Tenho um banco de dados em ACCESS que é utilizado em rede e que recebe atualizações constantes. Acontece que quando uso
'MEUBANCO.EXECUTE instrucaoSql' e dentro dessa ionstrução sql está sendo feito um update no banco, dá o seguinte erro: "Não foi possÃvel atualizar; atualmente bloqueado". Percebi que isso está acontecendo quando mais de uma máquina está usando esse comando, mesmo quando o updade é em tabelas diferentes.
Alguém sabe me dizer porque isso está acontecendo e como resolver esse problema?
Tenho um banco de dados em ACCESS que é utilizado em rede e que recebe atualizações constantes. Acontece que quando uso
'MEUBANCO.EXECUTE instrucaoSql' e dentro dessa ionstrução sql está sendo feito um update no banco, dá o seguinte erro: "Não foi possÃvel atualizar; atualmente bloqueado". Percebi que isso está acontecendo quando mais de uma máquina está usando esse comando, mesmo quando o updade é em tabelas diferentes.
Alguém sabe me dizer porque isso está acontecendo e como resolver esse problema?
Poste a instrução para vermos? Esta usando ADO ou DAO, qual tipo de bloqueio esta usando?
Informei errado o comando.
Abro a tabela da seguinte maneira:
StrBusca = "SELECT * From TABELA"
Set Tb = New ADODB.Recordset
With Tb
.ActiveConnection = Bancodados
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.Open StrBusca
End With
após inserir o registro dou o comando:
Tb.Update. é nessa linha que dá o erro.
E o outro comando é o seguinte;
While Not Tboutra.EOF
StrBusca = "INSERT INTO OUTRATABLE (CAMPO) SELECT campo1 FROM TABELA10"
BancoDados.Execute StrBusca 'Aqui também dá o erro.
TbOutra.MoveNext
Wend
Abro a tabela da seguinte maneira:
StrBusca = "SELECT * From TABELA"
Set Tb = New ADODB.Recordset
With Tb
.ActiveConnection = Bancodados
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.Open StrBusca
End With
após inserir o registro dou o comando:
Tb.Update. é nessa linha que dá o erro.
E o outro comando é o seguinte;
While Not Tboutra.EOF
StrBusca = "INSERT INTO OUTRATABLE (CAMPO) SELECT campo1 FROM TABELA10"
BancoDados.Execute StrBusca 'Aqui também dá o erro.
TbOutra.MoveNext
Wend
Colega, tente usar sempre o objeto connection pra executar as transações e eu recomendo que use o BeginTrans e o CommitTrans para evitar problemas:
BancoDado.BeginTrans
While Not Tboutra.EOF
StrBusca = "INSERT INTO OUTRATABLE (CAMPO) SELECT campo1 FROM TABELA10"
BancoDados.Execute StrBusca 'Aqui também dá o erro.
TbOutra.MoveNext
Wend
BancoDados.CommitTrans
Vou testar e posto novamente.
Esse objeto connection eu uso quando for abrir a tabela?
E a� Mais alguma idéia?
Verifique se em alguma maquina, o banco de dados não está aberto em modo estrutura.
Cara, é aconselhável, que ao invés de usar o Tb.Update, vc use as instruções SQL para o Update, tipo:
é isso, tente aà e volte a postar...flw
StrSQL = "UPDATE TABLE " & _
"SET CAMPO1 = '" & txtValor1 & "', " & _
" CAMPO2 = '" & txtValor2 & "' " & _
"WHERE CODIGO = '" & txtCodigo & "'"
Bancodados.BeginTrans
Bancodados.Execute StrSQL
Bancodados.CommitTrans
é isso, tente aà e volte a postar...flw
Se eu tiver que usar várias vezes o 'Bancodados.Execute StrSQL' a cada vez tenho que usar 'Bancodados.BeginTrans' e Bancodados.CommitTrans
Seria isso mesmo amigo.
Tópico encerrado , respostas não são mais permitidas