Notifications
Clear all

Erro 429

5 Posts
2 Usuários
0 Reactions
2,080 Visualizações
(@lucascad)
Posts: 0
New Member
Topic starter
 

Boa noite pessoal, estou precisando da ajuda de voces. Estou desenvolvendo um tipo de sistema para gestão de academias mas poderá ser utilizada em vários negócios. Estou utilizando um banco de dados Access 2016 e o VBA do Excel 2016 no Win 10. Os códigos estão distribuídos assim: Em um módulo estão as rotinas para abrir e fechar o BD e as planilhas e nos forms as instruções e os tratamentos de erro. Primeiramente eu não estava conseguindo ativar a referencia DAO360, depois de muito pesquisar descobri uma maneira e consegui ativar mas agora quando tento acessar o BD, o sistema apresenta a seguinte msg: Erro em tempo de execução '429'O O componente Activex não pode criar o objeto e na depuração marca a conexão com o BD:
Sub conecta()
Set banco = OpenDatabase("C:Users.....Cadastro_Cliente.mdb").
Alguem tem alguma dica para resolver esse problema????

 
Postado : 19/03/2018 5:48 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Tambem em https://gurudoexcel.com/forum/viewtopic.php?f=12&t=6486&p=31197#p31197
Assim e um tanto quanto dificil diagnosticar.
Voce diz ser access 2016, porem vai acessar uma tabela do 2003 (.mdb)
Não mosta em sua conexão qual o motor jet utilizado. No link abaixo um exenplo de conexção com access
https://social.msdn.microsoft.com/Forums/pt-BR/92dfbf0a-e44e-43f6-ba58-f94076fe8916/conexo-formulrio-excel-vba-com-access?forum=vbapt

no link abaixo um brief sobre esse erro:
https://msdn.microsoft.com/pt-br/library/aa231060(v=vs.60).aspx
e
https://support.microsoft.com/pt-br/help/828550/you-receive-run-time-error-429-when-you-automate-office-applications

 
Postado : 20/03/2018 8:15 am
(@lucascad)
Posts: 0
New Member
Topic starter
 

Bom dia Reinaldo. Desculpe a minha ignorancia mas conheço muito pouco de VBA, praticamente nada mas sou curioso e gosto de aventurar-me e pesquisar bastante. Já li bastante material mais ainda não cheguei a nenhuma solução.
Utilizo o Win 10 e o Office 2016. Comecei a fazer um cadastro pequeno como teste, se desse certo eu daria continuidade. Usei o BD .mdb pq em diversas publicações indicam esse tipo de banco para poder rodar em sistemas mais antigos mas o erro ocorre com os dois formatos de banco como pode ser visto nos códigos. Esses foram os códigos que usei:

Módulo 1

Option Explicit
Global banco As Database
Global consulta As Recordset

Sub conecta()
    'Set banco = OpenDatabase("C:UsersLucasDesktopConcurso STJCadastro_Cliente.mdb")
    Set banco = OpenDatabase("C:UsersLucasDesktopConcurso STJBancoCadastro.accdb")

'Estou usando os dois banco por causa de sistema diferentes tipo Win 10 e Win XP
End Sub
Sub desconecta()
    Set banco = Nothing
    Set consulta = Nothing
End Sub

[b]Formulario[/b]

Private Sub btnSair_Click()
Unload Me
End Sub

Private Sub btnSalvar_Click()
    Dim ComandoSQL As String
    Dim ID As Integer
     
    ID = txtMatricula
    
    ComandoSQL = "select * from tabela_cliente.accdb"
    
    Call conecta
    
    Set consulta = banco.OpenRecordset(ComandoSQL)
    
    With consulta
        .AddNew
     .Fields("Matrícula") = ID
     .Fields("Nome") = Me.txtNome
     .Fields("Endereço") = Me.txtEndereco
     .Fields("CPF") = Me.txtCPF
         On Error GoTo Sai:
         
    Update
    End With
    
    consulta.Close
    banco.Close
    
    Call desconecta
    
    Call Limpar_campos
    
End Sub

Private Sub txtMatricula_AfterUpdate()
'Cria a variavel que armazena os comandos SQL
    Dim ComandoSQL As String
    Dim ID As Integer
    
        ID = txtMatricula
    
    'Armazena na variavel o comando que fará a consulta SQL no BD Access
    ComandoSQL = "select * from  Matrícula where Tabela_Cliente like '" & ID & "' "
    
    'Chama a rotina que faz a conexão com o BD
    Call conecta
    
    'Atribui a variavel objeto de BD a execução dos comandos SQL
    Set consulta = banco.OpenRecordset(ComandoSQL)
    
        On Error GoTo Sai
    
    Me.txtMatricula = consulta("Matricula")
    Me.txtNome = consulta("Nome")
    Me.txtEndereco = consulta("Endereço")
    Me.txtCPF = consulta("CPF")
    
    'Habilita os botãoes
    Me.btnEditar = True
    Me.btnExcluir = True
    
    'Desbilita o botão salvar
    Me.btnSalvar = False
Exit Sub

Sai: 'O comando será desviado para cá caso haja erro de acesso aos dados

    Dim resposta As String
    resposta = MsgBox("Código não encontrado. Deseja Cadastrar?", vbYesNo)
    
    If resposta = vbYes Then
        Call Limpar_campos
        Me.txtMatricula = ID
        
        Me.btnSalvar.Enabled = True
        
    Else
    
        Call Limpar_campos
        
        Call desconecta
    
    End If
End Sub
Sub Limpar_campos()
    Me.txtMatricula = Empty
    Me.txtNome = Empty
    Me.txtEndereco = Empty
    Me.txtCPF = Empty
End Sub

Quando tento gravar apresenta ERRO 429 e na depuração marca essa linha: Set banco = OpenDatabase("C:UsersLucasDesktopConcurso STJBancoCadastro.accdb"), independente do BD que estiver usando.
Vc teria uma dica?????

PS. Tanto o BD como a pasta do Excel estão salvas na mesma pasta

 
Postado : 21/03/2018 4:50 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Somente pelas rotinas fica um tanto quanto dificil.
Veja se no anexo lhe oriente/auxilia

 
Postado : 21/03/2018 7:54 am
(@lucascad)
Posts: 0
New Member
Topic starter
 

Boa noite Reinaldo. Obrigado ela ajuda mas seu código aqui não funcionou. Quando abre ele já dá um aviso que falta Objeto e no Form Initialize, vem a msg que"Erro de Compilação. Tipos incompatíveis" e marca a linha "Indice = banco.AbsolutePosition" mais precisamente: banco.AbsolutePosition. Acredito que todas as bibliotecas de referencia estão ativadas. O que poderia ser????

 
Postado : 22/03/2018 8:41 pm