Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Ajuda para perceber erro ao gravar na base de dados

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
pedro_mexico
Consultor
Consultor
Mensagens: 285
Registrado em: Qua Dez 09, 2015 5:54 pm

Ajuda para perceber erro ao gravar na base de dados

Mensagem por pedro_mexico »

Boa noite forum,
estou com por os cabelo, como se diz em Portugal,
estava a avançar com o meu formulario com banco de dados, mas sempre que dou uma psso em frente, logo a seguir paro sem saber como resolver, levando á loucura.
coloquei este codigo para fazer gravaçao dos dados do formulario na base de dados, mas está a dar o erro da imagem, como estou a iniciar no excel vba com access, e mesmo o conhecimento de excel vba é pouco, fica dificil dar um passo em frente pois nao sei o que esta a ocorrer de errado no codigo,
alguem consegue dar uma dica/ajuda.

Obrigado

Código: Selecionar todos

Sub Gravar_Registar()

Dim cx As New ClasseConexao
Dim Banco As ADODB.Recordset
Dim SQL As String


SQL = "INSERT INTO Registo_Saidas(Nº, Condutor, Posto, Dia, Hora, Viatura, Destino, Observaçoes)"
           SQL = SQL & " VALUES ("

           SQL = SQL & " '" & UserForm_Menu.Textbox_N.Value & "'"
           SQL = SQL & " '" & UserForm_Menu.ComboBox_Condutor.Value & "'"
           SQL = SQL & " '" & UserForm_Menu.ComboBox_Posto.Value & "'"
           SQL = SQL & " '" & UserForm_Menu.TextBox_Dia.Value & "'"
           SQL = SQL & " '" & UserForm_Menu.TextBox_Hora.Value & "'"
           SQL = SQL & " '" & UserForm_Menu.ComboBox_Viaturas.Value & "'"
           SQL = SQL & " '" & UserForm_Menu.ComboBox_Destino.Value & "'"
           SQL = SQL & " '" & UserForm_Menu.TextBox_Observacoes.Value & "'"
           SQL = SQL & " )"

Set Banco = New ADODB.Recordset
cx.ConectarBd
Banco.Open SQL, cx.Conn

Set Banco = Nothing
cx.DesconectarBd
                                 
End Sub
os codigo que tenho para conexao da base de dados esta numa Class Module com os seguintes codigos:

Código: Selecionar todos

Public Conn As New ADODB.Connection
Public Bd As New ADODB.Recordset

Public Sub ConectarBd()

    Dim nConectar As String
    'Endereço e nome do banco de dados
    nConectar = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\Base_dados.mdb"
    Conn.ConnectionString = nConectar
    Conn.Open
    
End Sub

Public Sub DesconectarBd()
    
    'Desconectar
    Conn.Close
    
End Sub
Anexos
Erro ao gravar.jpg
Erro ao gravar.jpg (61.57 KiB) Exibido 2033 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Ajuda para perceber erro ao gravar na base de dados

Mensagem por Reinaldo »

Dificil avaliar pela postagem/foto; mas provavelmente a falta do separador de campos (virgula entre um campo e outro) na montagem da clausula Inset Into;talvez algo +/- assim:

Código: Selecionar todos

Sub Gravar_Registar()
Dim cx As New ClasseConexao
Dim Banco As ADODB.Recordset
Dim SQL As String

SQL = "INSERT INTO Registo_Saidas(Nº, Condutor, Posto, Dia, Hora, Viatura, Destino, Observaçoes)"
           SQL = SQL & " VALUES ("
           SQL = SQL & " '" & UserForm_Menu.Textbox_N.Value & "',"
           SQL = SQL & " '" & UserForm_Menu.ComboBox_Condutor.Value & "',"
           SQL = SQL & " '" & UserForm_Menu.ComboBox_Posto.Value & "',"
           SQL = SQL & " '" & UserForm_Menu.TextBox_Dia.Value & "',"
           SQL = SQL & " '" & UserForm_Menu.TextBox_Hora.Value & "',"
           SQL = SQL & " '" & UserForm_Menu.ComboBox_Viaturas.Value & "',"
           SQL = SQL & " '" & UserForm_Menu.ComboBox_Destino.Value & "',"
           SQL = SQL & " '" & UserForm_Menu.TextBox_Observacoes.Value & "',"
           SQL = SQL & " );"

Set Banco = New ADODB.Recordset
cx.ConectarBd
Banco.Open SQL, cx.Conn

Set Banco = Nothing
cx.DesconectarBd
                                 
End Sub
Editado pela última vez por Reinaldo em Seg Abr 19, 2021 8:44 am, em um total de 1 vez.


pedro_mexico
Consultor
Consultor
Mensagens: 285
Registrado em: Qua Dez 09, 2015 5:54 pm

Re: Ajuda para perceber erro ao gravar na base de dados

Mensagem por pedro_mexico »

Boa tarde Reinaldo,

coloquei o codigo como indicou, e da erro de sintaxe (INSERT INTO),
ja nao sei o que fazer, estava a tomar o gosto por cconectar o meu formulario a um banco de dados, mas estou a ver que é bastante mais dificil do que parece por os videos que vejo, ha sempre alguma coisa a dar erro


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Ajuda para perceber erro ao gravar na base de dados

Mensagem por Reinaldo »

Não considero "mais Difcil",mas sim diferente, devido o uso básico de sql;é preciso se acostumar.
Com um exemplo,que seja significativo de seu projeto, ficará muito mais fácil e simples obter um retorno que atenda


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


pedro_mexico
Consultor
Consultor
Mensagens: 285
Registrado em: Qua Dez 09, 2015 5:54 pm

Re: Ajuda para perceber erro ao gravar na base de dados

Mensagem por pedro_mexico »

Boa noite amigo Reinaldo,
Ao inicio achei os codigos um pouco mais faceis,ou de melhor compreensão do que excel vba(nas planilhas), mas depois com tantos erros, fico mesmo perdido.

Consegui resolver o erro que tinha, na sua ajuda, voce colocou :

Código: Selecionar todos

SQL = SQL & " '" & UserForm_Menu.Textbox_N.Value & "',"
assim continuava a dar erro, voce colocou a "," no final, estive á procura de ajuda na net e alguem colocou ess ", no inicio

Código: Selecionar todos

SQL = SQL & " ,'" & UserForm_Menu.Textbox_N.Value & "' "
e aqui resolveu o erro.

o que acho e digo que é complicado, é que copio o código para outra parte do formulário e ele volta a dar erro, da maneira que anteriormente ja nao me dava erro e dá erro trocando por a sua ajuda.
códigos iguais, um dá erro outro nao.
ate já pensei ser a origem do erro, no segundo codigo, as colunas da tabela que recebia os dados nao estarem seguidas, por isso coloquei as colunas seguidas, mas mesmo assim continua a dar erro .
deixe eu ter mais um pouco de tempo para lhe enviar o projecto um pouco mais semples com menos dados de registo.
Obrigado


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder