MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]erro de sintaxe na instrução INSERT INTO

    Compartilhe
    avatar
    webruxim
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 74
    Registrado : 08/12/2013

    [Resolvido]erro de sintaxe na instrução INSERT INTO

    Mensagem  webruxim em Qua 09 Ago 2017, 20:54

    Boa tarde a todos!

    Estou com um probleminha que não estou conseguindo resolver, acredito que para os mestres consiga visualizar o erro facilmente. Gostaria de saber onde estou errando.
    No meu formulario contas a Receber adicionei um campo Histórico e é exatamente esse ponto que esta dando erro de sintaxe na instrução INSERT INTO. Se eu tiro oq esta de vermelho continua a funcionar blz. Mas quando tento inserir o campo txtHistórico da o erro.

    Na minha tabela o campo ccHistórico está como Texto

    Alguem poderia dar um piteco.

           strSql = "INSERT INTO tbl_ContasAReceber ("
           strSql = strSql & "ccNumCre,"
           strSql = strSql & "CODCLI,"
           strSql = strSql & "ccNumDoc,"
           strSql = strSql & "ccNumDup,"
           strSql = strSql & "ccNumPar,"
           strSql = strSql & "ccNumDias,"
           strSql = strSql & "cdDatVen,"
           strSql = strSql & "ccValorPar,"
           strSql = strSql & "ccHistórico = "
           strSql = strSql & "ccQuitpar)"
           
           strSql = strSql & " VALUES (" & txtNumCre & ","
           strSql = strSql & txtCodCli & ","
           strSql = strSql & "'" & txtNumDoc & "',"
           strSql = strSql & "'" & txtNumDup & "',"
           strSql = strSql & "'" & txtParcelasTotal & "',"
           
           If txtNParcela = 1 Then
               strSql = strSql & "'" & txtNPrimeira & "',"
           Else
               strSql = strSql & "'" & txtNDias & "',"
           End If
           strSql = strSql & "'" & Format(CVDate(txtDatVen), "dd/mm/yyyy") & "',"
           strSql = strSql & "'" & Format(txtValorParcela, "##,##0.00") & "',"
           If IsNull(txtHistórico) Then
               strSql = strSql & "null"
           Else
               strSql = strSql & "'" & UCase(txtHistórico) & "'"
           End If

           strSql = strSql & "False);"
               
           On Error GoTo erro
           Workspaces(0).Databases(0).Execute strSql
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3672
    Registrado : 20/04/2011

    Re: [Resolvido]erro de sintaxe na instrução INSERT INTO

    Mensagem  Silvio em Qua 09 Ago 2017, 21:08

    Boa tarde...
    Talvez algo assim...

    If IsNull(txtHistórico) Then exit sub
    Else
    strSql = strSql & "'" & UCase(txtHistórico) & "'"
    End


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]
    avatar
    webruxim
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 74
    Registrado : 08/12/2013

    Re: [Resolvido]erro de sintaxe na instrução INSERT INTO

    Mensagem  webruxim em Qua 09 Ago 2017, 21:17

    Obrigado Silvio... testando....

    Sem sucesso. Ao usar o end sub ele interrompe o restante do codigo.

    O codigo é executado apos atualizar de um campo no formulario (Parcelas)

    Codigo total abaixo:
    Código:

    Private Sub txtParcelas_AfterUpdate()
        Dim txtNPrimeira, txtIntercalar, txtNDias, txtNParcela, txtNumPar, txtNumDup, txtDatVen, txtParcelasTotal
        
        Set dbs = CurrentDb
        strSql = "SELECT * FROM tbl_ContasAReceber order by ccNumCre"
        Set rst = dbs.OpenRecordset(strSql)
            
        txtNPrimeira = 30
        txtNDias = 30
        
        If DLookup("[Prazo]", "tbl_Parametros") > 0 Then
            txtNPrimeira = DLookup("[Prazo]", "tbl_Parametros")
        End If
        If DLookup("[Intercalar]", "tbl_Parametros") > 0 Then
            txtNDias = DLookup("[Intercalar]", "tbl_Parametros")
            txtIntercalar = DLookup("[Intercalar]", "tbl_Parametros")
        End If
        
        txtNParcela = 0
        txtTotalParcelas = 0
        txtValorParcela = txtVALOR / txtParcelas
        
        For i = 1 To txtParcelas
            txtNParcela = txtNParcela + 1
        
            If txtNParcela = 1 Then
                txtDatVen = Format(CVDate(txtData) + txtNPrimeira, "dd/mm/yyyy")
            Else
                txtDatVen = Format(CVDate(txtData) + txtNDias, "dd/mm/yyyy")
            End If
            
                txtNumDup = Format$(Val(txtNumDoc), "00000") + "-" + Format$(Val(txtNParcela), "00")
            
            txtParcelasTotal = Trim(LTrim(str(txtNParcela)))
            txtParcelasTotal = txtParcelasTotal + "/" & txtParcelas
            
            If i = Val(txtParcelas) Then
                txtValorParcela = Format(txtVALOR - txtTotalParcelas, "#,##0.00")
            End If
            txtTotalParcelas = Format(txtTotalParcelas + txtValorParcela, "#,##0.00")
                      
            strSql = "INSERT INTO tbl_ContasAReceber ("
            strSql = strSql & "ccNumCre,"
            strSql = strSql & "CODCLI,"
            strSql = strSql & "ccNumDoc,"
            strSql = strSql & "ccNumDup,"
            strSql = strSql & "ccNumPar,"
            strSql = strSql & "ccNumDias,"
            strSql = strSql & "cdDatVen,"
            strSql = strSql & "ccValorPar,"
        strSql = strSql & "ccHistórico = "
            strSql = strSql & "ccQuitpar)"
            
            strSql = strSql & " VALUES (" & txtNumCre & ","
            strSql = strSql & txtCodCli & ","
            strSql = strSql & "'" & txtNumDoc & "',"
            strSql = strSql & "'" & txtNumDup & "',"
            strSql = strSql & "'" & txtParcelasTotal & "',"
            
            If txtNParcela = 1 Then
                strSql = strSql & "'" & txtNPrimeira & "',"
            Else
                strSql = strSql & "'" & txtNDias & "',"
            End If
            strSql = strSql & "'" & Format(CVDate(txtDatVen), "dd/mm/yyyy") & "',"
            strSql = strSql & "'" & Format(txtValorParcela, "##,##0.00") & "',"
        If IsNull(txtHistórico) Then
            strSql = strSql & "null"
        Else
            strSql = strSql & "'" & UCase(txtHistórico) & "'"
        End If
            strSql = strSql & "False);"
                
            On Error GoTo erro
            Workspaces(0).Databases(0).Execute strSql
            If txtNParcela = 1 Then
                txtNDias = txtNPrimeira + txtNDias
            Else
                txtNDias = txtNDias + txtIntercalar
            End If
        Next
        
            Arredondamento
        
        Set dbs = CurrentDb
            strSql = "SELECT * FROM tbl_ContasAReceber WHERE ccNumDoc = " & "'" & txtNumDoc & "'"
        Set rst = dbs.OpenRecordset(strSql)
        Me.RecordSource = strSql

    VoltaErro:

    Exit Sub

    erro:
        Beep
        MsgBox Error$, vbCritical, "Adição"
        Resume VoltaErro

    End Sub

    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3672
    Registrado : 20/04/2011

    Re: [Resolvido]erro de sintaxe na instrução INSERT INTO

    Mensagem  Silvio em Qua 09 Ago 2017, 21:30

    strSql = strSql & "ccHistórico = " Tire o sinal de =


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]
    avatar
    webruxim
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 74
    Registrado : 08/12/2013

    Re: [Resolvido]erro de sintaxe na instrução INSERT INTO

    Mensagem  webruxim em Qua 09 Ago 2017, 22:19

    Sem sucesso tb.
    tirando o sinal de igual ficando assim:

           strSql = "INSERT INTO tbl_ContasAReceber ("
           strSql = strSql & "ccNumCre,"
           strSql = strSql & "CODCLI,"
           strSql = strSql & "ccNumDoc,"
           strSql = strSql & "ccNumDup,"
           strSql = strSql & "ccNumPar,"
           strSql = strSql & "ccNumDias,"
           strSql = strSql & "cdDatVen,"
           strSql = strSql & "ccValorPar,"
      strSql = strSql & "ccHistórico,"
           strSql = strSql & "ccQuitpar)"
           
           strSql = strSql & " VALUES (" & txtNumCre & ","
           strSql = strSql & txtCodCli & ","
           strSql = strSql & "'" & txtNumDoc & "',"
           strSql = strSql & "'" & txtNumDup & "',"
           strSql = strSql & "'" & txtParcelasTotal & "',"
           
           If txtNParcela = 1 Then
               strSql = strSql & "'" & txtNPrimeira & "',"
           Else
               strSql = strSql & "'" & txtNDias & "',"
           End If
           strSql = strSql & "'" & Format(CVDate(txtDatVen), "dd/mm/yyyy") & "',"
           strSql = strSql & "'" & Format(txtValorParcela, "##,##0.00") & "',"
       If IsNull(txtHistórico) Then
           strSql = strSql & "null"
       Else
           strSql = strSql & "'" & UCase(txtHistórico) & "'"
       End If

           strSql = strSql & "False);"

    da o seguinte erro:
    Erro de sintaxe (operador faltando) na expressao de consulta "TESTE'False'.
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3672
    Registrado : 20/04/2011

    Re: [Resolvido]erro de sintaxe na instrução INSERT INTO

    Mensagem  Silvio em Qui 10 Ago 2017, 00:45

    Verifique corretamente essa linha...
    strSql = strSql & "False);"


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]
    avatar
    webruxim
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 74
    Registrado : 08/12/2013

    Re: [Resolvido]erro de sintaxe na instrução INSERT INTO

    Mensagem  webruxim em Qui 10 Ago 2017, 02:53

    Silvio escreveu:
    Verifique corretamente essa linha...
    strSql = strSql & "False);"

    essa linha é referente a um compo na tabela (sim/não) que esta de vermelho.

    Obs: se tiro oque esta de azul o codigo corre normal e adiciona todos os campos corretamente.

    strSql = "INSERT INTO tbl_ContasAReceber ("
          strSql = strSql & "ccNumCre,"
          .....
          .....
     strSql = strSql & "ccHistórico,"
          strSql = strSql & "ccQuitpar)"
         
          .....
      If IsNull(txtHistórico) Then
          strSql = strSql & "null"
      Else
          strSql = strSql & "'" & UCase(txtHistórico) & "'"
      End If

          strSql = strSql & "False);"


    Última edição por webruxim em Qui 10 Ago 2017, 02:58, editado 1 vez(es) (Razão : + info)
    avatar
    webruxim
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 74
    Registrado : 08/12/2013

    Re: [Resolvido]erro de sintaxe na instrução INSERT INTO

    Mensagem  webruxim em Qui 10 Ago 2017, 19:29

    up.

    Alguem pra dar uma força ?
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3672
    Registrado : 20/04/2011

    Re: [Resolvido]erro de sintaxe na instrução INSERT INTO

    Mensagem  Silvio em Qui 10 Ago 2017, 19:33

    Poste as entidades envolvidas, para ficar mais simples da gente olhar aqui.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]
    avatar
    webruxim
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 74
    Registrado : 08/12/2013

    Re: [Resolvido]erro de sintaxe na instrução INSERT INTO

    Mensagem  webruxim em Qui 10 Ago 2017, 21:01

    ok. segue em anexo um exemplo a quem puder ajudar
    Anexos
    bd.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (143 Kb) Baixado 2 vez(es)
    avatar
    webruxim
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 74
    Registrado : 08/12/2013

    Re: [Resolvido]erro de sintaxe na instrução INSERT INTO

    Mensagem  webruxim em Sex 11 Ago 2017, 11:48

    Tópico resolvido:

    Problema: inserir o campo historico no bd.
    Se o campo historico não contiver dados inserir nulo
    se conter dados inserir dados


       strSql = strSql & "ccHistórico = "
       If IsNull(txtHistórico) Then
           strSql = strSql & "null"
       Else
           strSql = strSql & "'" & UCase(txtHistórico) & "'"
       End If


    se eu gerar parcelas, nao consigo usar esse código o porque nao sei

    Solução:

    tirei a condição if


           strSql = "INSERT INTO tbl_ContasAReceber ("
           strSql = strSql & "ccNumCre,"
           strSql = strSql & "CODCLI,"
           strSql = strSql & "ccNumDoc,"
           strSql = strSql & "ccNumDup,"
           strSql = strSql & "ccNumPar,"
           strSql = strSql & "ccNumDias,"
           strSql = strSql & "cdDatVen,"
           strSql = strSql & "ccValorPar,"
           strSql = strSql & "ccHistórico,"
           strSql = strSql & "ccQuitpar)"

           strSql = strSql & " VALUES (" & txtNumCre & ","
           strSql = strSql & txtCodCli & ","
           strSql = strSql & "'" & txtNumDoc & "',"
           strSql = strSql & "'" & txtNumDup & "',"
           strSql = strSql & "'" & txtParcelasTotal & "',"
           
           If txtNParcela = 1 Then
               strSql = strSql & "'" & txtNPrimeira & "',"
           Else
               strSql = strSql & "'" & txtNDias & "',"
           End If
           strSql = strSql & "'" & Format(CVDate(txtDatVen), "dd/mm/yyyy") & "',"
           strSql = strSql & "'" & Format(txtValorParcela, "##,##0.00") & "',"
           strSql = strSql & "'" & UCase(txtHistórico) & "',"
           strSql = strSql & "False);"

    Vou deixar o topico aberto por algum tempo, pois espero uma explicação ou alguma solução dos mestres.

    Se gerar parcela nao consigo usar a condição if...

    se nao gero parcela consigo usar a condição if.....

    adicionando esse codigo no ao clicar do botao ok:


    If IsNull(txtParcelas) Or txtParcelas = 0 Then
       Set dbs = CurrentDb
       strSql = "SELECT * FROM tbl_ContasAReceber order by idRec"
       Set rst = dbs.OpenRecordset(strSql)
                                 
       strSql = "INSERT INTO tbl_ContasAReceber ("
       strSql = strSql & "ccNumCre,"
       strSql = strSql & "ccNumDoc,"
       strSql = strSql & "idRec,"
       strSql = strSql & "ccQuitPar)"
           
       strSql = strSql & " VALUES (" & txtNumCre & ","
       strSql = strSql & txtNumDoc & ","
       strSql = strSql & txtidRec & ","
       strSql = strSql & "False);"
       
       Workspaces(0).Databases(0).Execute strSql
       
       strSql = "UPDATE tbl_ContasAReceber set "
       strSql = strSql & "ccNumDoc = '" & txtNumDoc & "',"
       strSql = strSql & "CODCLI = " & txtCliente.Column(0) & ","
       strSql = strSql & "ccNumDup = '" & txtNumDoc & "',"
       strSql = strSql & "ccNumPar = '" & txtParcelas & "',"
       strSql = strSql & "ccValorPar = '" & Format(txtVALOR, "##,##0.00") & "',"
       strSql = strSql & "cdDatLan = '" & Format(CVDate(txtDatLan), "dd/mm/yyyy") & "',"
       strSql = strSql & "cdDatVen = '" & Format(CVDate(txtDatVen), "dd/mm/yyyy") & "',"
       
       strSql = strSql & "ccHistórico = "
       If IsNull(txtHistórico) Then
           strSql = strSql & "null"
       Else
           strSql = strSql & "'" & UCase(txtHistórico) & "'"
       End If

       strSql = strSql & " WHERE ccNumCre = " & txtNumCre
       strSql = strSql & " AND idRec = " & txtidRec
       
       On Error GoTo erro
       Workspaces(0).Databases(0).Execute strSql
       
       Forms!ListaContasReceber.Requery
       
       Exit Sub
    Else
       
       Forms!ListaContasReceber.Requery
       
      Exit Sub
    End If
    VoltaErro:

    Exit Sub

    erro:
       Beep
       MsgBox Error$, vbCritical, "Edição"
       Resume VoltaErro

      Data/hora atual: Ter 21 Nov 2017, 19:14