visnadi 0 Denunciar post Postado Junho 23, 2008 Pessoal é o seguinte, estou utilizando o crystal do VS2005 para gera os relatorios do site. Os relatórios possuem o mesmo layout (os campos exibidos são semrpe os mesmos), o que muda é apenas o filtro do select, então para eu não ter que fazer um relatorio pra cada filtro eu queria usar o mesmo e nele utilizar o parameter field para receber o nome do relatório(Título) e o filtro usado(exemplo data de inicio e fim que é o filtro). Alguém pode em ajudar como passar o parametro? Tentei o seguinte codigo: Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim oper As String Dim inicial As String Dim final As String Dim texto As String texto = "Com Vencimento entre:" Dim sql As String Dim parametro As String parametro = Request.QueryString("parametro1") If parametro.Length < 24 Then parametro = "aaaaaaaa" + parametro oper = parametro.Substring(1, 8) inicial = parametro.Substring(9, 8) final = parametro.Substring(17, 8) sql = "SELECT tbscc_conta.pkey, tbscc_conta.fk_operadora, tbscc_conta.nr_fatura, tbscc_conta.nr_nota_fiscal, tbscc_conta.nr_linha, tbscc_conta.dt_recebimento,tbscc_conta.dt_emissao, tbscc_conta.vl_fatura, tbscc_conta.dt_vencimento, tbscc_conta.dt_pagamento, tbscc_conta.vl_pagamento,tbscc_conta.tp_servico, tbscc_conta.st_aprovacao_pagamento, tbscc_conta.dt_aprovacao, tbscc_conta.dc_usuario_aprovacao,tbscc_conta.dc_contestacao, tbscc_conta.vl_contestacao, tbscc_conta.dc_path_arquivo_digital, tbscc_conta.dc_path_arquivo_contestacao,tbscc_conta.dc_barcode_header, tbscc_conta.dc_barcode_pagto, tbscc_conta.id_status_conta, tbscc_conta.id_revisar, tbscc_conta.dt_contestacao,tbscc_conta.dc_usuario_contestacao, tbscc_conta.dt_confirmacao_pagamento, tbscc_conta.dc_usuario_confirmacao_pagamento,tbscc_conta.dc_historico, tbscc_conta.cd_cliente_conta, tbscc_conta.dt_pagamento_real, tbscc_conta.vl_pagamento_real,tbscc_conta.dc_historico_pagamento, tbscc_conta.nr_contrato_sap, tbscc_conta.dt_renegociada, tbscc_conta.nr_conta, tbscc_operadora.dc_fornecedor, tbscc_operadora.dc_fantasia, tbscc_status_conta.dc_status_conta FROM tbscc_conta LEFT OUTER JOIN tbscc_operadora ON tbscc_operadora.pkey = tbscc_conta.fk_operadora LEFT OUTER JOIN tbscc_status_conta ON tbscc_status_conta.pkey = tbscc_conta.id_status_conta WHERE (tbscc_conta.dt_vencimento BETWEEN '" & inicial & "' AND '" & final & "')" Else oper = parametro.Substring(1, 8) inicial = parametro.Substring(9, 8) final = parametro.Substring(17, 8) sql = "SELECT tbscc_conta.pkey, tbscc_conta.fk_operadora, tbscc_conta.nr_fatura, tbscc_conta.nr_nota_fiscal, tbscc_conta.nr_linha, tbscc_conta.dt_recebimento,tbscc_conta.dt_emissao, tbscc_conta.vl_fatura, tbscc_conta.dt_vencimento, tbscc_conta.dt_pagamento, tbscc_conta.vl_pagamento,tbscc_conta.tp_servico, tbscc_conta.st_aprovacao_pagamento, tbscc_conta.dt_aprovacao, tbscc_conta.dc_usuario_aprovacao,tbscc_conta.dc_contestacao, tbscc_conta.vl_contestacao, tbscc_conta.dc_path_arquivo_digital, tbscc_conta.dc_path_arquivo_contestacao,tbscc_conta.dc_barcode_header, tbscc_conta.dc_barcode_pagto, tbscc_conta.id_status_conta, tbscc_conta.id_revisar, tbscc_conta.dt_contestacao,tbscc_conta.dc_usuario_contestacao, tbscc_conta.dt_confirmacao_pagamento, tbscc_conta.dc_usuario_confirmacao_pagamento,tbscc_conta.dc_historico, tbscc_conta.cd_cliente_conta, tbscc_conta.dt_pagamento_real, tbscc_conta.vl_pagamento_real,tbscc_conta.dc_historico_pagamento, tbscc_conta.nr_contrato_sap, tbscc_conta.dt_renegociada, tbscc_conta.nr_conta, tbscc_operadora.dc_fornecedor, tbscc_operadora.dc_fantasia, tbscc_status_conta.dc_status_conta FROM tbscc_conta LEFT OUTER JOIN tbscc_operadora ON tbscc_operadora.pkey = tbscc_conta.fk_operadora LEFT OUTER JOIN tbscc_status_conta ON tbscc_status_conta.pkey = tbscc_conta.id_status_conta WHERE (tbscc_conta.fk_operadora = '" & oper & "') AND (tbscc_conta.dt_vencimento BETWEEN '" & inicial & "' AND '" & final & "')" End If Dim sqlcmd As SqlCommand sqlcmd = New SqlCommand() sqlcmd.Connection = conn sqlcmd.CommandText = sql Dim daOperadora As New SqlDataAdapter() daOperadora.SelectCommand = sqlcmd Dim CamposParametros As New ParameterFields Dim VctoIni As New ParameterField Dim DiscretoIni As New ParameterDiscreteValue Dim VctoFim As New ParameterField Dim DiscretoFim As New ParameterDiscreteValue Dim ltexto As New ParameterField Dim DiscretoTexto As New ParameterDiscreteValue VctoIni.ParameterFieldName = "inicio" DiscretoIni.Value = inicial VctoIni.CurrentValues.Add(DiscretoIni) VctoFim.ParameterFieldName = "fim" DiscretoFim.Value = final VctoFim.CurrentValues.Add(DiscretoFim) ltexto.ParameterFieldName = "texto" DiscretoTexto.Value = texto ltexto.CurrentValues.Add(DiscretoTexto) CamposParametros.Add(ltexto) CamposParametros.Add(VctoIni) CamposParametros.Add(VctoFim) Dim dsRelatorio As New dsContAOper() conn.Close() conn.Open() daOperadora.Fill(dsRelatorio.sp_contaoper) conn.Close() Dim a As String a = Session("nomereport") Dim crs As New CrystalReportSource() crs.Report.FileName = a crs.ReportDocument.SetDataSource(dsRelatorio) crv.ParameterFieldInfo = CamposParametros crv.ReportSource = crs crv.DataBind() End Sub Porém após mandar gerar o relatório recebo a mensagem: Parametro incorreto. Sendo q no report criei os campos no formato e tipo certo. Se alguém puder me ajudar eu agradeço. Compartilhar este post Link para o post Compartilhar em outros sites
Erysson Barros 0 Denunciar post Postado Junho 23, 2008 Dá uma olhada nesse código em C# e verifica o que você pode tirar de proveito. Abraço! DataSet ds = new DataSet(); Clientes_Diretos.getFacade = 10; Clientes_Diretos.getCic_cgc = Convert.ToInt32(PCDCLIENTE); ds = wsICCAR.ExecutaSQLClientes_Diretos(Clientes_Diretos); if (ds.Tables.Count > 0) { if (ds.Tables[0].Rows.Count > 0) { ParameterFields paramFields = new ParameterFields(); ParameterField paramFieldDataInicio = new ParameterField(); ParameterField paramFieldDataFim = new ParameterField(); ParameterField paramFieldPagina = new ParameterField(); ParameterDiscreteValue discreteDataInicio = new ParameterDiscreteValue(); ParameterDiscreteValue discreteDataFim = new ParameterDiscreteValue(); ParameterDiscreteValue discretePagina = new ParameterDiscreteValue(); discreteDataInicio.Value = Convert.ToDateTime(Clientes_Diretos.getData1); discreteDataFim.Value = Convert.ToDateTime(Clientes_Diretos.getData2); discretePagina.Value = "FSGP032"; paramFieldDataInicio.Name = "DTINICIAL"; paramFieldDataInicio.CurrentValues.Add(discreteDataInicio); paramFieldDataFim.Name = "DTFINAL"; paramFieldDataFim.CurrentValues.Add(discreteDataFim); paramFieldPagina.Name = "PAGINA"; paramFieldPagina.CurrentValues.Add(discretePagina); paramFields.Add(paramFieldDataInicio); paramFields.Add(paramFieldDataFim); paramFields.Add(paramFieldPagina); relatorio.FileName = @"C:\Inetpub\wwwroot\Forms\FSGP032\RelaConsulRecebReqPerio.rpt"; relatorio.SetDataSource(ds); CrystalReportViewer1.ReportSource = relatorio; CrystalReportViewer1.ParameterFieldInfo = paramFields; CrystalReportViewer1.DataBind(); } } } Compartilhar este post Link para o post Compartilhar em outros sites
visnadi 0 Denunciar post Postado Junho 25, 2008 obrigado. consegui. percebi que faltava um campo ser preenchido no wizard do cryatal. Compartilhar este post Link para o post Compartilhar em outros sites