Página 1 de 1

Erro de sintaxe na instrução INSERT INTO

Enviado: Dom Abr 21, 2019 11:16 am
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

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

Enviado: Dom Abr 21, 2019 7:04 pm
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 & " )"

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

Enviado: Dom Abr 21, 2019 10:19 pm
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.

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

Enviado: Seg Jul 01, 2019 9:58 pm
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

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

Enviado: Ter Jul 02, 2019 11:09 am
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

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

Enviado: Qua Jul 03, 2019 10:00 pm
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

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

Enviado: Qui Jul 04, 2019 8:48 am
por Reinaldo
Anielise, adicionei no topico anterior seu modelo alterado, experimente/teste/comente

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

Enviado: Sex Jul 05, 2019 1:07 pm
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.

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

Enviado: Sáb Jul 06, 2019 11:53 am
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 561 vezes