Dica do amigo André R. Fernandes.
Vejam a página "Models", tem muito material praticamente pronto para uso!
http://www.databaseanswers.org/index.htm
;-)
Eventualmente dicas sobre outros programas, Windows e hardware.
quarta-feira, 19 de novembro de 2014
terça-feira, 18 de novembro de 2014
Como obter o último dia do mês
Dando continuidade na dica anterior... esta é velha, mas vou deixar registrado aqui, caso algum visitante esteja procurando.
Para obter o ultimo dia do mês por programação:
- Basta pegar o primeiro dia do mês seguinte menos um dia!
- Como definir se um ano é bissexto ou não?
Basta dividir o ano por 4 e verificar se o resto da divisão é zero ou não.
Se for zero, o ano é bissexto!
No exemplo do Excel abaixo, 2016 será um ano bissexto.
;-)
Atualização de valores - exemplo com IGP-M no VBA do Access
Olá!
Há tempos não publico uma nova dica... então dando continuidade, vai um código para atualizar valores pelo IGP-M (índice geral de preços - mercado).
Antes de mais nada, vale levar em consideração alguns aspectos importantes desta atualização (o cálculo em si é simples):
- Embora o IGP-M seja publicado sempre no final do mês, eu coloquei na minha tabela o primeiro dia apenas para facilitar o SELECT. Poderia criar uma função para entrar sempre com o último dia do mês que é o mais usual nestes casos, foi só uma opção mesmo;
- No site da FVG - http://fgv.br é difícil encontrar as tabelas de índices, geralmente estão em arquivos PDF. No site do Debit é mais fácil e tem uma URL fixa: https://www.debit.com.br/consulta30.php?&indice=igpm;
- Cuidado com as variações negativas: contratos de aluguel por exemplo, costumam ter cláusulas do tipo "correção pela variação positiva do IGP-M" o que equivale a dizer que, caso o índice seja negativo, não haverá redução do valor atualizado, o que pelo cálculo ocorre. Nos meses onde a variação é negativa, o valor "atualizado" é simplesmente mantido. Muito cuidado nesta questão;
- Para conferir os cálculos utilize a calculadora do cidadão no site do Banco Central: https://www3.bcb.gov.br/CALCIDADAO/publico/exibirFormCorrecaoValores.do?method=exibirFormCorrecaoValores
- Como sempre, não esqueçam de marcar a referência Microsoft Activex Data Objects (a versão mais recente que tiver, eu utilizo a 2.8)
Bem, abaixo segue o código e uma imagem da minha tabela para melhor entendimento.
;-)
Há tempos não publico uma nova dica... então dando continuidade, vai um código para atualizar valores pelo IGP-M (índice geral de preços - mercado).
Antes de mais nada, vale levar em consideração alguns aspectos importantes desta atualização (o cálculo em si é simples):
- Embora o IGP-M seja publicado sempre no final do mês, eu coloquei na minha tabela o primeiro dia apenas para facilitar o SELECT. Poderia criar uma função para entrar sempre com o último dia do mês que é o mais usual nestes casos, foi só uma opção mesmo;
- No site da FVG - http://fgv.br é difícil encontrar as tabelas de índices, geralmente estão em arquivos PDF. No site do Debit é mais fácil e tem uma URL fixa: https://www.debit.com.br/consulta30.php?&indice=igpm;
- Cuidado com as variações negativas: contratos de aluguel por exemplo, costumam ter cláusulas do tipo "correção pela variação positiva do IGP-M" o que equivale a dizer que, caso o índice seja negativo, não haverá redução do valor atualizado, o que pelo cálculo ocorre. Nos meses onde a variação é negativa, o valor "atualizado" é simplesmente mantido. Muito cuidado nesta questão;
- Para conferir os cálculos utilize a calculadora do cidadão no site do Banco Central: https://www3.bcb.gov.br/CALCIDADAO/publico/exibirFormCorrecaoValores.do?method=exibirFormCorrecaoValores
- Como sempre, não esqueçam de marcar a referência Microsoft Activex Data Objects (a versão mais recente que tiver, eu utilizo a 2.8)
Bem, abaixo segue o código e uma imagem da minha tabela para melhor entendimento.
;-)
Option Compare Database
Option Explicit
Dim rst As ADODB.Recordset
Dim ssql As String
Dim acumulador As Double
Dim i As Integer
Public Function Atualiza_IGPM(MesInicio As Integer, _
AnoInicio As Integer, _
MesFim As Integer, _
AnoFim As Integer, _
valor As Double) As Double
ssql = "SELECT * FROM tabela1 WHERE "
ssql = ssql & "DataIndice >= #" & MesInicio & "/1/" & AnoInicio & "#"
ssql = ssql & "ORDER BY DataIndice"
Set rst = New ADODB.Recordset
rst.Open ssql, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rst.MoveFirst
'Primeiro índice
acumulador = 0
acumulador = (rst!indice / 100) + 1
rst.MoveNext
Do While Not rst.EOF
'Acumular taxas
acumulador = acumulador * ((rst!indice / 100) + 1)
If rst!mes = MesFim And rst!ano = AnoFim Then
Exit Do
Else
rst.MoveNext
End If
Loop
Atualiza_IGPM = Round(valor * ((acumulador - 1) * 100), 5)
rst.Close
Set rst = Nothing
End Function
Assinar:
Comentários (Atom)
Pesquisar este blog
Arquivo do blog
Quem sou eu
- Kazu
- Administrador de Empresas/Técnico em Processamento de Dados. Microsoft Office User Specialist - Excel Proficient. Pós-graduado em Business Intelligence.