none
Erro de sintaxe na instrução INSERT INTO RRS feed

  • Pergunta

  • Pessoal, boa noite.

    Estou fazendo um código em VBA num arquivo Excel para copiar, para o Access, a linha quando o valor da coluna 15 ("O") for igual "OK". Mas, quando executo, aparece a mensagem "Erro de sintaxe na instrução INSERT INTO".

    Já fiz várias modificações, mas continuo com o mesmo erro. Alguém pode me ajudar?

    Obrigado.

    For contador = 3 To lastRow
        If Planilha1.Cells(contador, 15).Value = "OK" Then
        
            Sql = "INSERT INTO tbDados"
            Sql = Sql & " (BU, CentroCusto, Mês, Categoria, Tp, Produto, Referência, Gerente, "
            Sql = Sql & " Período, Fornecedor, Tipo, Valor, Motivo) "
            Sql = Sql & " values "
            Sql = Sql & " ('" & Cells(contador, 2).Value & "',"
            Sql = Sql & " " & Cells(contador, 3).Value & ","
            Sql = Sql & " " & Cells(contador, 4).Value & ","
            Sql = Sql & " '" & Cells(contador, 5).Value & "',"
            Sql = Sql & " '" & Cells(contador, 6).Value & "',"
            Sql = Sql & " '" & Cells(contador, 7).Value & "',"
            Sql = Sql & " " & Cells(contador, 8).Value & ","
            Sql = Sql & " '" & Cells(contador, 9).Value & "',"
            Sql = Sql & " '" & Cells(contador, 10).Value & "',"
            Sql = Sql & " '" & Cells(contador, 11).Value & "',"
            Sql = Sql & " '" & Cells(contador, 12).Value & "',"
            Sql = Sql & " " & Cells(contador, 13).Value & ","
            Sql = Sql & " '" & Cells(contador, 14).Value & "')"
        
            cn.Execute Sql
            
        End If
    Next contador

    quarta-feira, 20 de março de 2019 02:57

Respostas

  • Olá, ao meu ver seu problema está na virgula 45,7

    ajuste para 45.7

    INSERT INTO tbDados

    (BU, CentroCusto, Mês, Categoria, Tp, Produto, Referência, Gerente, Período, Fornecedor, Tipo, Valor, Motivo)

    values

    ('Teste1', 123, 12, 'A', 'Estimado', 'Calça P', 5, 'Fulano 1', '01/06/2016', 'XYZ', '(EST)', 45,7, 'Saldo estoque')


    Se ajudou, vote como útil! Obrigado.

    • Marcado como Resposta aprendizVBA87 quinta-feira, 21 de março de 2019 03:03
    quarta-feira, 20 de março de 2019 12:34

Todas as Respostas

  • Aprendiz,

    Verifique se os valores para CentroCusto , Mês , Referência e Valor estão preenchidos na planilha.

    Caso não você deve passar valor Null para a query.

    Verifique também se os valores numéricos não inteiros estão sendo enviados com o separador de decimais com "." e não com "," .

    Exemplo:

    INSERT INTO tbDados (BU, CentroCusto, Mês, Categoria, Tp, Produto, Referência, Gerente,  Período, Fornecedor, Tipo, Valor, Motivo)  
    values  ('XPTO', 1 , 2 , 'XPTO', 'XPTO', 'XPTO', Null, 'XPTO', 'XPTO', 'XPTO', 'XPTO', 2.34 , 'XPTO')

    Se tiver mais dúvidas, coloque aqui a query que está sendo enviada que te ajudaremos a analisar.

    Abraço!


    Natan


    • Editado 'Natan Silva quarta-feira, 20 de março de 2019 10:51
    quarta-feira, 20 de março de 2019 10:51
  • Natan, bom dia.

    Obrigado pelo retorno.

    Todos os campos estão preenchidos e o erro continua.

    O que a instrução retorna o comando abaixo. 

    INSERT INTO tbDados (BU, CentroCusto, Mês, Categoria, Tp, Produto, Referência, Gerente,  Período, Fornecedor, Tipo, Valor, Motivo)  values  ('Teste1', 123, 12, 'A', 'Estimado', 'Calça P', 5, 'Fulano 1', '01/06/2016', 'XYZ', '(EST)', 45,7, 'Saldo estoque')

    Sub incluirDados()
    
    Dim lastRow, contador As Long
    
    Sheets("Base").Visible = True
    Sheets("Base").Select
    
    lastRow = Planilha1.Cells(Rows.Count, 2).End(xlUp).Row
    
    Conectar
    
    For contador = 3 To lastRow
        If Planilha1.Cells(contador, 15).Value = "OK" Then
        
            Sql = "INSERT INTO tbDados"
            Sql = Sql & " (BU, CentroCusto, Mês, Categoria, Tp, Produto, Referência, Gerente, "
            Sql = Sql & " Período, Fornecedor, Tipo, Valor, Motivo) "
            Sql = Sql & " values "
            Sql = Sql & " ('" & Cells(contador, 2).Value & "',"
            Sql = Sql & " " & Cells(contador, 3).Value & ","
            Sql = Sql & " " & Cells(contador, 4).Value & ","
            Sql = Sql & " '" & Cells(contador, 5).Value & "',"
            Sql = Sql & " '" & Cells(contador, 6).Value & "',"
            Sql = Sql & " '" & Cells(contador, 7).Value & "',"
            Sql = Sql & " " & Cells(contador, 8).Value & ","
            Sql = Sql & " '" & Cells(contador, 9).Value & "',"
            Sql = Sql & " '" & Cells(contador, 10).Value & "',"
            Sql = Sql & " '" & Cells(contador, 11).Value & "',"
            Sql = Sql & " '" & Cells(contador, 12).Value & "',"
            Sql = Sql & " " & Cells(contador, 13).Value & ","
            Sql = Sql & " '" & Cells(contador, 14).Value & "')"
            
            MsgBox Sql
            cn.Execute Sql
            
        End If
    Next contador
    
        
    
    End Sub
    

    quarta-feira, 20 de março de 2019 12:13
  • Olá, ao meu ver seu problema está na virgula 45,7

    ajuste para 45.7

    INSERT INTO tbDados

    (BU, CentroCusto, Mês, Categoria, Tp, Produto, Referência, Gerente, Período, Fornecedor, Tipo, Valor, Motivo)

    values

    ('Teste1', 123, 12, 'A', 'Estimado', 'Calça P', 5, 'Fulano 1', '01/06/2016', 'XYZ', '(EST)', 45,7, 'Saldo estoque')


    Se ajudou, vote como útil! Obrigado.

    • Marcado como Resposta aprendizVBA87 quinta-feira, 21 de março de 2019 03:03
    quarta-feira, 20 de março de 2019 12:34
  • Leonardo e Natan.

    Obrigado pela ajuda, consegui resolver.

    Além da questão do ".", também havia espaço nos cabeçalhos.

    Abraço.

    quinta-feira, 21 de março de 2019 03:04
  • Olá, que bom conseguiu resolver!

    Se puder votar como útil na resposta, agradeço! Obrigado.

    quinta-feira, 21 de março de 2019 13:54