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]Atualizar valores com base em índice anual

    avatar
    JRodrigues
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 48
    Registrado : 29/10/2015

    [Resolvido]Atualizar valores com base em índice anual Empty [Resolvido]Atualizar valores com base em índice anual

    Mensagem  JRodrigues 17/12/2015, 18:15

    Olá.
    Tenho uma tabela que registra valores de imóveis e a data da inclusão do registro.
    Preciso criar uma consulta em que o valor original seja corrigido por um índice anual. Como fazer isso?
    Anexo o BD.
    Grato.
    Anexos
    [Resolvido]Atualizar valores com base em índice anual AttachmentBD1.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (119 Kb) Baixado 6 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]Atualizar valores com base em índice anual Empty Re: [Resolvido]Atualizar valores com base em índice anual

    Mensagem  Alexandre Neves 17/12/2015, 22:46

    Boa noite, e bem-vindo
    Crie um módulo e cole
    Function ValorCalculado(DataInclusao As Date, ValorInicial As Double) As Double
    Dim Rst As DAO.Recordset
    Set Rst = CurrentDb.OpenRecordset("SELECT * FROM Indice_Atualizacao")
    ValorCalculado = 0
    Rst.MoveFirst
    Do While Not Rst.EOF
    If Year(DataInclusao) <= Int(Rst("Ano")) Then
    If ValorCalculado = 0 Then
    ValorCalculado = 1 + (Rst("Valor") / 100)
    Else
    ValorCalculado = ValorCalculado * (1 + (Rst("Valor") / 100))
    End If
    Debug.Print ValorInicial & "|" & Rst("valor") & "|" & 1 + (Rst("Valor") / 100) & "|" & ValorInicial * ValorCalculado
    End If
    Rst.MoveNext
    Loop
    ValorCalculado = ValorInicial * ValorCalculado
    Debug.Print ValorInicial & ">" & ValorCalculado

    Set Rst = Nothing
    End Function
    Crie consulta com o SQL
    SELECT ValorCalculado(Data_Inc,Valor_Imovel), * FROM Banco_Pesquisa;


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


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 48
    Registrado : 29/10/2015

    [Resolvido]Atualizar valores com base em índice anual Empty Atualizar valores com base em índice anual

    Mensagem  JRodrigues 18/12/2015, 13:04

    Prezado Alexandre
    Muito obrigado pela atenção e retorno.
    O cálculo funcionou, porém o resultado não foi o esperado.
    Vou exemplificar:
    Valor de 190.000,00 incluído em 2014.
    O cálculo necessário é 190.000 dividido pelo índice 2014 (14,5459) vezes o índice 2015 (15,4856).
    O resultado dessa operação é 202.274,45.
    O cálculo através da função que você mandou deu 251.339,64.
    Mais uma vez agradeço.
    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]Atualizar valores com base em índice anual Empty Re: [Resolvido]Atualizar valores com base em índice anual

    Mensagem  Alexandre Neves 18/12/2015, 17:52

    Boa tarde,
    tem de explicar a regra para todas as situações.
    Em 2016, como é calculado? e em 2017?


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


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 48
    Registrado : 29/10/2015

    [Resolvido]Atualizar valores com base em índice anual Empty Atualizar valores com base em índice anual

    Mensagem  JRodrigues 18/12/2015, 18:51

    Boa tarde!
    O cálculo deve ser o valor original dividido pelo índice do ano de inclusão e multiplicado pelo ano atual (os índices são atualizados anualmente. Ainda não tenho o índice 2016, por exemplo).
    No exemplo da minha resposta anterior, o cálculo a partir de 01/01/2016 deve ser 190.000 dividido pelo índice 2014 (14,5459 - que é o ano de inclusão) vezes o índice 2016 (este índice não tenho ainda).
    Não sei se consegui explicar direito...
    Muito obrigado.
    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]Atualizar valores com base em índice anual Empty Re: [Resolvido]Atualizar valores com base em índice anual

    Mensagem  Alexandre Neves 19/12/2015, 09:28

    Bom dia,
    Utilize
    Function ValorCalculado(DataInclusao As Date, ValorInicial As Double) As Double
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' código criado por Alexandre Neves, do Fórum MaximoAccess '
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Dim Rst As DAO.Recordset
    Set Rst = CurrentDb.OpenRecordset("SELECT * FROM Indice_Atualizacao")
    ValorCalculado = 0
    Rst.MoveFirst
    Do While Not Rst.EOF
    If Year(DataInclusao) = Int(Rst("Ano")) Then
    ValorCalculado = ValorInicial / Rst("Valor")
    ElseIf Year(Date) = Int(Rst("Ano")) Then
    ValorCalculado = ValorCalculado * Rst("Valor")
    End If
    Rst.MoveNext
    Loop
    ValorCalculado = Format(ValorCalculado, "#.00")

    Set Rst = Nothing
    End Function


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


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 48
    Registrado : 29/10/2015

    [Resolvido]Atualizar valores com base em índice anual Empty Atualizar valores com base em índice anual

    Mensagem  JRodrigues 22/12/2015, 12:55

    Prezado
    O cálculo para o ano anterior (2014) funcionou conforme o esperado.
    Porém, quando o ano da data de inclusão é igual ao ano atual ocorre erro no cálculo.
    Quando o ano da data de inclusão for igual ao ano anual não deve haver atualização de valor.
    Mais uma vez agradeço a atenção.
    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]Atualizar valores com base em índice anual Empty Re: [Resolvido]Atualizar valores com base em índice anual

    Mensagem  Alexandre Neves 22/12/2015, 16:23

    Boa tarde,
    Será
    Function ValorCalculado(DataInclusao As Date, ValorInicial As Double) As Double
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' código criado por Alexandre Neves, do Fórum MaximoAccess '
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Dim Rst As DAO.Recordset
    Set Rst = CurrentDb.OpenRecordset("SELECT * FROM Indice_Atualizacao")
    ValorCalculado = 0
    Rst.MoveFirst
    Do While Not Rst.EOF
    If Year(DataInclusao) = Int(Rst("Ano")) And Int(Rst("Ano")) <> Year(Date) Then
    ValorCalculado = ValorInicial / Rst("Valor")
    ElseIf Year(Date) = Int(Rst("Ano")) Then
    ValorCalculado = ValorCalculado * Rst("Valor")
    End If
    Rst.MoveNext
    Loop
    ValorCalculado = Format(ValorCalculado, "#.00")

    Set Rst = Nothing
    End Function


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


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 48
    Registrado : 29/10/2015

    [Resolvido]Atualizar valores com base em índice anual Empty Atualizar valores com base em índice anual

    Mensagem  JRodrigues 22/12/2015, 17:35

    Mestre
    Ainda nos casos em que o ano da data de inclusão é igual ao ano atual, no momento o resultado da consulta está aparecendo 0.
    Tem como retornar o valor original?
    Grato.
    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]Atualizar valores com base em índice anual Empty Re: [Resolvido]Atualizar valores com base em índice anual

    Mensagem  Alexandre Neves 22/12/2015, 17:55

    Function ValorCalculado(DataInclusao As Date, ValorInicial As Double) As Double
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' código criado por Alexandre Neves, do Fórum MaximoAccess '
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Dim Rst As DAO.Recordset

    If Year(DataInclusao) = Year(Date) Then
    ValorCalculado = ValorInicial
    Else
    Set Rst = CurrentDb.OpenRecordset("SELECT * FROM Indice_Atualizacao")
    Do While Not Rst.EOF
    If Year(DataInclusao) = Int(Rst("Ano")) Then
    ValorCalculado = ValorInicial / Rst("Valor")
    ElseIf Year(Date) = Int(Rst("Ano")) Then
    ValorCalculado = ValorCalculado * Rst("Valor")
    End If
    Rst.MoveNext
    Loop
    End If
    ValorCalculado = Format(ValorCalculado, "#.00")

    Set Rst = Nothing
    End Function


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


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 48
    Registrado : 29/10/2015

    [Resolvido]Atualizar valores com base em índice anual Empty Atualizar valores com base em índice anual

    Mensagem  JRodrigues 22/12/2015, 18:09

    Prezado
    Perfeito.
    Era isso mesmo.
    Muito obrigado!!
    avatar
    JRodrigues
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 48
    Registrado : 29/10/2015

    [Resolvido]Atualizar valores com base em índice anual Empty Re: [Resolvido]Atualizar valores com base em índice anual

    Mensagem  JRodrigues 22/12/2015, 18:10

    Very Happy

    Conteúdo patrocinado


    [Resolvido]Atualizar valores com base em índice anual Empty Re: [Resolvido]Atualizar valores com base em índice anual

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 07:09