MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Multiplicacao de valores no mesmo campo

    Compartilhe

    rafamaga
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 26/04/2012

    Multiplicacao de valores no mesmo campo

    Mensagem  rafamaga em 13/10/2016, 21:46

    Eu utilizo o ACCESS2013  e gostaria de uma ajuda.

    Tenho um consulta com os campos "matrícula", "competencia" (ano e mês:AAAAMM) e o "fator de acumulação" (matemática financeira) no seguinte formato:


    Matrícula   ;     Competencia  ;     Fator
    1         ;            201601       ;     1,0123
    1         ;            201602       ;     1,0345
    1         ;            201603       ;     1,0678
    1         ;            201604       ;     1,0789
    1         ;            201605       ;     1,0456
    2         ;            201602       ;     1,0234
    2         ;            201603       ;     1,0578
    2         ;            201604       ;     1,0312
    (...)

    (OBS: são mais de 100 competências e mais de 1000 matrículas)

    O que eu gostaria era de fazer uma nova consulta, com agrupamento de matrícula, multiplicando os fatores das competências que eu determinar em uma consulta e apresentar  resultado como campo da consulta.

    Por exemplo, eu posso querer, agrupado por matrícula, qual seria a correção para o período de fevereiro a abril de 2016, resultando em uma consulta desta forma:
    Matrícula        Fator Acumulado
    1                    Resultado da fórmula: (1,0345 * 1,0678 * 1,0789)
    2                    Resultado da fórmula: (1,0234 * 1,0578 * 1,0312)  

    Dúvidas:
    1) Tem como fazer isto em forma de consulta? De que forma?

    2) Caso não tenha como fazer como consulta, tem como fazer em VBA? Aguem tem algum modelo para facilitar?

    Obrigado.
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5580
    Registrado : 15/03/2013

    Re: Multiplicacao de valores no mesmo campo

    Mensagem  ahteixeira em 14/10/2016, 18:26

    Olá, será melhor postar base de dados com tabela e consulta que tem.
    De preferência com os dados que descreveu.
    Assim fica mais fácil para qualquer membro poder ajudar.
    Abraço

    rafamaga
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 26/04/2012

    Banco de dados exemplo

    Mensagem  rafamaga em 17/10/2016, 13:47

    Bom dia!

    Segue o banco de dados.

    A consulta tem um campo multiplicacao que seria a expressão que estou perguntando.

    Muito obrigado a todos! Boa semana.
    Anexos
    ComoMultiplicar.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (86 Kb) Baixado 11 vez(es)
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5580
    Registrado : 15/03/2013

    Re: Multiplicacao de valores no mesmo campo

    Mensagem  ahteixeira em 17/10/2016, 16:51

    Olá Rafael, veja se é o que pretende.
    Esta técnica, perde a performance da base de dados, mas obtem o pretendido.

    Fiz um formulario para colocar as datas, pois é necessário na Consulta e no código VBA
    O código da função é esta:
    Código:
    Public Function fncAgrupaFator(dblMatricula As String) As Double
    'Alvaro Teixeira (ahteixeira) - 2016 para MaximoAccess
    Dim rs As DAO.Recordset
    Dim strSql As String
    Dim dblFator As Double

    strSql = "SELECT * FROM RentPorMatricula WHERE Matricula = " & dblMatricula & " AND ANOMes >= " & Forms!frmConsulta!dtInicial & " AND ANOMes <= " & Forms!frmConsulta!dtFinal & ";"

    Set rs = CurrentDb.OpenRecordset(strSql,

       Do While Not rs.EOF
           If rs.RecordCount = 1 Then
              dblFator = rs!FatorAcumulacao
           Else
               dblFator = dblFator * rs!FatorAcumulacao
           End If
           rs.MoveNext
       Loop

    fncAgrupaFator = dblFator

    rs.Close
    Set rs = Nothing
    End Function

    Como o exemplo pode servir para outros membros, coloquei no repositório de exemplos.
    [Você precisa estar registrado e conectado para ver este link.]
    Baixe lá o ficheiro e teste.
    Abraço

    rafamaga
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 26/04/2012

    teste das função

    Mensagem  rafamaga em 17/10/2016, 18:13

    Muito obrigado pela resposta!

    O formulário roda mas não consigo copiar os resultados para comparar se estão corretos, dá erro ‘2450’, a consulta não fecha, abre o depurador e não consigo fazer nada.
    Algumas observações também merecem ser feitas, mas nada que diminua o excelente trabalho feito.

    1 - Realmente, perde um pouco da dinâmica/perfomance do banco de dados.
    2 – Tem como eu chamar a função “fncAgrupaFator” através da consulta e armazenar o valor em cada registro sem precisar rodar o formulário? Isto manteria a dinâmica da consulta.

    3 – O código colado no post está com erro de digitação onde lê-se:
    Set rs = CurrentDb.OpenRecordset(strSql,
    Deveria ser:
    Set rs = CurrentDb.OpenRecordset(strSql,Cool
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5580
    Registrado : 15/03/2013

    Re: Multiplicacao de valores no mesmo campo

    Mensagem  ahteixeira em 17/10/2016, 20:51

    Olá Rafael,
    Estava subreposição, já retirei.
    Estou a minimizar, assim já pode copiar.
    Também adicionei uma consulta criar tabela.
    Se pretende retirar o form, tem que passar as variaveis (datas limite) para a consulta e codigo.

    Eu pessoalmente não gravava os valores, calculava quando necessario, até pela questão dos limites das datas.
    Agora se for um volume grande de dados, considere não processar osa dados todos de uma só vez.
    Fica a sugestão.
    Baixe de novo o exemplo.
    Abraço

    rafamaga
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 7
    Registrado : 26/04/2012

    Realizando testes...

    Mensagem  rafamaga em 20/10/2016, 12:01

    Estou realizando testes no banco de dados original, mas novamente muito obrigado.....
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5580
    Registrado : 15/03/2013

    Re: Multiplicacao de valores no mesmo campo

    Mensagem  ahteixeira em 31/3/2017, 23:50

    Olá Rafael,
    Como ficou a situação.
    Os.utilizadores do forum merecem e agradecem o retorno.
    Abraço

      Data/hora atual: 14/11/2018, 11:52