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:
Postagens (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.