FORMULA NO CRYSTAL REPORTS

SIDSIL 05/04/2010 17:46:44
#338620
Boa tarde

Preciso pegar o mes e o ano dentro do editor de formulas do Crystal.

Fiz assim mas nao funciona :

if Month ({Alunos.TBCLI_DATANASC}) = Month ({@Data_Inic}) then
{Alunos.TBCLI_DATANASC}
else
.
.

({@Data_Inic}) = Formula que recebe a data via VB no formato DD/MM/YYYY

Acredito que eu tenha que converte-la primeiro para data para depois pegar o mes.Porem verificando as funcoes disponiveis nao cheguei a nenhuma conclusao sobre qual utilizar.

Poderiam me dar uma ajuda.

Obrigado e um Abraço
MADMAX 06/04/2010 17:20:57
#338717
O que vc pode fazer e usar o mid direto ... ja que vc sabe o formato da data ... tentei aqui o month funciona direito .
SIDSIL 06/04/2010 18:44:14
#338722
Poderia me passar a sintaxe que voce usou MADMAX

Eu tentei e nao consegui.


Obrigado
MADMAX 07/04/2010 09:04:55
#338746
SIDSIL o Crystal esta reconhecendo sua formula como Tipo data ??? , se não coloca uma data dela .. tipo CurrentDate ... não se preocupe pois quando vc passar um valor para formula ele escreve por cima ... ai eu ja não tenho certeza pois o Formato de data no crystal pelo menos quando se passa para filtro é yyyy,mm,dd tenta fazer isso passa na data fomatada na formula como a data de hoje ficaria Date(2010,04,07) exemplo.. os formatos de data do crystal Crystal estão abaixo .. se vc quiser pode pegar as constantes que estou passando a declaração abaixo e usar para formatar por exemplo format([Ô]07/03/2010[Ô],DataCrystal) resulta em date(2010,03,07) .

Global Const Hora_Crystal = [Ô][Ô][Ô]time([Ô][Ô]hh[Ô][Ô],[Ô][Ô]nn[Ô][Ô],[Ô][Ô]ss[Ô][Ô])[Ô][Ô][Ô]
Global Const DataCrystal = [Ô][Ô][Ô]date([Ô][Ô]yyyy[Ô][Ô],[Ô][Ô]mm[Ô][Ô],[Ô][Ô]dd[Ô][Ô])[Ô][Ô][Ô]
Global Const DataHoraCrystal = [Ô][Ô][Ô]datetime([Ô][Ô]yyyy[Ô][Ô],[Ô][Ô]mm[Ô][Ô],[Ô][Ô]dd[Ô][Ô],[Ô][Ô]hh[Ô][Ô],[Ô][Ô]nn[Ô][Ô],[Ô][Ô]ss[Ô][Ô])[Ô][Ô][Ô]

Tipo fiz os testes assim

Teste 1 - Ok
if month({SMNOTASAVULSA.SMNOTASAVULSA_DATA_EMISSAO}) = month(CurrentDate) then
[Ô]Entrei
else
[Ô]Entrei False[Ô]

Teste 2
Criei uma Formula @Data Com o conteudo Date(2010,04,07)
e outra para fazer o teste

if month({SMNOTASAVULSA.SMNOTASAVULSA_DATA_EMISSAO}) = month({@Data}) then
[Ô]Entrei true[Ô]
else
[Ô]Entrei False[Ô]






SIDSIL 07/04/2010 10:41:25
#338759
Obrigado por sua aajuda MadMax.

Eu vou tentar sua sugestao.

Na verdade tudo o que eu quero e pegar os aniversariantes dentro de um periodo.Eu digito um periodo de 01/01/2010 a 31/01/2010 por exemplo, dai o Crystal devera exibir todos os aniversariantes desse periodo.O ano em si nao e importante, pois as pessoas fazem aniversario todos os anos, o mais importante seria o periodo do dia e do mes.

Mas esta complicado.

Obrigado e um Abraço
MADMAX 07/04/2010 11:52:09
#338771
Tendi acho que voce pode passar isso direto para o rpt como filtro nos registros por exemplo , no vb vc pega os meses a serem filtrados digamos aniversariantes do mes 01,02,03 .. imaginando que foi selecionado 01/01/2010 a 01/03/2010


dim meses as string
meses = [Ô][Ô]
For i = 1 to datediff([Ô]m[Ô],cdate(01/01/2010),cdate(01/03/2010)
if i = 1 then
meses = format(01/01/2010,[Ô]MM[Ô])
else
meses = meses & iif(meses = [Ô][Ô],[Ô][Ô], [Ô],[Ô]) & dateadd([Ô]m[Ô],i -1,01/01/2010)
endif
next i
lembrando que não testei nada acho que isso ja monta os meses em uma string depois e so usar assim

if meses <> [Ô][Ô] then
Report.SelectionFormula = [Ô] month({Alunos.TBCLI_DATANASC}) in [[Ô] & meses & [Ô]] [Ô]

não testei aqui mais pela logica deve funcionar .. fica simples , sem formula sem nada , somente passando como filtro no relatorio. Assim ficou somente para meses mais se acaso vc queira filtrar os dias , basta fazer o mesmo que com o meses so que com dia e depois passar os meses e dias ....ve te serve pra alguma coisa.
Tópico encerrado , respostas não são mais permitidas