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]Preencher meses seguintes com valor ultima compra

    avatar
    ilvecchio
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 137
    Registrado : 16/11/2012

    [Resolvido]Preencher meses seguintes com valor ultima compra Empty [Resolvido]Preencher meses seguintes com valor ultima compra

    Mensagem  ilvecchio 16/6/2016, 13:03

    Buenas!
    Tenho a seguinte tabela, com os últimos quatro anos, e todos os meses já preenchidos, para um grupo especial de clientes. Nessa Tabela são carregados os valores mensais da compra desses clientes. Até aqui tudo bem. Agora preciso preencher os demais meses com o mesmo valor da compra imediatamente anterior. A tabela é esta:
    CodCliente, ValorCompra, Seq (sequencial de registros por cliente - 4 anos = 48 registros ), ano da compra, mês da compra, AnoMes da compra.

    CodCliente ValorCompra Seq AnoCompra MesCompra AnoMesCompra
    12345.................. 0............. 1........ 2011.................... 1.......... 201101
    12345.................. 0............. 2........ 2011.................... 2.......... 201102
    12345.................. 100.......... 3........ 2011.................... 3.......... 201103
    12345.................. 0............. 4........ 2011.................... 4.......... 201104
    12345.................. 0............. 5........ 2011.................... 5.......... 201105
    12345.................. 0............. 6........ 2011.................... 6.......... 201106
    12345.................. 0............. 7........ 2011.................... 7.......... 201107
    12345.................. 0............. 8........ 2011.................... 8.......... 201108
    12345.................. 0............. 9........ 2011.................... 9.......... 201109
    12345.................. 80.......... 10........ 2011.................. 10.......... 201110
    12345.................. 0........... 11........ 2011................... 11.......... 201111
    12345.................. 0........... 12........ 2011................... 12.......... 201112
    12345.................. 0........... 13........ 2012.................... 1.......... 201201
    12345.................. 0........... 14........ 2012.................... 2.......... 201202
    12345.................. 0........... 15........ 2012.................... 3.......... 201203
    12345.................. 0........... 16........ 2012.................... 4.......... 201204
    ---.................. ---............. --........ ---.................... ----.......... -------
    12345.................. 0............. 48........ 2014.................... 12.......... 201412
    22222.................. 150......... 1........ 2011.................... 1.......... 201101
    22222.................. 0............. 2........ 2011.................... 2.......... 201102
    22222.................. 0............. 3........ 2011.................... 3.......... 201103
    22222.................. 130.......... 4........ 2011.................... 4.......... 201104
    22222.................. 0............. 5........ 2011.................... 5.......... 201105
    22222.................. 0............. 6........ 2011.................... 6.......... 201106
    22222.................. 0............. 7........ 2011.................... 7.......... 201107
    22222.................. 0............. 8........ 2011.................... 8.......... 201108
    ---.................. ---............. --........ ---.................... ----.......... -------
    22222.................. 0............. 10........ 2011.................... 10.......... 201110
    22222.................. 0............. 11........ 2011.................... 11.......... 201111
    22222.................. 0............. 12........ 2011.................... 12.......... 201112
    22222.................. 0............. 13........ 2012.................... 1.......... 201201
    22222.................. 0............. 14........ 2012.................... 2.......... 201202
    22222.................. 0............. 15........ 2012.................... 3.......... 201203
    22222.................. 0............. 16........ 2012.................... 4.......... 201204
    22222.................. 0............. 17........ 2012.................... 5.......... 201205
    22222.................. 0............. 45........ 2014.................... 9.......... 201409
    22222.................. 0............. 46........ 2014.................... 10.......... 201410
    22222.................. 0............. 47........ 2014.................... 11.......... 201411
    22222.................. 0............. 48........ 2014.................... 12.......... 201412


    Imaginei um código VBA que ao iniciar a leitura da tabela gravasse numa variável o primeiro ValorCompra (zero ou não), e preencheria o registro com esse valor até encontrar um ValorCompra maior que zero (para o mesmo CodCliente). Quando encontrasse o próximo ValorCompra, gravaria novamente o valor na variável e o repetiria para os meses seguintes até o próximo ValorCompra diferente, ou próximo CodCliente. E assim, sucessivamente, até o final da tabela.

    Parece simples. Mas não consegui fazer.
    Então, se alguém puder me ajudar ....
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Preencher meses seguintes com valor ultima compra Empty Re: [Resolvido]Preencher meses seguintes com valor ultima compra

    Mensagem  Alexandre Neves 17/6/2016, 10:23

    Bom dia,
    Mande bd com pequeno exemplo com tabela com dados representativos


    .................................................................................
    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
    ilvecchio
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 137
    Registrado : 16/11/2012

    [Resolvido]Preencher meses seguintes com valor ultima compra Empty Re: [Resolvido]Preencher meses seguintes com valor ultima compra

    Mensagem  ilvecchio 17/6/2016, 14:41

    Buenas!

    Obrigado.

    Anexei um banco Access 2003. Nele tem a tabela TabelaClientesCompra, com o campo ValorCompra, a ser atualizado.

    Vamos lá. O cliente 11111 teve a primeira compra no ano 2011 mês 03, no ValorCompra de 100. Esse valor quero repetir para os meses 04, 05 e 06. No mês 07 já tem outra compra, de 150, que será repetida para os meses restantes do ano 2011 e nos meses 01 e 02 do ano 2012, pois no mês 03, há um novo valor de compra.

    Quando iniciar um novo cliente, o processo se repete.
    Anexos
    [Resolvido]Preencher meses seguintes com valor ultima compra Attachmentbd1.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (9 Kb) Baixado 5 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Preencher meses seguintes com valor ultima compra Empty Re: [Resolvido]Preencher meses seguintes com valor ultima compra

    Mensagem  Alexandre Neves 17/6/2016, 16:50

    Tenha um módulo ou crie Cole esta rotina e execute-a
    Código:
    Sub PreencheMesesEmBranco()
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        '  código criado por Alexandre Neves, do Fórum MaximoAccess                                                '
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Dim Rst As DAO.Recordset, strCodCliente As String, sngValorCompra As Single
       
        Set Rst = CurrentDb.OpenRecordset("SELECT * FROM TabelaClientesCompra ORDER BY CodCliente,AnoCompra,MesCompra;")
       
        Do While Not Rst.EOF
            If Rst("CodCliente") = strCodCliente Then
                If Rst("ValorCompra") > 0 Then
                    sngValorCompra = Rst("ValorCompra")
                ElseIf sngValorCompra > 0 Then
                    Rst.Edit
                    Rst("ValorCompra") = sngValorCompra
                    Rst.Update
                End If
            Else
                strCodCliente = Rst("CodCliente")
                If Rst("ValorCompra") > 0 Then sngValorCompra = Rst("ValorCompra")
            End If
            Rst.MoveNext
        Loop
    End Sub


    .................................................................................
    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
    ilvecchio
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 137
    Registrado : 16/11/2012

    [Resolvido]Preencher meses seguintes com valor ultima compra Empty Re: [Resolvido]Preencher meses seguintes com valor ultima compra

    Mensagem  ilvecchio 17/6/2016, 21:37

    Buenas!
    Alexandre, funcionou com a tabela que te enviei.
    Quando testei com a tabela real, na minha base de dados, não preencheu corretamente. A tabela real tem 150 mil registros. O código "se perdeu".
    Para tirar a prova dos nove, reduzi minha tabela para a quantidade de registros da tabela que te mandei, e funcionou.
    Se quiser, mando a tabela real para confirmares.

    Pode ser?
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Preencher meses seguintes com valor ultima compra Empty Re: [Resolvido]Preencher meses seguintes com valor ultima compra

    Mensagem  Alexandre Neves 17/6/2016, 23:05

    pode


    .................................................................................
    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
    ilvecchio
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 137
    Registrado : 16/11/2012

    [Resolvido]Preencher meses seguintes com valor ultima compra Empty Re: [Resolvido]Preencher meses seguintes com valor ultima compra

    Mensagem  ilvecchio 20/6/2016, 12:52

    Anexo.
    Pitaco de quem não sabe nada: ajudaria usar o campo SeqCliente, talvez num for ... next (For SeqCliente = 1 to 48 ) ?
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Preencher meses seguintes com valor ultima compra Empty Re: [Resolvido]Preencher meses seguintes com valor ultima compra

    Mensagem  Alexandre Neves 21/6/2016, 09:02

    Bom dia,
    Código:
    Sub PreencheMesesEmBranco()
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        '  código criado por Alexandre Neves, do Fórum MaximoAccess                                                '
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Dim Rst As DAO.Recordset, strCodCliente As String, dblValorCompra As Double
       
        Set Rst = CurrentDb.OpenRecordset("SELECT * FROM TabelaClientesCompra ORDER BY CodCliente,AnoCompra,MesCompra;")
        Rst.MoveFirst
       
        Do While Not Rst.EOF
            If Rst("CodCliente") = strCodCliente Then
                If Rst("ValorCompra") > 0 Then
                    dblValorCompra = Rst("ValorCompra")
                ElseIf dblValorCompra > 0 Then
                    Rst.Edit
                    Rst("ValorCompra") = dblValorCompra
                    Rst.Update
                End If
            Else
                strCodCliente = Rst("CodCliente")
                dblValorCompra = 0
                If Rst("ValorCompra") > 0 Then dblValorCompra = Rst("ValorCompra")
            End If
            Rst.MoveNext
        Loop
        Set Rst = Nothing
    End Sub


    .................................................................................
    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
    ilvecchio
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 137
    Registrado : 16/11/2012

    [Resolvido]Preencher meses seguintes com valor ultima compra Empty Re: [Resolvido]Preencher meses seguintes com valor ultima compra

    Mensagem  ilvecchio 22/6/2016, 19:57

    Buenas!
    Alexandre, o Grande!!!
    Fantástico, tudo certinho.

    Obrigado.

    Conteúdo patrocinado


    [Resolvido]Preencher meses seguintes com valor ultima compra Empty Re: [Resolvido]Preencher meses seguintes com valor ultima compra

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 21:20