Ir para o conteúdo
zuga

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

Mensagens Recomendadas

zuga    0
zuga

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Asgorath    0
Asgorath

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
zuga    0
zuga

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Asgorath    0
Asgorath

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.

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade