none
enviar datos de textbox a crystal report RRS feed

  • Pregunta

  • Disculpen que los moleste nuevamente, es que no he podido solucionar mi problema y ya me están apurando mucho mas con el sistema.

    Resulta que necesito enviar unos valores que están en textbox al crystal report, he probado con procedimientos, pero al momento de imprimir el informe me solicita en un cuadro de dialogo los valores, seria de gran ayuda si me pueden solucionar este problema, de ante mano muchas gracias...!

    • Cambiado Enrique M. Montejo martes, 10 de enero de 2012 18:08 consulta Crystal Reports (De:Lenguaje VB.NET)
    martes, 10 de enero de 2012 12:33

Todas las respuestas

  • hola

    no has evaluado usando parametros ? en el reporte

    Crystal Reports – Parameters – Como asignarlos desde codigo .net

     

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 10 de enero de 2012 12:40
  • Muchas gracias Leandro por la pronta respuesta, resulta que en el enunciado me habia equivocado y escribí procedimientos, pero en realidad era parametros, hice eso pero al momento de imrpimir el reporte me consulta en un cuadro de dialogo que escriba los parametros, y eso no deberia ser así, sabes si se puede arreglar eso? desde ya muchas gracias 
    martes, 10 de enero de 2012 12:51
  • pero si lo envias desde codigo no debiria pedir nada en nigun cuadro

    valida que asigans de forma correcta el parametro y que el nombre el que defines


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 10 de enero de 2012 13:06
  • Leandro, disculpe le mostraré el codigo que tengo si es que me puedes ayudar a decir donde esta el error...

     

    mi archivo .rpt se llama impresioningreso

    cree 3 parametros que se llaman: nombree, apellidopp, apellidomm

    en texto de solicitud no le puse nada, y tipo de archivo es cadena...

    Ahora en el formulario donde llamo al reporte programé lo siguiente.

    comienzo con las declaraciones

     

    Dim Parametros As ParameterFields = New ParameterFields()

        Dim nombree As ParameterField = New ParameterField()

        Dim apellidopp As ParameterField = New ParameterField()

        Dim apellidomm As ParameterField = New ParameterField()

        Dim myDiscreteValue1 As ParameterDiscreteValue = New ParameterDiscreteValue()

        Dim myDiscreteValue As ParameterDiscreteValue = New ParameterDiscreteValue()

        Dim myDiscreteValue2 As ParameterDiscreteValue = New ParameterDiscreteValue()

     

    luego seguí con esto....

     

    Public Sub LlenarReporte()

            'Creo una instancia de mi Reporte

            Dim info As New impresioningreso

            'info.SetDataSource(MiDataSetDatos)

            imprimeaudiencia.CrystalReportViewer1.ReportSource = info

        End Sub

    y luego ya en el boton imprimir viene esto...

     

    nombree.ParameterFieldName = "nombree"

            apellidopp.ParameterFieldName = "apellidopp"

            apellidomm.ParameterFieldName = "apellidomm"

            'Paso los Datos

            myDiscreteValue1.Value = Me.nombre.Text 'estos son los textbox

            myDiscreteValue.Value = Me.apellidop.Text

            myDiscreteValue.Value = Me.apellidom.Text

            nombree.CurrentValues.Add(myDiscreteValue1)

            apellidopp.CurrentValues.Add(myDiscreteValue)

            apellidomm.CurrentValues.Add(myDiscreteValue2)

            'Cargo los parametros y los envio al Crystal

            Parametros.Add(nombree)

            Parametros.Add(apellidopp)

            Parametros.Add(apellidomm)

            imprimeaudiencia.CrystalReportViewer1.ParameterFieldInfo = Parametros 'imprimeaudiencia es el winform que contiene el cryistalreport

            LlenarReporte()

            imprimeaudiencia.ShowDialog()

     

     

    disculpa si es muy largo pero es que ya necesito terminar esto y es lo ultimo que me falta, por favor si me puedes ayudar te lo agradeceria millones...

    martes, 10 de enero de 2012 13:33
  • veo que defines

            myDiscreteValue1.Value = Me.nombre.Text 'estos son los textbox

            myDiscreteValue.Value = Me.apellidop.Text

            myDiscreteValue.Value = Me.apellidom.Text

     

    o sea dso veces usas myDiscreteValue

    pero luego haces

    nombree.CurrentValues.Add(myDiscreteValue1)

            apellidopp.CurrentValues.Add(myDiscreteValue)

            apellidomm.CurrentValues.Add(myDiscreteValue2)

    o sea asignas myDiscreteValue2 pero nunca le has puesto un valor

     

     


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 10 de enero de 2012 13:41
  • Leandro, modifiqué el codigo asi lo he dejado...

     

     Dim Parametros As ParameterFields = New ParameterFields()

        Dim nombree As ParameterField = New ParameterField()

        Dim apellidopp As ParameterField = New ParameterField()

        Dim apellidomm As ParameterField = New ParameterField()

        Dim parametro As ParameterDiscreteValue = New ParameterDiscreteValue()

        Dim parametro1 As ParameterDiscreteValue = New ParameterDiscreteValue()

        Dim parametro2 As ParameterDiscreteValue = New ParameterDiscreteValue()

     

    Public Sub LlenarReporte()

            'Creo una instancia de mi Reporte

            Dim info As New impresioningreso

            'info.SetDataSource(MiDataSetDatos)

            imprimeaudiencia.crpw.ReportSource = info

        End Sub

    y en el boton imprimir...

    nombree.ParameterFieldName = "nombree"

            apellidopp.ParameterFieldName = "apellidopp"

            apellidomm.ParameterFieldName = "apellidomm"

     

            'Paso los Datos

     

            parametro.Value = Me.nombre.Text

            parametro1.Value = Me.apellidop.Text

            parametro2.Value = Me.apellidom.Text

     

            nombree.CurrentValues.Add(parametro)

            apellidopp.CurrentValues.Add(parametro1)

            apellidomm.CurrentValues.Add(parametro2)

     

            'Cargo los parametros y los envio al Crystal

     

            Parametros.Add(nombree)

            Parametros.Add(apellidopp)

            Parametros.Add(apellidomm)

     

            imprimeaudiencia.crpw.ParameterFieldInfo = Parametros

            LlenarReporte()

            imprimeaudiencia.ShowDialog()

    y aun asi me sigue pidiendo datos al momento de imprimir, le coloco datos y en el reporte coloca los datos que me pide, no los que llené en los textbox

    martes, 10 de enero de 2012 14:12
  • Hola rvargas, pudiste solucionarlo??... Pues yo te paso un código para pasar un parámetro... es este:

    Imports CrystalDecisions.Web
    Imports CrystalDecisions.CrystalReports.Engine
    Imports CrystalDecisions.Shared
    
    Partial Class NuevoText
        Inherits System.Web.UI.Page
    
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim param1Fileds As New CrystalDecisions.Shared.ParameterFields
            Dim param1Field As New CrystalDecisions.Shared.ParameterField
            Dim param1Range As New CrystalDecisions.Shared.ParameterDiscreteValue
    
    
            param1Field.ParameterFieldName = "rpe" ' Este es el nombre del parametro en el crystal
            param1Range.Value = TextBox1.Text ' el nombre de tu textbox
            param1Field.CurrentValues.Add(param1Range)
            param1Fileds.Add(param1Field) ' agregamos el parametro a la lista de parametros
            CRVText.ParameterFieldInfo = param1Fileds 'pasar el parametro a tu reportviewer
            Me.CRVText.ReportSource = ("TextViewer.rpt") 'mostramos el parámetro... espero y te sirva, y si te sale con más parametros me hechas un grito :p
    
        End Sub
    End Class
    


    El problema ocurre cuando quiero pasar más de uno, igual sobre este puedes trabajar y si te sale a mi también me ayudarías mucho, igual yo intentaré solucionarlo :p, aquí te dejo el que no jala en el que quiero meter más de un parámetro, con el primero no debes de tener problema...

    Imports CrystalDecisions.Web
    Imports CrystalDecisions.CrystalReports.Engine
    Imports CrystalDecisions.Shared
    
    Partial Class NuevoText
        Inherits System.Web.UI.Page
    
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim param1Fileds As New CrystalDecisions.Shared.ParameterFields
            Dim param1Field As New CrystalDecisions.Shared.ParameterField
            Dim param1Range As New CrystalDecisions.Shared.ParameterDiscreteValue
            Dim param2Fileds As New CrystalDecisions.Shared.ParameterFields
            Dim param2Field As New CrystalDecisions.Shared.ParameterField
            Dim param2Range As New CrystalDecisions.Shared.ParameterDiscreteValue
            Dim param3Fileds As New CrystalDecisions.Shared.ParameterFields
            Dim param3Field As New CrystalDecisions.Shared.ParameterField
            Dim param3Range As New CrystalDecisions.Shared.ParameterDiscreteValue
    
    
            param1Field.ParameterFieldName = "rpe"
            param1Range.Value = TextBox1.Text
            param1Field.CurrentValues.Add(param1Range)
            param1Fileds.Add(param1Field)
            CRVText.ParameterFieldInfo = param1Fileds
            param2Field.ParameterFieldName = "nombre"
            param2Range.Value = TextBox2.Text
            param2Field.CurrentValues.Add(param2Range)
            param2Fileds.Add(param2Field)
            CRVText.ParameterFieldInfo = param2Fileds
            param3Field.ParameterFieldName = "edad"
            param3Range.Value = TextBox3.Text
            param3Field.CurrentValues.Add(param3Range)
            param3Fileds.Add(param3Field)
            CRVText.ParameterFieldInfo = param3Fileds
            Me.CRVText.ReportSource = ("TextViewer.rpt")
    
        End Sub
    End Class
    

    De igual manera si Leandro Tuttini nos pudiera ayudar estaría excelente, ya que yo soy apenas un novato en asp, así que agradecería mucho sus comentarios... Saludos!!!...

    jueves, 9 de febrero de 2012 20:50
  • Pues aquí tengo uno que funciona pero el problema es que es en C# :S... Yo también lo quiero hacer funcionar en Visual Basic, pero aún no lo logro, u_u... Lo dejo por si a alguno le sirve :p...

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using CrystalDecisions.CrystalReports.Engine;
    using CrystalDecisions.Shared;
    
    public partial class OtroTextBox : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            ReportDocument rep = new ReportDocument();
            rep.Load(Server.MapPath("CrystalText.rpt"));
            
            CrystalDecisions.Shared.ParameterDiscreteValue nombre = new ParameterDiscreteValue();
            nombre.Value = TextBox1.Text;
    
            CrystalDecisions.Shared.ParameterDiscreteValue Edad = new ParameterDiscreteValue();
            Edad.Value = TextBox2.Text;
    
            rep.ParameterFields[0].CurrentValues.Add(nombre);
            rep.ParameterFields[1].CurrentValues.Add(Edad);
    
            this.CRVTexto.ReportSource = rep;
            this.CRVTexto.DataBind(); 
    
        }
    }

    Espero y alguien sepa como hacerle en Visual Basic, saludos!!!...

    jueves, 9 de febrero de 2012 21:38
  • Pues pasando el código de C# A Visual Basic queda así y funciono ya cuando le metí 2 parámetros, espero y les sirva n_n...

    Imports CrystalDecisions.Web
    Imports CrystalDecisions.CrystalReports.Engine
    Imports CrystalDecisions.Shared
    Partial Class VariosText
        Inherits System.Web.UI.Page
    
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim rep As ReportDocument = New ReportDocument
            rep.Load(Server.MapPath("TextCrystal.rpt"))
            Dim nombre As ParameterDiscreteValue = New ParameterDiscreteValue
            nombre.Value = TextBox1.Text
            Dim Edad As ParameterDiscreteValue = New ParameterDiscreteValue
            Edad.Value = TextBox2.Text
            rep.ParameterFields(0).CurrentValues.Add(nombre)
            rep.ParameterFields(1).CurrentValues.Add(Edad)
            Me.CRVTextBox.ReportSource = rep
            Me.CRVTextBox.DataBind()
            
        End Sub
    End Class

    viernes, 10 de febrero de 2012 15:39