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

Erro de sintaxe na instrução INSERT INTO

Discussões sobre a integração do Excel com o Banco de Dados Access

Moderador: joseA

Alexalbino
Acabou de chegar
Acabou de chegar
Mensagens: 2
Registrado em: Qua Out 17, 2018 3:19 pm

Erro de sintaxe na instrução INSERT INTO

Mensagem por Alexalbino »

Bom dia amigos!

Estou com um erro na instrução insert into, no qual não consigo identificar, ja fiz outras vezes o mesmo metodo porem neste caso está apresentando este erro.

Alguem consegue me ajudar?

Codigo.
--------------------------------------------
Private Sub cmDcadastrarUSUARIO_Click()
If Me.TXTUSUARIO = "" Then
MsgBox "Preencha o campo usuario!!!", vbCritical, "Cadastro de usuario"
Me.TXTUSUARIO.SetFocus
Exit Sub
End If

If Me.TXTLOCAL = "" Then
MsgBox "Preencha o campo local!!!", vbCritical, "Cadastro de usuario"
Me.TXTLOCAL.SetFocus
Exit Sub
End If

If Me.TXTDEPARTMENTO = "" Then
MsgBox "Preencha o campo departamento!!!", vbCritical, "Cadastro de usuario"
Me.TXTDEPARTMENTO.SetFocus
Exit Sub
End If

conectar

Sql = "insert into clientes (usuario, " _
& " local, departamento)" _
& " values ('" & Me.TXTUSUARIO _
& "','" & Me.TXTLOCAL & "','" & Me.TXTDEPARTMENTO & "')"
cn.Execute Sql

MsgBox "Usuario cadastrado com sucesso!!", vbInformation, empresa

End Sub

--------------------- Modulo conectar
Sub conectar()

Set cn = New ADODB.Connection

With cn
.Provider = "microsoft.ace.oledb.12.0"
.ConnectionString = "C:\Users\AlexA\OneDrive\Área de Trabalho\ATIVOS TI" & "\BASE_TI.accdb"
'.ConnectionString = ThisWorkbook.Path & "\Sistema_Basico_de_Vendas.accdb"
.Open
End With

End Sub

Sub desconectar()
cn.Close
Set cn = Nothing
End Sub

-------------------------------------------------

Arquivo em anexo..

Agradeço desde já.

Atenciosamente
Anexos
ATIVOS TI.rar
(263.42 KiB) Baixado 590 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: Erro de sintaxe na instrução INSERT INTO

Mensagem por Reinaldo »

Me parece que o Campo nome "Local" está gerando algum conflito.
Experimente assim:

Código: Selecionar todos

Sql = "INSERT INTO clientes ( [usuario],  [local], [departamento])"
Sql = Sql & " VALUES ("
Sql = Sql & " '" & Me.TXTUSUARIO.Text & "'"
Sql = Sql & ", '" & Me.TXTLOCAL.Text & "'"
Sql = Sql & ", '" & Me.TXTDEPARTMENTO.Text & "'"
Sql = Sql & " )"


Alexalbino
Acabou de chegar
Acabou de chegar
Mensagens: 2
Registrado em: Qua Out 17, 2018 3:19 pm

Re: Erro de sintaxe na instrução INSERT INTO

Mensagem por Alexalbino »

Reinaldo, Boa noite!

Perfeito, inserir os colchetes nos nomes da coluna e a instruções funcionou perfeitamente.

Muito obrigado, nunca havia utilizado os colchetes.

Muito obrigado mesmo.


anielise
Colaborador
Colaborador
Mensagens: 23
Registrado em: Qua Jun 26, 2019 5:56 pm

Re: Erro de sintaxe na instrução INSERT INTO

Mensagem por anielise »

oi boa noite pessoas inteligentes. eu estou com dificuldade desse excel com access.

estou com problema em gravar dados do formulário do excel com acess. tentei dois códigos e ambos deram errados.

código para conectar banco

Option Explicit
Public conexao As New ADODB.Connection
Public rs As New ADODB.Recordset
Sub conecta()
Set conexao = New ADODB.Connection
With conexao
.Provider = "Microsoft.ACE.OLEDB.16.0"
.ConnectionString = "Data Source=" & ThisWorkbook.Path & "\cadastros.accdb"
.Open
End With
End Sub
Sub desconecta()
Set rs = Nothing
Set conexao = Nothing
End Sub

Código para salvar primeira tentativa

Sub salvar_empresa()
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.EnableEvents = False

cx.conecta

sql = "INSERT INTO cadastro_empresa( [id],[razaosocial],[nomereduzido],[cnpj], [cnae], [endereco], [cidade], [telefone], [email], [nomeresponsavel], [departamentoRH], [Vinculo], [DatadeContrato], [periodico], [formadepagamento], [emailfinanceiro], [telefonefinanceiro], [observacao], [valorporfuncionario], [mensalidade], [situacao])"
sql = sql & " VALUES ("
sql = sql & "'" & F_2.cod2.Value & "'"
sql = sql & ",'" & F_2.box1.Value & "'"
sql = sql & ",'" & F_2.box2.Value & "'"
sql = sql & ",'" & F_2.box3.Value & "'"
sql = sql & ",'" & F_2.box4.Value & "'"
sql = sql & ",'" & F_2.box5.Value & "'"
sql = sql & ",'" & F_2.box6.Value & "'"
sql = sql & ",'" & F_2.box7.Value & "'"
sql = sql & ",'" & F_2.box8.Value & "'"
sql = sql & ",'" & F_2.box9.Value & "'"
sql = sql & ",'" & F_2.box10.Value & "'"
sql = sql & ",'" & F_2.box11.Value & "'"
sql = sql & ",'" & F_2.box12.Value & "'"
sql = sql & ",'" & F_2.box13.Value & "'"
sql = sql & ",'" & F_2.box14.Value & "'"
sql = sql & ",,'" & F_2.box15.Value & "'"
sql = sql & "'" & F_2.box16.Value & "'"
sql = sql & ",'" & F_2.box17.Value & "'"
sql = sql & ",'" & F_2.box18.Value & "'"
sql = sql & ",'" & F_2.box19.Value & "'"
sql = sql & ",'" & F_2.box20.Value & "'"
sql = sql & " )"

'define a conexão e abre o Recordset com os dados da tabela Clientes

Set rs = New ADODB.Recordset

With rs
.CursorType = adOpenKeyset
.CursorLocation = adUseClient
.Source = sql
.ActiveConnection = cx.conexao
.Open dando erro aqui
End With
'desconectar tabela e banco de dados
Set rs = Nothing
cx.desconecta
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

Código para salvar segunda tentativa

Sub salvar_empresa1()
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.EnableEvents = False


'define a conexão e abre o Recordset com os dados da tabela Clientes
sql = "SELECT * FROM cadastro_empresa"
cx.conecta
Set rs = New ADODB.Recordset
With rs
.CursorType = adOpenKeyset
.CursorLocation = adUseClient
.Source = sql
.ActiveConnection = cx.conexao
.Open
.AddNew dando erro aqui

rs(0) = F_2.cod2.Value
rs(1) = F_2.box1.Value
rs(2) = F_2.box2.Value
rs(3) = F_2.box3.Value
rs(4) = F_2.box4.Value
rs(5) = F_2.box5.Value
rs(6) = F_2.box6.Value
rs(7) = F_2.box7.Value
rs(8) = F_2.box8.Value
rs(9) = F_2.box9.Value
rs(10) = F_2.box10.Value
rs(11) = F_2.box11.Value
rs(12) = F_2.box12.Value
rs(13) = F_2.box13.Value
rs(14) = F_2.box14.Value
rs(15) = F_2.box15.Value
rs(16) = F_2.box16.Value
rs(17) = F_2.box17.Value
rs(18) = F_2.box18.Value
rs(19) = F_2.box19.Value
rs(20) = F_2.box20.Value
.Update
.Close
End With
'Efetiva a atualização do BD

conexao.Close


'desconectar tabela e banco de dados
Set rs = Nothing
cx.desconecta

Application.Calculation = xlCalculationManual
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Anexos
SaudeTRAB.zip
(567.79 KiB) Baixado 544 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: Erro de sintaxe na instrução INSERT INTO

Mensagem por Reinaldo »

Algumas considerações:
Preferencialmente evite nomear campos com caracteres acentuados, lembrando que a base do vba/access e a lingua inglesa, onde esses caracteres não são utilizados e podem; eventualmente; causar conflito/erros
Na inserção/alteração de dados,os novos valores devem; OBRIGATORIAMENTE; seguir a definição de tipo da tabela; ou seja se o campo estiver definido como numérico, somente números são aceitos.
Com essas premissas alterei em sua Tabela:
Campo: De: Para:
RazãoSocial Memorando Texto
CNPJ Numérico Texto
Endereço Numérico Texto
Após alterar os tipos conforme acima; experimente com a rotina:

Código: Selecionar todos

Sub salvar_empresa()
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.EnableEvents = False
    sql = "INSERT INTO cadastro_empresa( Identificação,RazãoSocial,Nomereduzido,CNPJ,CódigoCNAE,Endereço,CidadeUF,telefone,"
    sql = sql & "email,nomeresponsavel,departamentoRH,Vinculo,DatadeContrato,períódico,formadepagamento,emailfinanceiro,telefonefinanceiro,"
    sql = sql & "observação,valorporfuncionário,mensalidade,situação)"
    sql = sql & " VALUES ("
    sql = sql & "'" & F_2.cod2.Value & "',"
    sql = sql & "'" & F_2.box1.Value & "',"
    sql = sql & "'" & F_2.box2.Value & "',"
    sql = sql & "'" & F_2.box3.Value & "',"
    sql = sql & "'" & F_2.box4.Value & "',"
    sql = sql & "'" & F_2.box5.Value & "',"
    sql = sql & "'" & F_2.box6.Value & "',"
    sql = sql & "'" & F_2.box7.Value & "',"
    sql = sql & "'" & F_2.box8.Value & "',"
    sql = sql & "'" & F_2.box9.Value & "',"
    sql = sql & "'" & F_2.box10.Value & "',"
    sql = sql & "'" & F_2.box11.Value & "',"
    sql = sql & "'" & F_2.box12.Value & "',"
    sql = sql & "'" & F_2.box13.Value & "',"
    sql = sql & "'" & F_2.box14.Value & "',"
    sql = sql & "'" & F_2.box15.Value & "',"
    sql = sql & "'" & F_2.box16.Value & "',"
    sql = sql & "'" & F_2.box17.Value & "',"
    sql = sql & "'" & F_2.box18.Value & "',"
    sql = sql & "'" & F_2.box19.Value & "',"
    sql = sql & "'" & F_2.box20.Value & "'"
    sql = sql & ")"
    
    'define a conexão e abre o Recordset com os dados da tabela Clientes
    
   'Set rs = New ADODB.Recordset
    cx.conecta
With rs
    .CursorType = adOpenKeyset
    .CursorLocation = adUseClient
    .Source = sql
    .ActiveConnection = cx.conexao
    .Open
End With
'desconectar tabela e banco de dados
Set rs = Nothing
cx.desconecta
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Anexos
SaudeTRAB_Alt.zip
(574.59 KiB) Baixado 550 vezes
Editado pela última vez por Reinaldo em Qui Jul 04, 2019 8:46 am, em um total de 1 vez.


anielise
Colaborador
Colaborador
Mensagens: 23
Registrado em: Qua Jun 26, 2019 5:56 pm

Re: Erro de sintaxe na instrução INSERT INTO

Mensagem por anielise »

Reinaldo escreveu: Ter Jul 02, 2019 11:09 am Algumas considerações:
Preferencialmente evite nomear campos com caracteres acentuados, lembrando que a base do vba/access e a lingua inglesa, onde esses caracteres não são utilizados e podem; eventualmente; causar conflito/erros
Na inserção/alteração de dados,os novos valores devem; OBRIGATORIAMENTE; seguir a definição de tipo da tabela; ou seja se o campo estiver definido como numérico, somente números são aceitos.
Com essas premissas alterei em sua Tabela:
Campo: De: Para:
RazãoSocial Memorando Texto
CNPJ Numérico Texto
Endereço Numérico Texto
Após alterar os tipos conforme acima; experimente com a rotina:

Código: Selecionar todos

Sub salvar_empresa()
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.EnableEvents = False
    sql = "INSERT INTO cadastro_empresa( Identificação,RazãoSocial,Nomereduzido,CNPJ,CódigoCNAE,Endereço,CidadeUF,telefone,"
    sql = sql & "email,nomeresponsavel,departamentoRH,Vinculo,DatadeContrato,períódico,formadepagamento,emailfinanceiro,telefonefinanceiro,"
    sql = sql & "observação,valorporfuncionário,mensalidade,situação)"
    sql = sql & " VALUES ("
    sql = sql & "'" & F_2.cod2.Value & "',"
    sql = sql & "'" & F_2.box1.Value & "',"
    sql = sql & "'" & F_2.box2.Value & "',"
    sql = sql & "'" & F_2.box3.Value & "',"
    sql = sql & "'" & F_2.box4.Value & "',"
    sql = sql & "'" & F_2.box5.Value & "',"
    sql = sql & "'" & F_2.box6.Value & "',"
    sql = sql & "'" & F_2.box7.Value & "',"
    sql = sql & "'" & F_2.box8.Value & "',"
    sql = sql & "'" & F_2.box9.Value & "',"
    sql = sql & "'" & F_2.box10.Value & "',"
    sql = sql & "'" & F_2.box11.Value & "',"
    sql = sql & "'" & F_2.box12.Value & "',"
    sql = sql & "'" & F_2.box13.Value & "',"
    sql = sql & "'" & F_2.box14.Value & "',"
    sql = sql & "'" & F_2.box15.Value & "',"
    sql = sql & "'" & F_2.box16.Value & "',"
    sql = sql & "'" & F_2.box17.Value & "',"
    sql = sql & "'" & F_2.box18.Value & "',"
    sql = sql & "'" & F_2.box19.Value & "',"
    sql = sql & "'" & F_2.box20.Value & "'"
    sql = sql & ")"
    
    'define a conexão e abre o Recordset com os dados da tabela Clientes
    
   'Set rs = New ADODB.Recordset
    cx.conecta
With rs
    .CursorType = adOpenKeyset
    .CursorLocation = adUseClient
    .Source = sql
    .ActiveConnection = cx.conexao
    .Open
End With
'desconectar tabela e banco de dados
Set rs = Nothing
cx.desconecta
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
oie. Reinaldo eu tentei fazer essa conversao na tabela citado e não sei onde fazer isso. renomeeitodas a colunas, fui rodar o codigo e ainda da o erro no .open

.. seria dificil me enviar no email o que conseguiu mudar? meu office é versão 2016 eu sou nova em access eu criei esse sistema pelo excel usando o proprio excel como banco de dados mas tinha ficado pesado. e to tentando reformular.
meu email é anieliseboeira@hotmail.com


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: Erro de sintaxe na instrução INSERT INTO

Mensagem por Reinaldo »

Anielise, adicionei no topico anterior seu modelo alterado, experimente/teste/comente


anielise
Colaborador
Colaborador
Mensagens: 23
Registrado em: Qua Jun 26, 2019 5:56 pm

Re: Erro de sintaxe na instrução INSERT INTO

Mensagem por anielise »

Reinaldo escreveu: Qui Jul 04, 2019 8:48 am Anielise, adicionei no topico anterior seu modelo alterado, experimente/teste/comente
obrigada. eu agora que vi o anexo. e consegui entender.
agora surgiu uma nova necessidade.

o mesmo código permir eu inserir um textbox ou combox em branco no banco de dados.
e exemplo da planilha permitir tanto inserção de numero quanto de texto. :)


obrigada mil vezes obrigada pela ajuda.. ficarei mto feliz em conseguir isso para mim cada passo e entendimento é uma vitoria.


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: Erro de sintaxe na instrução INSERT INTO

Mensagem por Reinaldo »

Campos definidos como texto e permitir comprimento Zero, na tabela access, automaticamente aceitam nulos.
Qual/quais campos deseja/necessita que sejam "branco"

Veja se atende:
SaudeTRAB_Alt2.zip
(574.59 KiB) Baixado 565 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.


Responder