Kiwanax Postado Novembro 10, 2011 Denunciar Share Postado Novembro 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!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Xistyle Postado Novembro 10, 2011 Denunciar Share Postado Novembro 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
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 para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
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.