Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Erro de sintaxe na instrução INSERT INTO
Moderador: joseA
-
- Acabou de chegar
- Mensagens: 2
- Registrado em: Qua Out 17, 2018 3:19 pm
Erro de sintaxe na instrução INSERT INTO
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
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 628 vezes
- Reinaldo
- 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
Me parece que o Campo nome "Local" está gerando algum conflito.
Experimente assim:
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 & " )"
-
- Acabou de chegar
- Mensagens: 2
- Registrado em: Qua Out 17, 2018 3:19 pm
Re: Erro de sintaxe na instrução INSERT INTO
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.
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
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
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 583 vezes
- Reinaldo
- 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
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:
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 585 vezes
Editado pela última vez por Reinaldo em Qui Jul 04, 2019 8:46 am, em um total de 1 vez.
Re: Erro de sintaxe na instrução INSERT INTO
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 .openReinaldo 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
.. 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
- Reinaldo
- 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
Anielise, adicionei no topico anterior seu modelo alterado, experimente/teste/comente
Re: Erro de sintaxe na instrução INSERT INTO
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.
- Reinaldo
- 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
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:
Qual/quais campos deseja/necessita que sejam "branco"
Veja se atende: