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