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: