MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


2 participantes

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

    webruxim
    webruxim
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  webruxim 9/8/2017, 16: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
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Silvio 9/8/2017, 17: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.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    webruxim
    webruxim
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  webruxim 9/8/2017, 17: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

    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Silvio 9/8/2017, 17:30

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


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    webruxim
    webruxim
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  webruxim 9/8/2017, 18: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'.
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Silvio 9/8/2017, 20:45

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


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    webruxim
    webruxim
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  webruxim 9/8/2017, 22: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 9/8/2017, 22:58, editado 1 vez(es) (Motivo da edição : + info)
    webruxim
    webruxim
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  webruxim 10/8/2017, 15:29

    up.

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


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Silvio 10/8/2017, 15: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.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    webruxim
    webruxim
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  webruxim 10/8/2017, 17:01

    ok. segue em anexo um exemplo a quem puder ajudar
    Anexos
    [Resolvido]erro de sintaxe na instrução INSERT INTO Attachmentbd.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (143 Kb) Baixado 5 vez(es)
    webruxim
    webruxim
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  webruxim 11/8/2017, 07: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

    Conteúdo patrocinado


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

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/3/2024, 16:05