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


3 participantes

    [Resolvido]Inserir Registros - Prestações

    avatar
    varjal
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 34
    Registrado : 03/11/2011

    [Resolvido]Inserir Registros - Prestações Empty [Resolvido]Inserir Registros - Prestações

    Mensagem  varjal 16/11/2012, 17:40

    Olá, Tenho um Banco de Dados simples para controle de despesas. Criei uma tabela "tblDespesas" e um formulário "formDespesas" a partir da tabela. A chave primária é um campo com numeração automática. Cada despesa representa um registro.

    Se eu compro alguma coisa parcelada, insiro cada parcela no sistema (cada parcela é um registro). Atualmente eu inseri um botão que copia um registro ("Duplicar Registro") e cria outro (autonumerando a chave primária).

    Se eu faço uma compra parcelada em 12 vezes (por exemplo), tenho que inserir a primeira parcela, depois copiar o registro 11 vezes (com o botão citado acima) e mudar o mês de vencimento um a um.

    Existem ainda dois campos que indicam a parcela, um dizendo o número da parcela e o outro o total de parcelas (tipo: parcela 1 de 12, parcela 2 de 12 ...). Estes campos também preciso modificar manualmente depois que copio o registro.

    Para que o formulário fique funcional, eu deveria lançar a primeira parcela [incluindo a data de vencimento (uso dd/mm/aaaa), o número da parcela (a primeira será sempre número 1) e o total de parcelas (12 por exemplo)] aí clicaria em um botão e automaticamente seriam inseridas as demais parcelas (até a 12ª, no exemplo), alterando o vencimento para o mesmo dia do mês seguinte e o número da parcela acrescentando 1.

    Em Anexo estou colando um BD access 2007 com a tabela "tblDespesas" o formulário "formDespesas" e mais três tabelas que uso como apoio.

    Grato
    Anexos
    [Resolvido]Inserir Registros - Prestações AttachmentBDDespesas.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1.6 Mb) Baixado 71 vez(es)


    Última edição por varjal em 18/11/2012, 22:24, editado 4 vez(es)
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Inserir Registros - Prestações Empty Re: [Resolvido]Inserir Registros - Prestações

    Mensagem  JPaulo 16/11/2012, 17:55

    Ola seja bem vindo ao fórum;

    Tem de compactar e anexar o banco em .zip



    .................................................................................
    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]Inserir Registros - Prestações Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Inserir Registros - Prestações Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Inserir Registros - Prestações Folder_announce_new Instruções SQL como utilizar...
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Inserir Registros - Prestações Empty Re: [Resolvido]Inserir Registros - Prestações

    Mensagem  Alexandre Neves 16/11/2012, 18:02

    Boa tarde, varjal, e bem-vindo ao fórum
    Estará a tentar carregar arquivo não aceite
    veja a mensagem no formulário do fórum:
    Você pode anexar um ou mais arquivos através do seguinte formulário :
    ( 3g2, 3gp, bmp, doc, docm, docx, gif, jpg, m4a, m4v, mov, mp3, mp4, mpg, pdf, png, pps, ppt, pptm, pptx, swf, tif, txt, wma, wmv, xls, xlsb, xlsm, xlsx, zip )
    Sobre a sua dúvida, aconselho a criar função que tenha por argumentos a quantidade parcelas, o valor e a data da primeira parcela

    Procure, aqui no fórum já se tem quase tudo sobre parcelamentos
    Veja https://www.google.com/search?hl=pt&as_q=&as_oq=parcela&as_sitesearch=maximoaccess.forumeiros.com


    .................................................................................
    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
    varjal
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 34
    Registrado : 03/11/2011

    [Resolvido]Inserir Registros - Prestações Empty Re: [Resolvido]Inserir Registros - Prestações

    Mensagem  varjal 16/11/2012, 19:27

    JPaulo. Eu estava colocando um ".rar" e não estava conseguindo. mudei para ".zip" e deu. Grato

    Alexandre Neves. Eu não sei criar esta função. A verdade é que uso access a bastante tempo e já fiz vários bancos de dados legais, mas domino muito pouco o VB e quase sempre uso os recursos automáticos do próprio access ou copio algum código de algum exemplo pronto. Gostei de exemplo do Via_Vida, vou estudá-lo, mas pelo que vi é bem diferente do meu e tb não consegui chegar na estrutura para poder entendê-lo melhor.

    Agora que consegui postar parte do meu banco de dados, vou aguardar que alguém consiga me dar uma luz.

    Grato
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Inserir Registros - Prestações Empty Re: [Resolvido]Inserir Registros - Prestações

    Mensagem  Alexandre Neves 16/11/2012, 20:08

    varjal,
    Ainda não anexou a bd.
    Informe como tem a tabela onde regista as parcelas


    .................................................................................
    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
    varjal
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 34
    Registrado : 03/11/2011

    [Resolvido]Inserir Registros - Prestações Empty Re: [Resolvido]Inserir Registros - Prestações

    Mensagem  varjal 16/11/2012, 20:16

    Alexandre Menezes.

    Desculpe por não avisar. Eu Editei minha pergunta inicial e anexei o Banco de dados lá.

    Eu não considerei cada compra como um registro e sim cada valor a ser pago (cada parcela).

    Quando faço uma compra, se ele for paga de uma única vez, a compra dá origem a um registro. Se a compra vai ser paga parcelada, cada parcela é um registro. Acho que vendo o Banco de Dados vai dar para entender.

    Grato
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Inserir Registros - Prestações Empty Re: [Resolvido]Inserir Registros - Prestações

    Mensagem  Alexandre Neves 16/11/2012, 20:48

    varjal,
    Aprenda por sebentas ou aqui no fórum
    Melhore a nomenclatura de campos e de controlos
    Para expandir as parcelas, utilize
    Dim I As Integer

    For I = 2 To Parcela_Quantidade
    CurrentDb.Execute "INSERT INTO tblDespesas([Descrição:],[Categoria:],[Data_vencimento:],[Valor:],[Obs:],[Parcela_Número],[Parcela_Quantidade],[Forma de Pagamento:]) VALUES ('" & Descrição & "','" & Categoria & "','" & DateAdd("m", I - 1, Data_Vencimento) & "'," & Valor & ",'" & OBS & "'," & I & "," & Parcela_Quantidade & ",'" & Forma_de_Pagamento & "')"
    Next

    Veja que não tem controlo sobre pressionar de novo o botã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
    varjal
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 34
    Registrado : 03/11/2011

    [Resolvido]Inserir Registros - Prestações Empty Re: [Resolvido]Inserir Registros - Prestações

    Mensagem  varjal 16/11/2012, 22:26

    Estou fazendo progresso...

    copiei o código que vc passou e já entendi um pouco como funciona.

    fiz pequenas alterações no seu código e ele funciona parcialmente: consegui clicar no botão "duplicar registro" e ele incrementou o número da parcela e o mês (ainda deve faltar algum ajuste).

    Meu problema atual é que ao clicar no botão "duplicar registro", a duplicação não está automática e preciso sair do formulário e entrar novamente para ver como ficou... Alguém me orienta como resolver ?

    PS: estou usando o código assim:



    Private Sub Comando44_Click()
    On Error GoTo Err_Comando44_Click

    Dim I As Integer

    For I = I + 1 To Parcela_Número
    CurrentDb.Execute "INSERT INTO tblDespesas([Descrição:],[Categoria:],[Data_vencimento:],[Valor:],[Obs:],[Parcela_Número],[Parcela_Quantidade],[Forma de Pagamento:]) VALUES ('" & Descrição & "','" & Categoria & "','" & DateAdd("m", m + 1, Data_Vencimento) & "'," & Valor & ",'" & OBS & "'," & I & "," & Parcela_Quantidade & ",'" & Forma_de_Pagamento & "')"
    Next

    Exit_Comando44_Click:
    Exit Sub

    Err_Comando44_Click:
    MsgBox Err.Description
    Resume Exit_Comando44_Click

    End Sub



    Grato
    avatar
    varjal
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 34
    Registrado : 03/11/2011

    [Resolvido]Inserir Registros - Prestações Empty Re: [Resolvido]Inserir Registros - Prestações

    Mensagem  varjal 18/11/2012, 12:57

    e aí pessoal, nada?

    Quando clico no botão "duplicar registro" com o novo código (que ainda precisa de algum ajuste, mas sei que não é nada demais) Preciso sair e entrar no formulário para que o registro duplicado apareça... como faço para que ele aparecer duplicado assim que eu clicar no botão?

    Grato
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Inserir Registros - Prestações Empty Re: [Resolvido]Inserir Registros - Prestações

    Mensagem  Alexandre Neves 18/11/2012, 13:12

    Boa tarde, varjal
    Depois do código que lhe indiquei, coloque Me.Requery


    .................................................................................
    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
    varjal
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 34
    Registrado : 03/11/2011

    [Resolvido]Inserir Registros - Prestações Empty Re: [Resolvido]Inserir Registros - Prestações

    Mensagem  varjal 18/11/2012, 14:28

    Alexandre Neves, obrigado pela ajuda. Até aqui funcionou (ainda preciso fazer pequenos ajustes)

    Pensei que poderíamos fazer algo melhor:

    Considere que comprei algo parcelado em 12 vezes iguais. As únicas informações que mudariam de uma parcela para outra seriam o vencimento (adicionando 1 mês) e o número da parcela (adicionando 1). Gostaria que isso se repetisse até que chegássemos à última parcela. Não sei como escrever o código mas a idéia seria:

    q = quantidade de prestações
    I= Número da prestação
    m = Mês da primeira parcela

    Enquanto I <= q faça (o valor de I deve variar, partido de 1 até chegar a q)

    Para I = I + 1
    CurrentDb.Execute "INSERT INTO tblDespesas([Descrição:],[Categoria:],[Data_vencimento:],[Valor:],[Obs:],[Parcela_Número],[Parcela_Quantidade],[Forma de Pagamento:]) VALUES ('" & Descrição & "','" & Categoria & "','" & DateAdd("m", m + 1, Data_Vencimento) & "'," & Valor & ",'" & OBS & "'," & I + 1 & "," & Parcela_Quantidade & ",'" & Forma_de_Pagamento & "')"
    Next

    A cada "giro" ele insere uma parcela...

    Clicando no botão apenas uma vez, vão ser inseridas todas as parcelas.

    Grato
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Inserir Registros - Prestações Empty Re: [Resolvido]Inserir Registros - Prestações

    Mensagem  Alexandre Neves 18/11/2012, 14:50

    De facto, errei ao escrever m (queria escrever i) no argumento da função DateAdd, mas o código fará o que pretende
    Neste código, o campo Data_vencimento: evolui acrescentando, em cada registo, um mês à data anterior. A primeira data é a data do controlo Data_Vencimento mais um mês
    O campo Parcela_Número evolui acrescentando, em cada registo, uma unidade ao número anterior. O primeiro número é dois

    For I = I + 1 To Parcela_Número
    CurrentDb.Execute "INSERT INTO tblDespesas([Descrição:],[Categoria:],[Data_vencimento:],[Valor:],[Obs:],[Parcela_Número],[Parcela_Quantidade],[Forma de Pagamento:]) VALUES ('" & Descrição & "','" & Categoria & "','" & DateAdd("m", i + 1, Data_Vencimento) & "'," & Valor & ",'" & OBS & "'," & I & "," & Parcela_Quantidade & ",'" & Forma_de_Pagamento & "')"
    Next

    Não é isso que acontece?


    .................................................................................
    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
    varjal
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 34
    Registrado : 03/11/2011

    [Resolvido]Inserir Registros - Prestações Empty Re: [Resolvido]Inserir Registros - Prestações

    Mensagem  varjal 18/11/2012, 16:11

    Alexandre Neves,

    Está quase funcionando, mas ainda tem erro:

    Usando seu código, o mês incrementou "2 meses" e o número da parcela não foi incrementado.

    alterei para:

    For I = I + 1 To Parcela_Número
    CurrentDb.Execute "INSERT INTO tblDespesas([Descrição:],[Categoria:],[Data_vencimento:],[Valor:],[Obs:],[Parcela_Número],[Parcela_Quantidade],[Forma de Pagamento:]) VALUES ('" & Descrição & "','" & Categoria & "','" & DateAdd("m", I, Data_Vencimento) & "'," & Valor & ",'" & OBS & "'," & I + 1 & "," & Parcela_Quantidade & ",'" & Forma_de_Pagamento & "')"
    Next

    Com a alteração, funciona apenas se eu lançar a parcela "1" e mandar gerar a "2". seu eu clicar na parcela "2" para gerar a "3" estão aparecendo duas novas parcelas (uma delas com apenas o vencimento incrementado 1 mês e a outro incrementa o número da parcela e mais uma vez o vencimento).

    Estou anexando parte do Banco de dados. O código está no botão "duplicar registro" do formulário formDespesasNOVO. No formDespesasANTIGO, o botão "duplicar registro" gera outro identico, mudando apenas a chave primária.

    Outra coisa, se você observar o Banco de dados que postei inicalmente, quando mando "duplicar registro" ele gera outro igual, mudando apenas a chave primária, e fica mostrando na tela o registro que foi gerado. No banco de dados que estou anexando agora, usando o código que você está criando, depois de "duplicar registro" ele vai para o primeiro registro existente, o que dificultaria "duplicar registro" novamente para inserir a próxima parcela.

    Grato
    Anexos
    [Resolvido]Inserir Registros - Prestações AttachmentDespesas.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1.8 Mb) Baixado 70 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Inserir Registros - Prestações Empty Re: [Resolvido]Inserir Registros - Prestações

    Mensagem  Alexandre Neves 18/11/2012, 16:19

    Utilize
    For I = 2 To Parcela_Quantidade
    CurrentDb.Execute "INSERT INTO tblDespesas([Descrição:],[Categoria:],[Data_vencimento:],[Valor:],[Obs:],[Parcela_Número],[Parcela_Quantidade],[Forma de Pagamento:]) VALUES ('" & Descrição & "','" & Categoria & "','" & DateAdd("m", I, Data_Vencimento) & "'," & Valor & ",'" & OBS & "'," & I & "," & Parcela_Quantidade & ",'" & Forma_de_Pagamento & "')"
    Next


    .................................................................................
    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
    varjal
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 34
    Registrado : 03/11/2011

    [Resolvido]Inserir Registros - Prestações Empty Re: [Resolvido]Inserir Registros - Prestações

    Mensagem  varjal 18/11/2012, 16:32

    PERFEITO....

    Fiz um pequeno ajuste no seu código: ele incrementou o vencimento da pardcela "2" em dois meses, então troquei I por I-1 e deu certo.

    Eu não poderia querer nada mais. Eu poderia ter ficado satisfeito com outras soluções, mas não esperei que pudesse ficar tão bom.

    Fico muito agradecido. Sei que meu banco de dados é "amador", mas daqui uns dias, quando terminar os últimos ajustes, vou deixá-lo a disposição no banco de exemplos.

    Resolvido
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Inserir Registros - Prestações Empty Re: [Resolvido]Inserir Registros - Prestações

    Mensagem  Alexandre Neves 18/11/2012, 16:33

    [Resolvido]Inserir Registros - Prestações MaximoAccess%20ResolvidoMarcado


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

    Conteúdo patrocinado


    [Resolvido]Inserir Registros - Prestações Empty Re: [Resolvido]Inserir Registros - Prestações

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 25/11/2024, 06:09