Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido)Filtro_Crystal_8


George Ferraz

Pergunta

Dia rapaziada, olha só, eu andei pesquisando uma forma de filtrar dados no crystal report 8, mais sem sucesso até o momento. Como eu faço por exemplo: Ter uma opção para chamar no vb meu report em um período de data, sem ter que usar o CRViewer do próprio crystal report ? Tem como fazer ?

Esta é a forma como chamo meu report:

Private Sub lvBPed_Click()

Unload Me

Me.MousePointer = 11

CrystalRet.WindowTitle = "Historico De Venda Crédito"

CrystalRet.CopiesToPrinter = 1

CrystalRet.Destination = crptToWindow

CrystalRet.ReportFileName = "C:\SyCSQL\Reports\ReportSysCSQLVdasCreds.rpt"

CrystalRet.SortFields(0) = "+{TbPed.IDPed}"

CrystalRet.Action = 1

Me.MousePointer = 0

End Sub

Agradeço a força de todos, valeu.

"Sábio o homem que inventou a cerveja" (Platão)

Editado por George Ferraz
Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Kuroi dia, eu fiz assim:

Private Sub lvBPed_Click()

Unload Me

Me.MousePointer = 11

CrystalRet.WindowTitle = "Historico De Venda Crédito"

CrystalRet.CopiesToPrinter = 1

CrystalRet.Destination = crptToWindow

CrystalRet.ReportFileName = "C:\SyCSQL\Reports\ReportSysCSQLVdasCreds.rpt"

CrystalRet.SortFields(0) = "+{TbPed.IDPed}"

CrystalRet.ReplaceSelectionFormula= "{TbPed.Dta} in Date(2009,04,27) to Date(2009,04,27)"

CrystalRet.Action = 1

Me.MousePointer = 0

End Sub

Venho fazendo pesquisas, para tentar fazer esse filtro e enclusive dei uma olhada em suas dicas sobre o crystal, mais não tive sucesso, pergunto você pode me dizer como eu faço esse filtro funcionar ? Eu não tenho uma formula, só criei um grupo no crystal onde chamo as datas do movimento ? Não conseguir ainda fazer uma formula, não sei muita coisa sobre o crystal ?

"Sábio o homem que inventou a cerveja" (Platão)

Link para o comentário
Compartilhar em outros sites

  • 0

Kuroi, vou verificar em casa, pois agora estou no trabalho e aqui eu não tenho o projeto e crystal, vou tentar sem o sinal de igual e depois eu falo pro cê se deu certo.

Private Sub lvBPed_Click()
Unload Me
Me.MousePointer = 11
CrystalRet.WindowTitle = "Historico De Venda Crédito"
CrystalRet.CopiesToPrinter = 1
CrystalRet.Destination = crptToWindow
CrystalRet.ReportFileName = "C:\SyCSQL\Reports\ReportSysCSQLVdasCreds.rpt"
CrystalRet.SortFields(0) = "+{TbPed.IDPed}"
CrystalRet.ReplaceSelectionFormula "{TbPed.Dta} in Date(2009,04,27) to Date(2009,04,27)"
CrystalRet.Action = 1
Me.MousePointer = 0
End Sub

Valeu colega.

"Sábio o homem que inventou a cerveja" (Platão)

Editado por George Ferraz
Link para o comentário
Compartilhar em outros sites

  • 0

Kuroi, eu fiz como instrução, mais dá um erro, ele não entende a continuação do texto, o que está escrito depois da table e field. Bom vou continuar a buscar uma solução, mais adianto, se você tiver alguma sugestão, e poder me orientar, fico grato, valeu.

Private Sub lvBPed_Click()
Unload Me
Me.MousePointer = 11
CrystalRet.WindowTitle = "Historico De Venda Crédito"
CrystalRet.CopiesToPrinter = 1
CrystalRet.Destination = crptToWindow
CrystalRet.ReportFileName = "C:\SyCSQL\Reports\ReportSysCSQLVdasCreds.rpt"
CrystalRet.SortFields(0) = "+{TbPed.IDPed}"
CrystalRet.ReplaceSelectionFormula "{TbPed.Dta} in Date(2009,04,27) to Date(2009,04,27)"
CrystalRet.Action = 1
Me.MousePointer = 0
End Sub

"Sábio o homem que inventou a cerveja" (Platão)

Link para o comentário
Compartilhar em outros sites

  • 0
so de teste tenta escrever essa formula {TbPed.Dta} in Date(2009,04,27) to Date(2009,04,27) no selection formula no rpt

Kuroi, vou fazer esse teste sim, direto do crystal, pra verificar o que acontece, mais só vou fazer isso lá em casa e depois eu falo no que deu.

Valeu colega.

"Sábio o homem que inventou a cerveja" (Platão)

Link para o comentário
Compartilhar em outros sites

  • 0

Kuroi noite, olha só, eu fiz o teste direto no crystal e o erro é exatamente igual ao que aparece no vb.

Formula usando o selectionformula no crystal 8:

{tbped.Dta} in Date (26/04/2009) to Date (26/04/2009 )

Messagem de erro:

the remaining text does not appear to be part of the formula

“o texto restante não parece ser parte da fórmula”

Detalhe do erro:

Ocorre na segunda expressão data ?

Será que é possível fazer dessa forma, filtra tudo que estiver no intervalo de uma determinada data ?

"Sábio o homem que inventou a cerveja" (Platão)

Editado por George Ferraz
Link para o comentário
Compartilhar em outros sites

  • 0

george mas quando você testa dentro do crystal, depois da mensagem de erro onde ele para o cursor.

eu testei esse seu codigo aqui e funcionou normal.

por acaso tem mais algum texto alem desse na formula??

você tem certeza q esse erro é no selection formula e não em alguma otra formula q você tiver??

você pode tentar essas possibilidades tb:

{TbPed.Dta} in #2009,04,27# to #2009,04,27#
{tbped.Dta} >= #2009,04,27# And {tbped.Dta} <= #2009,04,27#

Link para o comentário
Compartilhar em outros sites

  • 0
por acaso tem mais algum texto alem desse na formula??

você tem certeza q esse erro é no selection formula e não em alguma otra formula q você tiver??

Kuroi dia, agora o bicho pegou ? não sei ? Agora o cusor depois do erro fica exatamente entre {tbped.Dta} in Date (26/04/2009)aqui to Date (26/04/2009 ).

Agora funcionou com você, aí que o bicho pega mesmo.

Sabe de uma coisa, eu andei pensando como um usuário e notei que vou precisa de algo para que o usuário possa chamar o intervalo de "Datas" e não faço a minima idéia de como fazer isso ? se eu conseguir resolver este problema com suas dicas, você teria uma saida para resover essa questão que vou ter que encarar tbém ?

Valeu colega.

"Sábio o homem que inventou a cerveja" (Platão)

Link para o comentário
Compartilhar em outros sites

  • 0
Kuroi, vou tentar vazer das outras formas que você me orienta, mais só posso fazer lá em casa, pois estou no trabalho e aqui eu não tenho o crystal 8 e nem o projeto completo sabe.
você pode usar campos parametros. e por eles na formula no lugar das datas.

Quando aos paremetros, vou pedir a você depois algumas dicas de como faço, porque sei que o bicho vai pega nessa etapa, mais vamos lá, quero aprender mais sobre o crystal.

Valeu colega, vou testar e depois falo pro cê.

"Sábio o homem que inventou a cerveja" (Platão)

Link para o comentário
Compartilhar em outros sites

  • 0
você pode tentar essas possibilidades tb:

CODE
{TbPed.Dta} in #2009,04,27# to #2009,04,27#


CODE
{tbped.Dta} >= #2009,04,27# And {tbped.Dta} <= #2009,04,27#

Kuroi noite, ainda não foi desta vez, esta dando um erro na

hora de testar usando o botão (x+2). E o ponteiro do mouse

fica no inicio do codigo. Fiz algumas tentativas mais sou

muito iniciante no crystal.

Messagem Erro:

a date-time is required here “um data-tempo é requerido aqui”

Eu fiz uma alteração boa no ret,

toda vez que o usuário quiser consulta o movimento do dia o

report mostras as vendas daquele dia logo no inicio do ret.

Antes o report estava iniciando com os registros em

ordem crescente e depois da alteração no grupo ficou em de-

crescente ordem.

Eu andei lendo seus artigos sabe, conteudo bom, mais

ainda estou caminhando no crystal, preciso entender mais so-

bre o assunto, mais é um progresso. Não sei o que o crystal

quer disser com essa messagem ? Agora os campos não são do

tipo "Date no meu recordset MYSQL", pergunto tem alguma coi-

sa a ver ? Fiz com as duas dicas...

Valeu colega.

"Sábio o homem que inventou a cerveja" (Platão)

Link para o comentário
Compartilhar em outros sites

  • 0
Messagem Erro:

a date-time is required here “um data-tempo é requerido aqui”

Não sei o que o crystal

quer disser com essa messagem ? Agora os campos não são do

tipo "Date no meu recordset MYSQL", pergunto tem alguma coi-

sa a ver ? Fiz com as duas dicas...

george, como ta o campo no mysql?? varchar?? então converta pra data. tipo assim:

CDate({TbPed.Dta}) in #2009,04,27# to #2009,04,27#

ou tente tb as otras possibilidades, mas use sempre o CDate() quando o campo {TbPed.Dta} aparecer.

essa mensagem significa q o campo ou valor deve ser do tipo data pra ele conseguir a fazer a expressao. você não pode comparar uma string com um data sem fazr a conversao.

Antes o report estava iniciando com os registros em

ordem crescente e depois da alteração no grupo ficou em de-

crescente ordem.

são os os grupos q tão decrescentes, ou os dados dentro dele??

se for o grupo, clique com o botao direito no nome do grupo (no header ou no footer) no painel q fica a esquerda e selecione Change Group....

no segundo combo você escolhe a ordem. pra dexar na ordem crescente, selecione in ascending order.

se for os dados, você clica no menu Report -> Sort Records...

na janelinha q vai abrir, você poe os campos na ordem q quiser, e tb seleciona crescente ou decrescente.

esta dando um erro na

hora de testar usando o botão (x+2). E o ponteiro do mouse

fica no inicio do codigo. Fiz algumas tentativas mais sou

muito iniciante no crystal.

essa parte aqui não entendi direito...

Link para o comentário
Compartilhar em outros sites

  • 0

Kuroi dia, sim no MySQL todos os campos são do tipo "varchar", vou seguir sua instrução para convertelos do tipo data usando o CDate().

Entende a instrução de como ordenar os grupos e os campos usando o "Sort Record..."

esta dando um erro na

hora de testar usando o botão (x+2). E o ponteiro do mouse

fica no inicio do codigo. Fiz algumas tentativas mais sou

muito iniciante no crystal.

essa parte aqui não entendi direito...

Essa parte na verdade é o "Editor do Selection Formula", lá tem um botão que você pode testar

o que escreveu antes de salvar a formula, foi aí que eu verifiquei que algo estava errado antes mesmo de dá print view no report

Valeu por suas dicas sempre bem vidas, obrigado.

Vou fazer os ajustes e depois falo pro cê como ficou.

"Sábio o homem que inventou a cerveja" (Platão)

Link para o comentário
Compartilhar em outros sites

  • 0
Essa parte na verdade é o "Editor do Selection Formula", lá tem um botão que você pode testar

o que escreveu antes de salvar a formula, foi aí que eu verifiquei que algo estava errado antes mesmo de dá print view no report

a agora entendi. se ele parou no inicio, então ele ta apontando mesmo pro campo {TbPed.Dta}. e ai pela mensagem q deu, a gente pode concluir q deve ser mesmo pelo tipo varchar. tenta ai o CDate().

Link para o comentário
Compartilhar em outros sites

  • 0
Kuroi dia, bom, eu fiz os teste como instrução, da seguinte forma: menu-Inserir-Formula Field-New-”nome da formula-Formula Editor-escrevi assim: CDate({tbped.Dta}) >= #2009,04,27# And CDate({tbped.Dta}) <= #2009,04,27# -”não dá erro nenhum, porem quando eu insiro a formula do report - e peço um - print preview - o campo fica “false”.

Fiz todos os testes com as outras possibilidades mais o campo fica “false”, Onde estou errando?

Valeu colega, fico grato.

"Sábio o homem que inventou a cerveja" (Platão)

Link para o comentário
Compartilhar em outros sites

  • 0

na verdade você foi pra inserir um campo formula. não é a formula da selecao.

esse campo formula seria um campo calculado baseado em alguma formula.

no caso você faz uma comparacao q retorna false.

pra fazer o filtro você tem q alterar a formula da selecao. entre em menu Report -> Edit Selection Formula -> Record... e cole a formula la.

Link para o comentário
Compartilhar em outros sites

  • 0
Kuroi tarde, ficou muito bom, você mandou na mosca. Agora lembra quando eu falei, “andei pensando com um usuário” – acho que essa é a hora de tentar montar os intervalos de Datas para o usuário conseguir fazer os filtros nas datas que quiser. quando você falou: você pode usar campos parametros. e por eles na formula no lugar das datas, você tem um exemplo, para mim começa ? – em menu Insert -> Parameter Field -> New -> Nome: ? -> Prompting text: ? -> Value type: ?

É por aí o caminho, que vou montar os intevalos, se for isso, me dê um começo, de como eu faço para o usuário chamar os intervalos que queira no vb?

Valeu, fico grato, por suas dicas.

"Sábio o homem que inventou a cerveja" (Platão)

Editado por George Ferraz
Link para o comentário
Compartilhar em outros sites

  • 0
É por aí o caminho, que vou montar os intevalos, se for isso, me dê um começo, de como eu faço para o usuário chamar os intervalos que queira no vb?

george, você não precisa usar campos parametros se não quiser. acho q como você já ta indo por otro caminho, so ia complicar.

é so você escrever a string na hora de montar as datas.

exemplo, se as duas datas tivem em textbox, você faria assim:

CrystalRet.ReplaceSelectionFormula "CDate({tbped.Dta}) >= #" & Text1.Text & "# And CDate({tbped.Dta}) <= #" & Text2.Text & "#"
assim ele vai pegar sempre a data q tiver na textbox. nesse tópico aqui comentamos sobre isso: http://scriptbrasil.com.br/forum/index.php?showtopic=136354
quando você falou: você pode usar campos parametros. e por eles na formula no lugar das datas, você tem um exemplo, para mim começa ? – em menu Insert -> Parameter Field -> New -> Nome: ? -> Prompting text: ? -> Value type: ?
se quiser usar o parameter field, então, siga esse caminho q você falou e crie dois campos parametros, um pra data final e otro pra data inicial. em value type ponha date e em prompt text tanto faz. o prompt text é o texto q vai aparecer instruindo o usuario a digitar o valor caso você chame o preview do relatorio. mas como você vai passar o valor por codigo do visual basic, provavelmente não vai usar essa opcao. ai o q você teria q fazer era editar o selection formula e deixa-lo fixo no proprio crystal (acho q assim facilita, mas se quiser tb pode passar no visual basic) naquele caminho q falei (Report -> Edit Selection Formula -> Record...) ponha a formula tipo assim:
CDate({tbped.Dta}) >= {?data1} And CDate({tbped.Dta}) <= {?data2}
onde data1 e data2 são os nomes dos campos parametros. entendeu?? a formula vai filtrar pelas datas q tiverem nos parametros. ai pra passar valor pra eles no visual basic, você faz acho q tipo isso:
CrystalRet.ParameterFields(1).AddCurrentValue CDate(Text1.Text)
CrystalRet.ParameterFields(2).AddCurrentValue CDate(Text2.Text)[/code]

note q o indice comeca no 1 e segue a ordem em q os campos tiverem no Field Explorer (dentro do crystal).

Link para o comentário
Compartilhar em outros sites

  • 0
Kuroi dia, fico grato por suas dicas, muito bom. Vou estudar lá em casa todo o conteúdo do tópico e depois falo pro cê.

Agora, eu aproveitei o feriado e fiz algumas modificações no meu report usando o editor de formulas e criei duas opções para o usuário no relatório são elas: 1ª Opção = Relatório Geral com todo o movimento do primeiro ao último - 2ª Opção = Relatório com o movimento do dia atual.

Depois eu te digo que formulas eu usei, pois agora não tenho o projeto na mão pois estou no trabalho.

Colega, muito legal, valeu.

"Sábio o homem que inventou a cerveja" (Platão)

Link para o comentário
Compartilhar em outros sites

  • 0

Kuroi dia olha só, como eu fiz: meu sistema com relação aos movimentos diários do tipo, Estoque, Compras, Cadastro de Clientes, Vendas, etc... eu precisava basicamente de dois tipos de relatórios, são eles: tudo que fosse feito no dia corrente e outro que me mostra-se todu conteúdo de modo geral. Daí eu usei dois tipos de formulas no editor de formulas são elas:

Para o que aconteceu no dia corrente usei,

CDate({tbped.Dta})>= CurrentDate And CDate({tbped.Dta}) <= CurrentDate
Para tudo existente desde o ano de 1999 e/ou anterior até o ano corrente usei,
CDate({tbped.Dta})>= DateValue (1999,01 ,01 ) And CDate({tbped.Dta}) <=YearToDate

Eu fiz alguns testes e ficou bem, legal não, vejo inconsistência até o momento, com sua experiencia kuroi você vé alguma falha para esses dois tipos de relatório em termos de funcionalidade?

Todo o conteúdo que você me passou continuo, estudando para tentar pegar o máximo.

Valeu, figo muito grato a você colega.

"Sábio o homem que inventou a cerveja"(Platão)

Editado por George Ferraz
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...