• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

zuga

[VB.NET 2005] [Crystal Reports] Alterar a query via programação. Possível?

4 mensagens neste tópico

Boa tarde,

Encontro-me a tentar fazer o seguinte:

Tenho um report que chama uma store procedure para fazer o select e devolver valores. No entanto devolve todos os valores que estejas activos naquela tabela. Agora, precisava de passar parametros para criar uma vista costumizada da tabela e apenas consigo fazer via programação usando os parametros do Crystal Reports. O que acontece é que a query devolve por exemplo 1000 linhas e eu só preciso e só se mostra por exemplo 10.

Via Crystal Reports e usando VB.NET fica uma coisa parecida com o seguinte:

        Dim crpt As New CrystalDecisions.CrystalReports.Engine.ReportDocument()
        crpt.Load("caminha/nome_do_ficheiro.rpt")

        Dim newlogoninfo As New CrystalDecisions.Shared.TableLogOnInfo()
        Dim crtable As CrystalDecisions.CrystalReports.Engine.Table


        Dim crParameterFieldDefinitions
        Dim crParameter1
        Dim crParameter1Values
        Dim crDiscrete1Value

        ''Get the collection of parameters from the report
        crParameterFieldDefinitions = crpt.DataDefinition.ParameterFields
        ''Access the specified parameter from the collection
        crParameter1 = crParameterFieldDefinitions.Item("@ValorDoParametro")

        ''Get the current values from the parameter field.  At this point
        ''there are zero values set.
        crParameter1Values = crParameter1.CurrentValues

        ''Set the current values for the parameter field
        crDiscrete1Value = New ParameterDiscreteValue
        crDiscrete1Value.Value = parametro

        ''Add the first current value for the parameter field
        crParameter1Values.Add(crDiscrete1Value)

        ''All current parameter values must be applied for the parameter field.
        crParameter1.ApplyCurrentValues(crParameter1Values)

Desta maneira, eu consigo usar os parametros mas carrega sempre os 1000 valores.

Alguém me consegue dar uma ajuda neste campo?

Abraços,

João Correia

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas

Prefiro usar  RecordSelectionFormula para filtrar informacao da tabela nos reports.

                    Dim crReportDocument As New CrystalReports1
                    crConnectionInfo = New ConnectionInfo
                    With crConnectionInfo
                        .ServerName = "Dinefer"
                        .DatabaseName = "Dinefer"
                        .UserID = "b"
                        .Password = "a"
                    End With
                    crDatabase = crReportDocument.Database
                    crTables = crDatabase.Tables
                    For Each crTable In crTables
                        crTableLogOnInfo = crTable.LogOnInfo
                        crTableLogOnInfo.ConnectionInfo = crConnectionInfo
                        crTable.ApplyLogOnInfo(crTableLogOnInfo)
                    Next

                    formula = "{auxprintcorpoenc.login}='" & Utilizador.Login & "'"
                    crReportDocument.RecordSelectionFormula = formula
                    crReportDocument.PrintOptions.PaperOrientation = PaperOrientation.Landscape
                    crReportDocument.PrintOptions.PaperSize = PaperSize.PaperA4


                    CrystalReportViewer1.DisplayGroupTree = False

                    CrystalReportViewer1.Zoom(100)
                    CrystalReportViewer1.ReportSource = crReportDocument

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas desta maneira, tu consegues alterar o select directo à base de dados?

Porque o meu problema é eu com uma query trazer 1000 registos para o Crystal Reports e só precisar de 100...ou seja...trago 900 registo a mais que me ocupam largura de banda e que eu nao quero trazer...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O meu report esta ligado a tabela auxprintcorpoenc , e estou a filtrar o campo .login da tabela para ser igual a utilizador.login que vai retornar 1 linha.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora