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]Conflito de gravação

    avatar
    thiagonsilvaa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 384
    Registrado : 12/01/2017

    [Resolvido]Conflito de gravação Empty [Resolvido]Conflito de gravação

    Mensagem  thiagonsilvaa 8/10/2017, 04:59

    Bom dia a todos !
    Estou com um problema em adaptar um código que encontrei aqui no fórum sobre a parte de reparcelamento.

    Segue:
    Código:
    If Me.ValorPago < Me.ValorParcela And Quitar = -1 Then

      If MsgBox("Deseja reparcelar ?", vbYesNo + vbDefaultButton2 + vbInformation, "Reparcelamento") = vbYes Then
      
                 Set db = CurrentDb()
                    Set rs = db.OpenRecordset("Tbl_ParcelasDespesas") 'Abre Tbl_ContasAreceber
                ' Valor_Parcela = Me. / Me.QtdeParcelas 'Valor de cada Parcela
                 DtVencimento = Me.DtVencimento
                 ' For i = 1 To Me.QtdeParcelas  'Insere as Parcela na Tbl_ContasAreceber
                          rs.AddNew
                        rs("IDDespesa") = Me.IDDespesa
                        rs("parcelas") = DMax("parcelas", "Tbl_ParcelasDespesas", "IDDespesa = " & Me.IDDespesa & "") + 1
                        rs("ValorParcela") = ValorParcela - Me.ValorPago
                        rs("DtVencimento") = DLast("DtVencimento", "Tbl_ParcelasDespesas", "IDDespesa = " & Me.IDDespesa & "") + 30
                          rs.Update
                          rs.Close
                          db.Close
                 CurrentDb.Execute "UPDATE [Tbl_ParcelasDespesas] SET ValorParcela = ValorPago WHERE IDParcela = " & IDParcela & ""
                        MsgBox "Foi gerada uma nova parcela com o restante", vbInformation, "Reparcelamento"

                 ElseIf Me.ValorPago > ValorParcela Then
                        MsgBox "O valor pago não deve ser maior que a parcela", vbcritcal
                         DoCmd.CancelEvent
                        Me.ValorPago = 0
    End If
        End If
        Me.Requery

    Ao preencher o valor pago menor que a parcela surge a msgbox se deseja reparcelar, quando eu clicar em sim, preciso alterar também o valor da parcela antiga para que não dê diferença. Coloquei o código:
    Código:
    CurrentDb.Execute "UPDATE [Tbl_ParcelasDespesas] SET ValorParcela = ValorPago WHERE IDParcela = " & IDParcela & ""

    Porém está dando conflito de gravação.
    Alguém sabe como posso resolver esse problema ?
    Gratidão desde já !
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Conflito de gravação Empty Re: [Resolvido]Conflito de gravação

    Mensagem  Alexandre Neves 8/10/2017, 08:22

    Bom dia,
    Faça sempre uma procura no fórum
    IMPORTANTE: colocar e manter títulos dos temas sem erros

    veja se lhe dá: https://www.maximoaccess.com/t6163-resolvidoconflito-de-gravacao


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    thiagonsilvaa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 384
    Registrado : 12/01/2017

    [Resolvido]Conflito de gravação Empty Conflito de gravação

    Mensagem  thiagonsilvaa 8/10/2017, 18:34

    Boa tarde Alexandre !

    Estive analisando o tópico que mencionou.
    Porém ainda sem sucesso.
    Segundo o código que te mandei, a execução do update está no lugar certo? Não há outra maneira de atualizar a parcela pós efetuar o reparcelamento?
    Abraços.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Conflito de gravação Empty Re: [Resolvido]Conflito de gravação

    Mensagem  Alexandre Neves 9/10/2017, 16:34

    Boa tarde,

    Não sei, aparentemente está mas só testando é que podia confirmar
    Tem a tabela que quer actualizar como origem dos registos no formulário que está carregado?
    Se sim, pode ter esse conflito e tente numa das formas:
    1- tenha no form o campo ValorParcela e aí será só actualizar no campo (ValorParcela=ValorPago)
    2- actualizar o form (me.refresh) antes de executar a instrução


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    thiagonsilvaa
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 384
    Registrado : 12/01/2017

    [Resolvido]Conflito de gravação Empty Conflito de gravação

    Mensagem  thiagonsilvaa 10/10/2017, 05:06

    Bom dia meu caro !!!
    Consegui resolver o problema colocando um me.refresh antes da instrução.
    O código ficou desta maneira:
    Código:
    If Me.ValorPago < Me.ValorParcela And Quitar = -1 Then

      If MsgBox("Deseja reparcelar ?", vbYesNo + vbDefaultButton2 + vbInformation, "Reparcelamento") = vbYes Then
     
                Set db = CurrentDb()
                Set rs = db.OpenRecordset("Tbl_ParcelasDespesas") 'Abre Tbl_ContasAreceber
                ' Valor_Parcela = Me. / Me.QtdeParcelas 'Valor de cada Parcela
                DtVencimento = Me.DtVencimento
                ' For i = 1 To Me.QtdeParcelas  'Insere as Parcela na Tbl_ContasAreceber
                          rs.AddNew
                        rs("IDDespesa") = Me.IDDespesa
                        rs("parcelas") = DMax("parcelas", "Tbl_ParcelasDespesas", "IDDespesa = " & Me.IDDespesa & "") + 1
                        rs("ValorParcela") = ValorParcela - Me.ValorPago
                        rs("DtVencimento") = DLast("DtVencimento", "Tbl_ParcelasDespesas", "IDDespesa=" & Me.IDDespesa & "") + 30
                          rs.Update
                          rs.Close
                    db.Close
               
                    MsgBox "Foi gerada uma nova parcela com o restante", vbInformation, "Reparcelamento"
                    Me.Refresh
                    CurrentDb.Execute "UPDATE [Tbl_ParcelasDespesas] SET ValorParcela = ValorPago WHERE IDParcela = " & IDParcela & ""
        End If
    End If
                       
        If Me.ValorPago > Me.ValorParcela Then
                    MsgBox "O valor pago não deve ser maior que a parcela", vbCritical, "Erro"
                    DoCmd.CancelEvent
                    Me.ValorPago = 0
        End If
                    Me.Requery

    Gratidão pela ajuda !!!
    Tópico resolvido.

    Conteúdo patrocinado


    [Resolvido]Conflito de gravação Empty Re: [Resolvido]Conflito de gravação

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 26/4/2024, 16:43