Convidado 20/11/2013, 14:10
Vamos lá:
1 - Renomeie na tabela datas o campo Valor para cpValor e o campo Data para cpData, não se deve utiliza palavras reservadas ao Access em nome de campos e objetos
2 - Abra o formulário em modo Design, vá nas propriedades, aba Dados, na fonte de registro cole a sql abaixo:
SELECT datas.ID, datas.cpdata, datas.cpValor, datas.Variação, DatePart("ww",[cpdata],1,1) AS Semana, (([cpValor]*100)/DLookUp("cpValor","Datas","cdbl([cpdata]) < " & CDbl([cpdata]) & ""))-100 AS Porcentagem
FROM datas;
3 - No sub formulário em modo design na caixa texto com a expressão onde exibe a semana acople ao campo Semana, bastando digitar dentro da mesma a palavra semana, no campo onde exibe a variáção coloque: Porcentagem.
O Cálculo para a porcentagem utilizado é este a seguir:
=((Me.txtValor*100)/DPesquisa("cpValor";"Datas";"cdbl([cpdata) < "& cdbl(Me.txtData) & ""))-100
Utilizo uma regra de três simples para pegar o valor total da porcentagem do valor atual referente ao valor anteriorValorAtual * 100 / ValorAnterior
Diminuo a expressão de 100 para conseguir o valor da variação((ValorAtual * 100) / ValorAnterior) -100
Para especificar a qual data utilizar no cálculo para a data anterior eu converto a data em Double pego a imediatamente anterior à data atualDPesquisa("cpValor";"Datas";"cdbl([cpdata) < "& cdbl(Me.txtData) & "")
Cumprimentos.