MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Mensagem de Erro 3211

    Compartilhe
    avatar
    asimoes
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 30/04/2013

    [Resolvido]Mensagem de Erro 3211

    Mensagem  asimoes em Ter 02 Dez 2014, 13:59

    Ola Pessoal!
    Alguém sabe porque está gerando a mensagem abaixo ao tentar excluir uma tabela criada via CREATE TABLE?

    "O mecanismo de banco de dados não pôde bloquear a tabela porque ela já está sendo usada por outra pessoa ou processo. (Erro 3211)"

    Eu vi vários Post sobre o assunto já testei de todas as formas, mas esse msg ñ sai.


    Abaixo estou colocando os códigos para criar tabela e dos eventos em um form


    Cria a tabela desta forma:
    Código:
       StrTabela = StrEntradaPlan
       strPlan = Replace(StrTabela, " ", "")

       ' Cria Tabela conforme planejador
       CurrentDb.Execute "CREATE TABLE [" & strPlan & "]" _
       & "(Ordem TEXT, Item TEXT, Qtde INTEGER, Tipo TEXT, Linha TEXT, [Tipo Reporte] TEXT, Alocada TEXT, Cliente TEXT, [Grupo     Cliente] TEXT, [Pedido Cliente] TEXT, Sequência TEXT, Narrativa TEXT, Inicio TEXT, Termino TEXT, Dep TEXT, Plan TEXT, Entrega TEXT, Abrir YESNO);"

       'Cria propriedades "Abrir" da tabela
       Set db = CurrentDb
       Set tdf = db.TableDefs(strPlan)
       Set fld = tdf.Fields("Abrir")
       Set prp = fld.CreateProperty("DisplayControl", dbInteger, acCheckBox)
       fld.Properties.Append prp

    Eventos do form (Declaração):
    Código:
    Option Compare Database
    Option Explicit
    Dim BConfirmacaoAnali As Byte

    Eventos do form (Form_Load):
    Código:
       Me.Caption = strPlan
       Me.RecordSource = "SELECT * FROM " & strPlan & ";"

    Eventos do form (Unload):
    Código:
       BConfirmacaoAnali = MsgBox(Prompt:="Se você clicar em SIM, estará finalizando a Análise Semana " & StrEntradaSemana & " e será gerado o arquivo .XML.", Buttons:=vbYesNo + vbInformation, Title:="Finalizar Analise Semana " & StrEntradaSemana & "?")
       If BConfirmacaoAnali = 7 Then
          DoCmd.CancelEvent
       End If
       CurrentDb.Execute "INSERT INTO HistoricoGeradorOrdem ( Ordem, Item, Qtde, Tipo, Linha, [Tipo Reporte], Alocada, Cliente, [Grupo  Cliente], [Pedido Cliente], Sequência, Narrativa, Inicio, Termino, Dep, Plan, Entrega, Abrir ) SELECT [" & strPlan & "].[Ordem], [" & strPlan & "].[Item], [" & strPlan & "].[Qtde], [" & strPlan & "].[Tipo], [" & strPlan & "].[Linha], [" & strPlan & "].[Tipo Reporte], [" & strPlan & "].[Alocada], [" & strPlan & "].[Cliente], [" & strPlan & "].[Grupo Cliente], [" & strPlan & "].[Pedido Cliente], [" & strPlan & "].[Sequência], [" & strPlan & "].[Narrativa], [" & strPlan & "].[Inicio], [" & strPlan & "].[Termino], [" & strPlan & "].[Dep], [" & strPlan & "].[Plan], [" & strPlan & "].[Entrega], [" & strPlan & "].[Abrir] FROM [" & strPlan & "]"
       ExportaParaXls

    Eventos do form (Close):
    Código:
       Me.RecordSource = ""
       Me.Caption = ""

    Existem outros eventos, mas esses é q estão relacionados com o erro!

    Desde já agradeço a ajuda!


    .................................................................................
    Não tenho medo de compartilhar conhecimento.
    Essa é a unica coisa que as pessoas não poderão roubar de mim, pois ninguém nunca sabe igual, mesmo que saiba a mesma coisa.
    avatar
    LiveBrain
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 182
    Registrado : 15/05/2011

    Re: [Resolvido]Mensagem de Erro 3211

    Mensagem  LiveBrain em Ter 02 Dez 2014, 16:18

    Aonde você passa o valor para a variável strPlan na função Load do seu form?


    .................................................................................
    Abraços

    Live Brain Tutoriais

    "Fraca é a pessoa que não conhece a força que possui nos amigos"
    avatar
    asimoes
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 30/04/2013

    Re: [Resolvido]Mensagem de Erro 3211

    Mensagem  asimoes em Ter 02 Dez 2014, 16:22

    strPlan é uma variável publica de outro modulo recebida por um inputbox!


    .................................................................................
    Não tenho medo de compartilhar conhecimento.
    Essa é a unica coisa que as pessoas não poderão roubar de mim, pois ninguém nunca sabe igual, mesmo que saiba a mesma coisa.
    avatar
    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3383
    Registrado : 04/04/2010

    Re: [Resolvido]Mensagem de Erro 3211

    Mensagem  Avelino Sampaio em Ter 02 Dez 2014, 16:37

    Olá!

    Creio que a exclusão da tabela só possa acontecer depois de desconectar o RecordSource. Algo assim:

    Me.RecordSource = ""
    currentdb.execute "Drop Table NomedaTabela;"

    Aguardamos
    avatar
    asimoes
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 30/04/2013

    Re: [Resolvido]Mensagem de Erro 3211

    Mensagem  asimoes em Ter 02 Dez 2014, 17:46

    Então Avelino, no código q coloquei acima, coloco no evento close do form os cod abaixo:

    Código:
       Me.RecordSource = ""
       Me.Caption = ""

    e mesmo assim ñ deu!


    .................................................................................
    Não tenho medo de compartilhar conhecimento.
    Essa é a unica coisa que as pessoas não poderão roubar de mim, pois ninguém nunca sabe igual, mesmo que saiba a mesma coisa.
    avatar
    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3383
    Registrado : 04/04/2010

    Re: [Resolvido]Mensagem de Erro 3211

    Mensagem  Avelino Sampaio em Ter 02 Dez 2014, 18:09

    Não deu porque ele deve estar atuando depois do DROP. Coloque pontos de interrupção em cada linha dos eventos e veja quem tá na frente de quem na execução.

    Aguardamos

    avatar
    asimoes
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 30/04/2013

    Re: [Resolvido]Mensagem de Erro 3211

    Mensagem  asimoes em Ter 02 Dez 2014, 23:46

    O estranho q o Drop é o ultimo comando a ser executado! mesmo colocando logo pós desconectar do recordset o erro permanece!

    Código:
       Me.RecordSource = ""
       Me.Caption = ""
       CurrentDb.Execute "Drop Table " & strPlan & ";"


    .................................................................................
    Não tenho medo de compartilhar conhecimento.
    Essa é a unica coisa que as pessoas não poderão roubar de mim, pois ninguém nunca sabe igual, mesmo que saiba a mesma coisa.
    avatar
    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3383
    Registrado : 04/04/2010

    Re: [Resolvido]Mensagem de Erro 3211

    Mensagem  Avelino Sampaio em Qua 03 Dez 2014, 08:28

    Você está limpando as variáveis que se utilizam da tabela ? Exemplo:

    Set tdf = nothing
    avatar
    asimoes
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 30/04/2013

    Re: [Resolvido]Mensagem de Erro 3211

    Mensagem  asimoes em Qua 03 Dez 2014, 11:14

    Ola Avelino!

    Sim limpei todas as variáveis e nada! Continua o erro! Já revi tudo e quanto mais procuro na internet mais pessoas com o mesmo problema eu acho, os que tiveram solução são os que estavam utilizando o arquivo em rede com problemas de compartilhamento, restrição de segurança, mais no meu caso está no C: da máquina, pois ainda estou desenvolvendo!


    Código:
       db.Close
       Set db = Nothing
       Set tdf = Nothing
       Set fld = Nothing
       Set prp = Nothing


    .................................................................................
    Não tenho medo de compartilhar conhecimento.
    Essa é a unica coisa que as pessoas não poderão roubar de mim, pois ninguém nunca sabe igual, mesmo que saiba a mesma coisa.
    avatar
    asimoes
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 30/04/2013

    Re: [Resolvido]Mensagem de Erro 3211

    Mensagem  asimoes em Qua 03 Dez 2014, 11:38

    Avelino, pensando no que vc disse sobre limpar as variáveis comecei a ler o meu código linha por linha e focando em fechar aberturas e esvaziar variáveis, nisso encontrei o problema!

    Acontece que eu me conecto a um outro BD com o comando
    Código:
    Set dbs = OpenDatabase("c:\caio\NECESSIDADE ITENS.accdb")

    e apos me conectar fazer os eventos que precisava fazer no BD conectado eu apelas o fechava com
    Código:
    dbs.Close
    mas eu não estava esvaziando a variável dbs! então coloquei o comando
    Código:
    Set dbs = Nothing
    logo acima do comando Close e "Vu alá"!

    Fica a dica pra quem passar pelo mesmo problema!

    Muito Obrigado


    .................................................................................
    Não tenho medo de compartilhar conhecimento.
    Essa é a unica coisa que as pessoas não poderão roubar de mim, pois ninguém nunca sabe igual, mesmo que saiba a mesma coisa.

      Data/hora atual: Dom 25 Jun 2017, 09:34