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
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