none
Erro na insert into RRS feed

  • Pergunta

  • Caros, bom dia!

    Estou precisando da ajuda de vocês, eu sou iniciante ainda nesta parte de VBA e estou com dificuldades em poder inserir os registros para o ACCESS, eu utilizo esses códigos abaixo e sempre que vou registrar a mensagem de erro aparece como               (Insert INTO statemente), gostaria do help de vocês por favor.

    Sub Salvar_Demanda_csr()
    
    
    Dim tabuladorpor As String
    Dim Conexao As New ADODB.Connection
    Dim Inserir As New ADODB.Recordset
    Dim StringConexao, StringInserir As String
    Dim aspas, virgula As String
    Dim caminho As String
    
    caminho = Sheets("FRONT").Range("C3").Value
    
    aspas = "'"
    virgula = ","
    tabuladorpor = Sheets("FRONT").Range("B1").Value
    
    If Sheets("TABULADOR_CONTROLE").Range("D6").Value = 30 Then
    ComandoSQL = "select * from CONTROLE COBRANÇAS"
    
    StringConexao = "Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=" & caminho & "\bit\Material CSR Seguradora\TABULADORES\CONTROLE COBRANÇAS\BD\BD_CONTROLE COBRANÇAS.mdb"
    Conexao.Open StringConexao
    
    
        TABULADO_POR = StrFor(Range("C8").Value)
        NUMERO_IA = StrFor(Range("C9").Value)
        NOME_DO_CLIENTE = StrFor(Range("C10").Value)
        SINISTRO = StrFor(Range("C11").Value)
        SEGURADORA = StrFor(Range("C12").Value)
        SEGURO = StrFor(Range("C13").Value)
        N_CERTIFICADO = StrFor(Range("C14").Value)
        ADM = StrFor(Range("C15").Value)
        SOLICITACAO = StrFor(Range("C16").Value)
        MOTIVO = StrFor(Range("C17").Value)
        DATA_TABULAÇÃO = StrFor(Now())
    
    StringInserir = "INSERT INTO CONTROLE COBRANÇAS(TABULADO_POR,NUMERO_IA,NOME_DO_CLIENTE,SINISTRO,SEGURADORA,SEGURO,N_CERTIFICADO,ADM,SOLICITACAO,MOTIVO,DATA_TABULAÇÃO)" & _
    " VALUES(" & TABULADO_POR & virgula & NUMERO_IA & virgula & NOME_DO_CLIENTE & virgula & SINISTRO & virgula & SEGURADORA & virgula & SEGURO & virgula & N_CERTIFICADO & virgula & ADM & virgula & SOLICITACAO & virgula & MOTIVO & virgula & DATA_TABULAÇÃO & ")"
    Inserir.Open StringInserir, Conexao
    
        Range("C9:C17").Select
        Selection.ClearContents
        MsgBox ("Muito obrigado " & tabuladorpor & " seu registro foi salvo com sucesso")
    Else
    MsgBox ("Alguma validação de dados foi quebrada, por gentileza verifique e tente novamente")
    End If
    
    End Sub
    
    
    Function StrFor(ByVal Campo As String, Optional ByVal NumeroFloat As Integer = 0) As String
    
    If NumeroFloat = 1 Then
    StrFor = Replace(Campo, ",", ".")
    Else
    StrFor = "'" & Campo & "'"
    End If
    End Function
    

    quarta-feira, 9 de maio de 2018 12:59

Respostas

  • Boa tarde,

    O nome da tabela é CONTROLE COBRANÇAS ?

    Ou seja, não é CONTROLE_COBRANÇAS ?

    Tente com colchetes, assim:

    INSERT INTO [CONTROLE COBRANÇAS] (TABULADO_POR,NUMERO_IA,NOME


    MARIANO1776

    • Marcado como Resposta Diego P Prado quinta-feira, 10 de maio de 2018 12:24
    quarta-feira, 9 de maio de 2018 15:31
  • Olá, fiz a alteração e ainda continua dando erro, segue evidencias.

    (Run-time error '-2147217900 (80040e14):

    Syntax error in INSERT INTO statement.

    Sub Salvar_Demanda_csr()
    
    
    Dim tabuladorpor As String
    Dim Conexao As New ADODB.Connection
    Dim Inserir As New ADODB.Recordset
    Dim StringConexao, StringInserir As String
    Dim aspas, virgula As String
    Dim caminho As String
    
    caminho = Sheets("FRONT").Range("C3").Value
    
    tabuladorpor = Sheets("FRONT").Range("B1").Value
    
    If Sheets("TABULADOR_CONTROLE").Range("D6").Value = 30 Then
    ComandoSQL = "select * from CONTROLE COBRANÇAS"
    
    StringConexao = "Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=" & caminho & "\bit\Material CSR Seguradora\TABULADORES\CONTROLE COBRANÇAS\BD\BD_CONTROLE COBRANÇAS.mdb"
    Conexao.Open StringConexao
    
    
        TABULADO_POR = StrFor(Range("C8").Value)
        NUMERO_IA = StrFor(Range("C9").Value)
        NOME_DO_CLIENTE = StrFor(Range("C10").Value)
        SINISTRO = StrFor(Range("C11").Value)
        SEGURADORA = StrFor(Range("C12").Value)
        SEGURO = StrFor(Range("C13").Value)
        N_CERTIFICADO = StrFor(Range("C14").Value)
        ADM = StrFor(Range("C15").Value)
        SOLICITACAO = StrFor(Range("C16").Value)
        MOTIVO = StrFor(Range("C17").Value)
        DATA_TABULAÇÃO = StrFor(Now())
    
    StringInserir = "INSERT INTO CONTROLE COBRANÇAS(TABULADO_POR,NUMERO_IA,NOME_DO_CLIENTE,SINISTRO,SEGURADORA,SEGURO,N_CERTIFICADO,ADM,SOLICITACAO,MOTIVO,DATA_TABULAÇÃO)" & _
    " VALUES( '" & TABULADO_POR & "','" & NUMERO_IA & "','" & NOME_DO_CLIENTE & "','" & SINISTRO & "','" & SEGURADORA & "','" & SEGURO & "','" & N_CERTIFICADO & "','" & ADM & "','" & SOLICITACAO & "','" & MOTIVO & "',#" & DATA_TABULAÇÃO & "#)"
    Inserir.Open StringInserir, Conexao
    
        Range("C9:C17").Select
        Selection.ClearContents
        MsgBox ("Muito obrigado " & tabuladorpor & " seu registro foi salvo com sucesso")
    Else
    MsgBox ("Alguma validação de dados foi quebrada, por gentileza verifique e tente novamente")
    End If
    
    End Sub
    
    
    Function StrFor(ByVal Campo As String, Optional ByVal NumeroFloat As Integer = 0) As String
    
    If NumeroFloat = 1 Then
    StrFor = Replace(Campo, ",", ".")
    Else
    StrFor = "'" & Campo & "'"
    End If
    End Function
    
    


    • Marcado como Resposta Diego P Prado quinta-feira, 10 de maio de 2018 12:24
    quarta-feira, 9 de maio de 2018 14:40

Todas as Respostas

  • O que eu vejo é que voce nao esta colocando apostrofo para limitar Strings dentro do insert.

    aqui uma sugestao de codigo (eu retirei a varial virgula, ela mais complica do que ajuda)

    StringInserir = "INSERT INTO CONTROLE COBRANÇAS(TABULADO_POR,NUMERO_IA,NOME_DO_CLIENTE,SINISTRO,SEGURADORA,SEGURO,N_CERTIFICADO,ADM,SOLICITACAO,MOTIVO,DATA_TABULAÇÃO)" & _
    " VALUES( '" & TABULADO_POR & "','" & NUMERO_IA & "','" & NOME_DO_CLIENTE & "','" & SINISTRO & "','" & SEGURADORA & "','" & SEGURO & "','" & N_CERTIFICADO & "','" & ADM & "','" & SOLICITACAO & "','" & MOTIVO & "',#" & DATA_TABULAÇÃO & "#)"
    Inserir.Open StringInserir, Conexao
    e datas no acces tem que ser limitadas pelo caractere # (sustenido, grade)

    att


    William John Adam Trindade
    Analyste-programmeur


    Sogi Informatique ltée
    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".


    quarta-feira, 9 de maio de 2018 13:56
    Moderador
  • Olá, fiz a alteração e ainda continua dando erro, segue evidencias.

    (Run-time error '-2147217900 (80040e14):

    Syntax error in INSERT INTO statement.

    Sub Salvar_Demanda_csr()
    
    
    Dim tabuladorpor As String
    Dim Conexao As New ADODB.Connection
    Dim Inserir As New ADODB.Recordset
    Dim StringConexao, StringInserir As String
    Dim aspas, virgula As String
    Dim caminho As String
    
    caminho = Sheets("FRONT").Range("C3").Value
    
    tabuladorpor = Sheets("FRONT").Range("B1").Value
    
    If Sheets("TABULADOR_CONTROLE").Range("D6").Value = 30 Then
    ComandoSQL = "select * from CONTROLE COBRANÇAS"
    
    StringConexao = "Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=" & caminho & "\bit\Material CSR Seguradora\TABULADORES\CONTROLE COBRANÇAS\BD\BD_CONTROLE COBRANÇAS.mdb"
    Conexao.Open StringConexao
    
    
        TABULADO_POR = StrFor(Range("C8").Value)
        NUMERO_IA = StrFor(Range("C9").Value)
        NOME_DO_CLIENTE = StrFor(Range("C10").Value)
        SINISTRO = StrFor(Range("C11").Value)
        SEGURADORA = StrFor(Range("C12").Value)
        SEGURO = StrFor(Range("C13").Value)
        N_CERTIFICADO = StrFor(Range("C14").Value)
        ADM = StrFor(Range("C15").Value)
        SOLICITACAO = StrFor(Range("C16").Value)
        MOTIVO = StrFor(Range("C17").Value)
        DATA_TABULAÇÃO = StrFor(Now())
    
    StringInserir = "INSERT INTO CONTROLE COBRANÇAS(TABULADO_POR,NUMERO_IA,NOME_DO_CLIENTE,SINISTRO,SEGURADORA,SEGURO,N_CERTIFICADO,ADM,SOLICITACAO,MOTIVO,DATA_TABULAÇÃO)" & _
    " VALUES( '" & TABULADO_POR & "','" & NUMERO_IA & "','" & NOME_DO_CLIENTE & "','" & SINISTRO & "','" & SEGURADORA & "','" & SEGURO & "','" & N_CERTIFICADO & "','" & ADM & "','" & SOLICITACAO & "','" & MOTIVO & "',#" & DATA_TABULAÇÃO & "#)"
    Inserir.Open StringInserir, Conexao
    
        Range("C9:C17").Select
        Selection.ClearContents
        MsgBox ("Muito obrigado " & tabuladorpor & " seu registro foi salvo com sucesso")
    Else
    MsgBox ("Alguma validação de dados foi quebrada, por gentileza verifique e tente novamente")
    End If
    
    End Sub
    
    
    Function StrFor(ByVal Campo As String, Optional ByVal NumeroFloat As Integer = 0) As String
    
    If NumeroFloat = 1 Then
    StrFor = Replace(Campo, ",", ".")
    Else
    StrFor = "'" & Campo & "'"
    End If
    End Function
    
    


    • Marcado como Resposta Diego P Prado quinta-feira, 10 de maio de 2018 12:24
    quarta-feira, 9 de maio de 2018 14:40
  • Boa tarde,

    O nome da tabela é CONTROLE COBRANÇAS ?

    Ou seja, não é CONTROLE_COBRANÇAS ?

    Tente com colchetes, assim:

    INSERT INTO [CONTROLE COBRANÇAS] (TABULADO_POR,NUMERO_IA,NOME


    MARIANO1776

    • Marcado como Resposta Diego P Prado quinta-feira, 10 de maio de 2018 12:24
    quarta-feira, 9 de maio de 2018 15:31
  • Boa tarde.

    Se te ajudou, por gentileza, marque como resposta.


    MARIANO1776

    quarta-feira, 9 de maio de 2018 16:56
  • Consegui resolver o problema, o erro estava no Access, no caso de Texto eu tinha que colocar no format o @ , em caso de numero eu tinha que colocar "Double" em field size e no format "General Number", agradeço a atenção de vocês pela ajuda!
    quinta-feira, 10 de maio de 2018 12:24