Kiwanax Posted November 10, 2011 Report Share Posted November 10, 2011 E aí, galera! Tudo bem?estou com uma dúvida aqui: Quero passar uma coleção como parâmetro do Crystal Reports. Há como? Como deve ser criado o parâmetro no editor do relatório?Grato pela ajuda, fiquem com Deus!! Quote Link to comment Share on other sites More sharing options...
0 Xistyle Posted November 10, 2011 Report Share Posted November 10, 2011 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 SubSendo 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. Quote Link to comment Share on other sites More sharing options...
Question
Kiwanax
E aí, galera! Tudo bem?
estou com uma dúvida aqui: Quero passar uma coleção como parâmetro do Crystal Reports. Há como? Como deve ser criado o parâmetro no editor do relatório?
Grato pela ajuda, fiquem com Deus!!
Link to comment
Share on other sites
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.