none
Exportar para pdf com Visual Studio 2010 vb.net RRS feed

  • Pergunta

  • Pessoal

       Tenho um relatorio que utiliza os campos de uma store procedure, onde tem diversos parametros, de passagem de valor, e gostaria de exporta-lo diretamente para pdf, existe está possibilidade, utilziando o Visual Studio 2010 com VB.net ?

    sexta-feira, 27 de dezembro de 2013 23:26

Todas as Respostas

  • Sim,

    Use esse exemplo:

    http://www.macoratti.net/09/12/asp_rpdf.htm


    Fulvio Cezar Canducci Dias

    domingo, 29 de dezembro de 2013 15:23
  • Fúlvio

        Legal, as suas referências, servir para eu confirmar alguns recursos que estou utilizando em Windows Forms, com vb.net e o VS 2010, mais ainda estou com problema, pois percebi que quando mando parametro e mando gerar para pdf, ele reclama de parametro invalido, e se retiro os parametros da procedure, e mando gerar pdf, vai normal, você já fez ou viu algo similar ?

    Dim obj_paramFields As ParameterFields = New ParameterFields()
    Dim obj_paramField As ParameterField = New ParameterField()
    Dim obj_paramDiscrete As ParameterDiscreteValue = New ParameterDiscreteValue()

    domingo, 29 de dezembro de 2013 16:11
  • Fúlvio

        Legal, as suas referências, servir para eu confirmar alguns recursos que estou utilizando em Windows Forms, com vb.net e o VS 2010, mais ainda estou com problema, pois percebi que quando mando parametro e mando gerar para pdf, ele reclama de parametro invalido, e se retiro os parametros da procedure, e mando gerar pdf, vai normal, você já fez ou viu algo similar ?

    Dim obj_paramFields As ParameterFields = New ParameterFields()
    Dim obj_paramField As ParameterField = New ParameterField()
    Dim obj_paramDiscrete As ParameterDiscreteValue = New ParameterDiscreteValue()

    Poste o procedimento inteiro?

    Fulvio Cezar Canducci Dias

    domingo, 29 de dezembro de 2013 16:13
  • Fúlvio

       Veja se com estas informações você consegue entender o que pode estar acontecendo, realmente existe diferença no envio das informações, entre parametro e formula ou não ?

    domingo, 29 de dezembro de 2013 21:38
  • Fúlvio

       Veja se com estas informações você consegue entender o que pode estar acontecendo, realmente existe diferença no envio das informações, entre parametro e formula ou não ?

    Não ... !!! Deveria funcionar!

    Por isso pedindo o seu código para visualizar isso!!!


    Fulvio Cezar Canducci Dias

    domingo, 29 de dezembro de 2013 22:07
  • Dim rand = New Random()
    Dim DataTable1 As New DataTable("DataSet1")
    DataTable1.Columns.Add("Categoria", Type.GetType("System.String"))
    DataTable1.Columns(0).Unique = True
    DataTable1.Columns.Add("Valores", Type.GetType("System.Double"))
    
    For i As Integer = 0 To 16
    	Dim Rows As DataRow = DataTable1.NewRow()
    	Rows("Categoria") = "Categoria" + i.ToString()
    	Rows("Valores") = rand.NextDouble()
    	DataTable1.Rows.Add(Rows)
    Next
    
    Dim item As New ReportDataSource("DataSet1", DataTable1)
    ReportViewer1.LocalReport.DataSources.Add(item)
    ReportViewer1.LocalReport.ReportPath = Server.MapPath("~/Report1.rdlc")
    
    Dim warnings As Warning() = Nothing
    Dim streamids As String() = Nothing
    Dim mimeType As String = Nothing
    Dim encoding As String = Nothing
    Dim fileNameExtension As String = Nothing
    
    Dim paramTitulo As New ReportParameter("paramTitulo", String.Format("{0:dd/MM/yyyy HH:mm:ss.sss}", Date.Now))
    paramTitulo.Visible = True
    ReportViewer1.LocalReport.SetParameters(paramTitulo)
    
    Dim exportBytes() As Byte = ReportViewer1.LocalReport.Render("PDF", Nothing, mimeType, Encoding, fileNameExtension, streamids, warnings)
    HttpContext.Current.Response.Buffer = True
    HttpContext.Current.Response.Clear()
    HttpContext.Current.Response.ContentType = mimeType
    HttpContext.Current.Response.AddHeader("content-disposition", ("inline; filename=ExportedReport." + fileNameExtension))
    HttpContext.Current.Response.BinaryWrite(exportBytes)
    HttpContext.Current.Response.Flush()
    HttpContext.Current.Response.End()

    Funcionou Viu Certinho, e é ReportParameter para ReportViewer se ta usando um tal de ParameterFields é do Crystal ???

    Eu to respondo ReportViewer !!!


    Fulvio Cezar Canducci Dias

    domingo, 29 de dezembro de 2013 23:04
  • Fúlvio

       Você tem certeza disso, segue o código abaixo :

             Dim obj_paramFields As ParameterFields = New ParameterFields()
             Dim obj_paramField As ParameterField = New ParameterField()
             Dim obj_paramDiscrete As ParameterDiscreteValue = New ParameterDiscreteValue()
    
    1) Envio dos dados, dos parametros relacionados com a store procedure
    
             obj_paramField.ReportParameterType = ParameterType.StoreProcedureParameter
             obj_paramField.ParameterValueType = ParameterValueKind.StringParameter
             obj_paramField.PromptingType = DiscreteOrRangeKind.DiscreteValue
             obj_paramField.ParameterFieldName = "@parametro1"
             obj_paramDiscrete.Value = "valor1"
             obj_paramField.CurrentValues.Add(obj_paramDiscrete)
    
             obj_paramFields.Add(obj_paramField)
             crpt.ParameterFieldInfo = obj_paramFields
    2) Já a formula tentei apenas mudar o parametro abaixo, mais não deu certo.
    
            obj_paramField.ReportParameterType = ParameterType.ReportParameter
    
    3) Já utilizando o recurso abaixo deu certo a passagem de formula, agora estou acertando as rotinas, para verificar se utilizando os 2 recurso, vai dar tudo certo.
    
            rptPrint.DataDefinition.FormulaFields("Titulo_1").Text = "totext('" & "xx dados do formulario 1x xx" & "')"
            rptPrint.DataDefinition.FormulaFields("Titulo_2").Text = "totext('" & "xx dados do formulario 2x xx" & "')"
    
    4) Caso realmente tinha uma única forma, poderia pelo menos me enviar o envio de 1 informaçõe de cada item, (parametro e formula), para que possa identificar onde possa estar errando, seria possivel ?
    

    domingo, 29 de dezembro de 2013 23:25
  • Fúlvio

       Você tem certeza disso, segue o código abaixo :

             Dim obj_paramFields As ParameterFields = New ParameterFields()
             Dim obj_paramField As ParameterField = New ParameterField()
             Dim obj_paramDiscrete As ParameterDiscreteValue = New ParameterDiscreteValue()
    
    1) Envio dos dados, dos parametros relacionados com a store procedure
    
             obj_paramField.ReportParameterType = ParameterType.StoreProcedureParameter
             obj_paramField.ParameterValueType = ParameterValueKind.StringParameter
             obj_paramField.PromptingType = DiscreteOrRangeKind.DiscreteValue
             obj_paramField.ParameterFieldName = "@parametro1"
             obj_paramDiscrete.Value = "valor1"
             obj_paramField.CurrentValues.Add(obj_paramDiscrete)
    
             obj_paramFields.Add(obj_paramField)
             crpt.ParameterFieldInfo = obj_paramFields
    2) Já a formula tentei apenas mudar o parametro abaixo, mais não deu certo.
    
            obj_paramField.ReportParameterType = ParameterType.ReportParameter
    
    3) Já utilizando o recurso abaixo deu certo a passagem de formula, agora estou acertando as rotinas, para verificar se utilizando os 2 recurso, vai dar tudo certo.
    
            rptPrint.DataDefinition.FormulaFields("Titulo_1").Text = "totext('" & "xx dados do formulario 1x xx" & "')"
            rptPrint.DataDefinition.FormulaFields("Titulo_2").Text = "totext('" & "xx dados do formulario 2x xx" & "')"
    
    4) Caso realmente tinha uma única forma, poderia pelo menos me enviar o envio de 1 informaçõe de cada item, (parametro e formula), para que possa identificar onde possa estar errando, seria possivel ?

    Eu tenho certeza que o componente que eu utilizei foi ReportView 

    e acabei de confirmar que você ta usando Crystal Report, o que eu fiz não funciona pra você porque faltou dizer na sua pergunta qual componente você ta usando !!!

    Fulvio Cezar Canducci Dias


    domingo, 29 de dezembro de 2013 23:34
  • Fúlvio

        O que estou utilizando é Visual Studio 2010 com vb.net, utilizando Windows Forms, com Crystal Report, com report view, e reportdocument, você saberia algo neste sentido ?

    domingo, 29 de dezembro de 2013 23:57
  • Fúlvio

        O que estou utilizando é Visual Studio 2010 com vb.net, utilizando Windows Forms, com Crystal Report, com report view, e reportdocument, você saberia algo neste sentido ?

    Então o exemplo que eu fiz foi com ReportView, OK!

    E você ta usando Crystal Report por isso que a solução na bate! e por isso que eu disse a você colocar sempre o que se ta fazendo ...!

    Eu sei sim a respeito, mas, eu mexo com ReportViewer por ser da própria ferramenta !!!


    Fulvio Cezar Canducci Dias

    segunda-feira, 30 de dezembro de 2013 00:00