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

Tarde rapaziada, tenho dois parametros onde só funciona no crystal agora, no vb eu não consigo fazer funcionar. Estou usando dois controles DtPicker um para data inicial e outro para data final, para informar um periodo, mais o crystal não responde da maneira esperada ?

Meu código que adaptei depois de ter lido um poster aqui onde estou errando ?

Private Sub lvBParmtos_Click()
Unload Me
Me.MousePointer = 11
CrystalRet.WindowTitle = "Cadastro De Clientes"
CrystalRet.CopiesToPrinter = 1
CrystalRet.Destination = crptToWindow
CrystalRet.ReportFileName = "C:\SyCSQL\Reports\ReportSysCSQLCltPeriodo.rpt"
CrystalRet.SelectionFormula = "CDate({tbclt.DtClt}) >= {?data1} And CDate({tbclt.DtClt})<= {?data2}"
CrystalRet.ParameterFields(0) = "data1;Date(" & DatInicial.Value & Format(DatInicial.Value, "YYYY,MM,DD") & ");True"
CrystalRet.ParameterFields(1) = "data2;Date(" & DatFinal.Value & Format(DatFinal.Value, "YYYY,MM,DD") & ");True"
CrystalRet.SortFields(0) = "+{TbClt.DtClt}"
CrystalRet.Action = 1
Me.MousePointer = 0
End Sub

Desde já fico grato a todos, valeu.

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

Link para o comentário
Compartilhar em outros sites

  • 0
Kuroi tarde, olha só, no crystal ele faz o filtro na boa, mais você precisa informar a data no form interno crystal chamado "Enter Paramet" daí o filtro beleza sabe.
Agora no vb eu criei um form para o usuário informar as datas em dois controles "DtPicker" mais aí ele não filtra nada, agora se eu deixar o form interno do crystal aparecer para ser informada as datas iniciais e finais ae ele faz o filtro, mais o form do crystal que aparece no vb fica fora dos meus padrões de telas sabe e não consigo modifica-lo ?

Espero ter mostrado pro cê, onde está o problema ?

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

Link para o comentário
Compartilhar em outros sites

  • 0

Kuroi dia, desta forma :

CrystalRet.ParameterFields(0) = "data1;Date(" & Format(DatInicial.Value, "YYYY,MM,DD") & ");True"
CrystalRet.ParameterFields(1) = "data2;Date(" & Format(DatFinal.Value, "YYYY,MM,DD") & ");True"
E desta forma:
CrystalRet.ParameterFields(0) = "data1;Date(" & DatInicial.Value & Format(DatInicial.Value, "YYYY,MM,DD") & ");True"
CrystalRet.ParameterFields(1) = "data2;Date(" & DatFinal.Value & Format(DatFinal.Value, "YYYY,MM,DD") & ");True"

O efeito é o mesmo colega, eu já tentei assim tbém, o "Enter Parameter Field" na verdade o form interno do crystal surge da mesma forma para ser inserida as datas e o filtro acontecer, você teria uma outra possibilidade para o filtro funcionar nos controles "DtPicker" ?

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

Link para o comentário
Compartilhar em outros sites

  • 0

george, fiz uns testes aqui e realmente aconteceu esse problema.

entretanto, parece q se você dexar a formula já pronta no rpt o erro não ocorre.

tipo, no rpt com o crystal aberto, clique em menu Report -> Edit Selection Formula -> Record...

ponha la o codigo:

CDate({tbclt.DtClt}) >= {?data1} And CDate({tbclt.DtClt})<= {?data2}
e salve o rpt. no visual basic, retire a linha:
CrystalRet.SelectionFormula = "CDate({tbclt.DtClt}) >= {?data1} And CDate({tbclt.DtClt})<= {?data2}"

e veja se não vai funcionar.

Link para o comentário
Compartilhar em outros sites

  • 0
george, fiz uns testes aqui e realmente aconteceu esse problema.

entretanto, parece q se você dexar a formula já pronta no rpt o erro não ocorre.

tipo, no rpt com o crystal aberto, clique em menu Report -> Edit Selection Formula -> Record...

ponha la o codigo:

CDate({tbclt.DtClt}) >= {?data1} And CDate({tbclt.DtClt})<= {?data2}
no visual basic, retire a linha:
CrystalRet.SelectionFormula = "CDate({tbclt.DtClt}) >= {?data1} And CDate({tbclt.DtClt})<= {?data2}"
Kuroi, não funcionou, na verdade informando o intervalo de datas nos contreles e depois gerando o relatório, ele não filtra nada e tbém descubri que nem precisa informar o selectformula e nem os parâmetros para que o form interno do crystal surja no vb. Pois já que a formula e os parâmetros estão no crystal, basta agente apenas chamar o report é mole ou seja, ainda estamos sem sucesso, não foi possível filtrar pelos controles “DTPicker”
Código usado:
Private Sub CmdGRet_Click()
Unload Me
Me.MousePointer = 11
CrystalRet.WindowTitle = "Cadastro De Clientes"
CrystalRet.CopiesToPrinter = 1
CrystalRet.Destination = crptToWindow
CrystalRet.ReportFileName = "C:\SyCSQL\Reports\ReportSysCSQLCltPeriodo.rpt"
CrystalRet.Action = 1
Me.MousePointer = 0
End Sub

Fico grato Kuroi, mais ainda não temos sucesso ?

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

Link para o comentário
Compartilhar em outros sites

  • 0
Kuroi, está funcionando como esperado,muito bom, você matou a charada colega. Agora eu não descubri onde errei,

peguei seu report e apontei para o bd MySQL e pronto, report chamando periódo pelos controles DTPicker na boa.

Eu quero deixar meu report onde apresenta o erro, mais não sei se é possível e se posso fazer isso aqui no forum. Para você dá uma olhada e me dizer onde errei. Claro que não quero abusar de sua boa vontade colega, mais assim vou conseguir aprender mais com você.

Desde já fico grato e sucesso.

"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, ok, vou deixar o link aqui, para todos terem acesso, pois vejo aqui no forum, muitas duvidas sobre esse assunto. E os colegas fazendo uma pesquisa vão conseguir tirar suas dúvidas ou ajustalas para cada caso. Pois acredito que este tópico está sendo bastante detalhado a respeito de como fazer um "Filtro no Crystal por datas".
Agora eu saquei, uma coisa, assim funciona da maneira esperada:

Private Sub CmdGRet_Click()
    
        With CrystalRet

        .ReportFileName = ReportFileName = "C:\SyCSQL\Reports\ReportSysCSQLCltPeriodo.rpt"
          
        .Destination = crptToWindow
        
        '.ReplaceSelectionFormula "CDate({TbClt.DtClt}) >= {?data1} And CDate({TbClt.DtClt})<= {?data2}"
        
        .ParameterFields(0) = "data1;Date(" & Format(DTPicker1.Value, "YYYY,MM,DD") & ");True"
        .ParameterFields(1) = "data2;Date(" & Format(DTPicker2.Value, "YYYY,MM,DD") & ");True"
        
        .WindowState = crptMaximized
        
        .Action = 1
    End With
End Sub
Assim não funciona, eu acho que é por causa do Unload Me ?:
Private Sub CmdGRet_Click()

Unload Me

With CrystalRet

        .ReportFileName = ReportFileName = "C:\SyCSQL\Reports\ReportSysCSQLCltPeriodo.rpt"
          
        .Destination = crptToWindow
        
        '.ReplaceSelectionFormula "CDate({TbClt.DtClt}) >= {?data1} And CDate({TbClt.DtClt})<= {?data2}"
        
        .ParameterFields(0) = "data1;Date(" & Format(DTPicker1.Value, "YYYY,MM,DD") & ");True"
        .ParameterFields(1) = "data2;Date(" & Format(DTPicker2.Value, "YYYY,MM,DD") & ");True"
        
        .WindowState = crptMaximized
        
        .Action = 1
    End With

End Sub

Eu fiquei horas a fio, tentando descubrir o que estava acontecendo, quando eu fiz uma pequena alteração no código e derrepente...nossa...parou de funcionar, daí eu comecei tudo do zero e percebi, que foi o tal do "Unload Me" que estava causando todo o pipino, caraca, imagina só... Bom eu acho que foi isso, viu, abaixo está o link, dá uma olhada, assim que você tiver um tempinho e depois me fala se é isso mesmo ? Valeu por sua instrução e atenção, bom trabalho aí pro cê.

ReportSysCSQLCltPeriodo

"Este link não tem mais conteudo, visto que, já se passarao 1 ano."
"Agora se alguém tiver duvidas é so me mandar uma mp"

"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...