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