FORMULA NO CRYSTAL REPORTS
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
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
O que vc pode fazer e usar o mid direto ... ja que vc sabe o formato da data ... tentei aqui o month funciona direito .
Poderia me passar a sintaxe que voce usou MADMAX
Eu tentei e nao consegui.
Obrigado
Eu tentei e nao consegui.
Obrigado
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[Ô]
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[Ô]
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
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
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.
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