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]Gravar o mesmo registro várias vezes

    avatar
    rnpala
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2
    Registrado : 02/12/2015

    [Resolvido]Gravar o mesmo registro várias vezes Empty [Resolvido]Gravar o mesmo registro várias vezes

    Mensagem  rnpala 2/12/2015, 22:24

    Pessoal, boa noite!
    Esse é meu primeiro post aqui e gostaria de pedir ajuda de vocês em um problema que estou tendo ao tentar fazer uma macro no Access.

    Tenho um Access que serve para "Controle Financeiro Familiar", onde tenho as seguintes tabelas:
    - CATEGORIA (Tabela para armazenar as categorias de despesa/receita da movimentação)
    - FONTE_MOVIMENTACAO (tabela para informar qual conta saiu/entrou o dinheiro da movimentação)
    - FORMA_PAGAMENTO (tabela para registrar qual forma a movimentação foi paga)
    - MOVIMENTACAO (tabela para armazenar cada movimentação)
    - RESPONSAVEL_MOVIMENTACAO (tabela para armazenar a pessoa responsável pela movimentação)
    - SUBCATEGORIA (tabela para armazenar a subcategoria da movimentação)

    Cada movimentação (receita/despesa) eu vou registrar no formulário "Movimentação".
    O meu problema é relacionado as compras parceladas...
    Um dos atributos da tabela "Movimentação" é "Qnt_Parcelas", que serve para informar no frm_Movimentacao a quantidade de parcelas que a compra foi dividida.

    Criei uma variável chama novoValor e novaData. O "novoValor"="ValorMovimentacao"/"QntParcelas" e "novaData"="data"+30.
    Ou seja, vou dividir o valor da movimentação pela qnt de parcelas para achar quanto será cada parcela e novaData será a data atual + 30, para registrar a data referente a parcela de cada um dos meses que virão.

    A macro abaixo serve para ao clicar em salvar, registrar um registro para cada uma das parcelas, entrando no loop a quantidade de parcelas da movimentação, gravando o valor de cada parcela. Está funcionando quase perfeito, masssss.....

    Meu problema é que primeiro está registrando o valor inteiro com a data que registro, depois ele grava um registro na tabela para cada parcela, de forma correta (tanto o novoValor quanto a data incrementada de 30).

    Enfim, se puderem me ajudar, gostaria apenas de fazer com que o primeiro registro não seja armazenada (com o valor inteiro da movimentação).

    Exemplo:
    Considerando uma movimentação de R$ 800,00 que foi parcelada em 2x.

    Registro 1 - Valor 800,00 - Data 01/12/15 -> esse registro que precisa ser removido
    Registro 2 - valor 400,00 - data 01/01/16 -> registro correto da parcela 1
    Registro 3 - valor 400,00 - data 01/02/16 -> registro correto da parcela 2

    Desde já agradeço a disponibilidade e ajuda de todos!


    Macro:

    Private Sub bt_salvarRegistro_Click()

    Dim novoValor As Double
    Dim novaData As Date
    Dim contador As Integer

    Dim db As DAO.Database
    Dim rs As DAO.Recordset

    Set db = CurrentDb()
    Set rs = db.OpenRecordset("MOVIMENTACAO")

    rs.MoveFirst

       If Me.qntParcelas.Value > 1 Then
       
           contador = 0
           novaData = Me.data.Value - 30
           novoValor = Me.valor.Value / Me.qntParcelas.Value
           
           Do While contador < Me.qntParcelas.Value
           
               novaData = novaData + 30
               contador = contador + 1
               rs.AddNew
               rs.Fields("subCategoria") = Me.subCategoria
               rs.Fields("descricao") = Me.descricao
               rs.Fields("data") = novaData
               rs.Fields("valor") = novoValor
               rs.Fields("tipoMovimentacao") = Me.tipoMovimentacao
               rs.Fields("formaPagamento") = Me.formaPagamento
               rs.Fields("fonteMovimentacao") = Me.fonteMovimentacao
               rs.Fields("qntParcelas") = Me.qntParcelas
               rs.Fields("responsavelMovimentacao") = Me.responsavelMovimentacao
               rs.Fields("planejada") = Me.planejada
               rs.Update
               rs.MoveNext
               
           Loop
               
       End If
       
       DoCmd.GoToRecord acForm, "MOVIMENTACAO", acNewRec

    End Sub
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11026
    Registrado : 04/11/2009

    [Resolvido]Gravar o mesmo registro várias vezes Empty Re: [Resolvido]Gravar o mesmo registro várias vezes

    Mensagem  JPaulo 4/12/2015, 10:25

    Ola e seja bem vindo ao forum;

    Substitua todo o seu código por este, teste e retorne por favor;

    Código:
    Private Sub bt_salvarRegistro_Click()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim I As Byte

    Set db = CurrentDb()
    Set rs = db.OpenRecordset("MOVIMENTACAO")

    If Me.qntParcelas.Value > 1 Then

    For I = 1 To Nz(Me.qntParcelas, 0)
    With rs
        .AddNew
      
               .AddNew
                !subCategoria = Me.subCategoria
                !descricao = Me.descricao
                !data = DateAdd("m", I - 1, (Me.data + 30))
                !valor = Nz(Me.valor.Value, 0) / Nz(Me.qntParcelas.Value, 0)
                !tipoMovimentacao = Me.tipoMovimentacao
                !formaPagamento = Me.formaPagamento
                !fonteMovimentacao = Me.fonteMovimentacao
                !qntParcelas = Me.qntParcelas
                !responsavelMovimentacao = Me.responsavelMovimentacao
                !planejada = Me.planejada
        .Update
    End With
    Next
    Else
        Exit Sub
       End If
       DoCmd.SetWarnings False
       DoCmd.RunCommand acCmdDeleteRecord
       DoCmd.SetWarnings True
       DoCmd.GoToRecord acForm, "MOVIMENTACAO", acNewRec
    rs.Close
    Set rs = Nothing
    End Sub


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Gravar o mesmo registro várias vezes Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Gravar o mesmo registro várias vezes Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Gravar o mesmo registro várias vezes Folder_announce_new Instruções SQL como utilizar...
    avatar
    rnpala
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2
    Registrado : 02/12/2015

    [Resolvido]Gravar o mesmo registro várias vezes Empty Funcionou perfeitamente!

    Mensagem  rnpala 4/12/2015, 21:53

    Paulo, funcionou perfeitamento cara!
    Muito obrigado de verdade...
    Tinha pesquisado bastante e não tinha conseguido de jeito nenhum, brigadão!

    Se não for abusar muito, poderia te pedir apenas para explicar rapidamente só alguns trechos do seu código, p q na próxima consiga fazer!
    hahaha


    1. Nz(Me.qntParcelas, 0)

    2. um .addnew dentro do outro

    3. DateAdd("m", I - 1, (Me.data + 30))

    4. DoCmd.SetWarnings False
      DoCmd.RunCommand acCmdDeleteRecord
      DoCmd.SetWarnings True

    5. Set rs = Nothing

    De qualquer forma muito obrigado!

    Abraço

    Conteúdo patrocinado


    [Resolvido]Gravar o mesmo registro várias vezes Empty Re: [Resolvido]Gravar o mesmo registro várias vezes

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 7/11/2024, 18:57