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

Crystal Reports - Coleção como parâmetro!


Kiwanax

Pergunta

1 resposta a esta questão

Posts Recomendados

  • 0

Cara, tenho um exemplo em VB.NET, que você passa o nome dos parâmetros no Crystal (@NOME, @ENDERECO...) e seus respectivos valores:

Public Sub lsubCarregaRelatorio(ByVal lobjValorParametros() As Object, ByVal lstrNomeParametros() As String)
        Dim lrptRelatorio As New ReportDocument
        Dim lconInfo As New ConnectionInfo
        Dim ltblInfo As New TableLogOnInfo
        Dim lparParametro As ParameterFieldDefinition
        Dim lfilCampo As ParameterFieldDefinitions
        Dim ldisDiscrete As ParameterDiscreteValue
        Dim lvalValor As ParameterValues
        Dim lstrTexto As String

        '# Verifica o acesso ao arquivo .rpt
        If (System.IO.File.Exists("CaminhoRelatorios\NomeRelatorio) = False) Then
            MessageBox.Show("Não foi possível acessar o relatório." & vbCrLf & _
                            "Se o erro persistir, entre em contato com o Administrador.", "Sistema", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Exit Sub
        End If

        '# Passa os dados para conexão
        lconInfo.DatabaseName = "Banco"
        lconInfo.ServerName = "Servidor"
        lconInfo.UserID = "Usuario"
        lconInfo.Password = "Senha"

        '# Carrega o arquivo rpt
        lrptRelatorio.Load("CaminhoRelatorios\Relatorio.rpt")

        '# Realiza a conexão das tabelas do relatório
        For Each ltblTable As Table In lrptRelatorio.Database.Tables
            ltblInfo.ConnectionInfo = lconInfo
            ltblTable.ApplyLogOnInfo(ltblInfo)
        Next

        '# Conexão das tabelas dos subrelatórios (CASO EXISTA)
        For lintContador = 1 To lrptRelatorio.Subreports.Count
            For Each ltblTable As Table In lrptRelatorio.Subreports(lintContador - 1).Database.Tables
                ltblInfo.ConnectionInfo = lconInfo
                ltblTable.ApplyLogOnInfo(ltblInfo)
            Next
        Next

        '# Recebe os parâmetros existentes no rpt
        lfilCampo = lrptRelatorio.DataDefinition.ParameterFields

        '# Loop que irá configurar cada parâmetro
        For lintContador As Integer = 0 To UBound(lobjValorParametros)

            lparParametro = lfilCampo.Item(lstrNomeParametros(lintContador))
            lvalValor = lparParametro.CurrentValues
            ldisDiscrete = New ParameterDiscreteValue

            '# Verifica o tipo de dado para passar o valor correto
            If IsDate(lobjValorParametros(lintContador)) Then
                ldisDiscrete.Value = IIf(lobjValorParametros(lintContador) = "00:00:00" Or lobjValorParametros(lintContador) = "0001-01-01 00:00:00", "1899-12-30", lobjValorParametros(lintContador))

            ElseIf IsNumeric(lobjValorParametros(lintContador)) Then
                ldisDiscrete.Value = lobjValorParametros(lintContador)

            Else
                ldisDiscrete.Value = IIf(Trim(lobjValorParametros(lintContador)) = "NULL", DBNull.Value, Trim(lobjValorParametros(lintContador)))

            End If

            '# Adiciona e confirma os valores
            lvalValor.Add(ldisDiscrete)
            lparParametro.ApplyCurrentValues(lvalValor)
        Next

        '# crvVisualizador é meu objeto CrystalReportViewer
        crvVisualizador.ReportSource = lrptRelatorio
        crvVisualizador.Refresh()

    End Sub

Sendo que lobjValorParametros é um vetor contendo os valores dos parâmetros e lstrNomeParametros é um vetor contendo os nomes dos parâmetros, na mesma ordem do outro vetor. Por exemplo, se @IdFilial está na posição zero do lstrNomeParametros, 1 está na posição zero do vetor lobjValorParametros, correspondendo assim ao mesmo campo.

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,1k
    • Posts
      651,9k
×
×
  • Criar Novo...