none
Pasar variable de informe a subinforme en Crystal Reports RRS feed

  • Pregunta

  • Hola. Revisé las opciones y no supe en qué categoría incluir la consulta, así que como estoy desarrollando en VB.NET 2013 la coloco acá.

    Tengo el siguiente problema. Desde mi aplicación, llamo a un informe desarrollado en Crystal Reports. No tengo inconvenientes con los parámetros, pasan perfectamente. En el informe tengo un SubInforme que recibe los parámetros del principal. Tampoco hay inconveniente con eso. Ahora bien, necesito hacer uso de una variable del informe (que llega por parámetro) en el SubInforme. (Y no es una variable de selección)

    Lo hice de esta manera:

    En campos de fórmula del Informe cree la fórmula: *Moneda* y dentro de ella coloqué:

    Shared numbervar Cotizacion;
    Cotizacion:={?VALORMONEDA};

    Luego en el SubInforme cree una fórmula llamada: *ValorMoneda* y coloqué dentro:

    Shared numbervar Cotizacion; 
    Cotizacion 

    Ahora bien, cuando intento utilizar *ValorMoneda* dentro de otra fórmula del SubInforme en la sección detalle, por ejemplo, la fórmula: *Exento*

    IF {IvaVentas.IVV_PORIVA} = 0.0 THEN
        Round({IvaVentas.IVV_NETO} / {@ValorMoneda}, 2)
    ELSE
        0.00

    Me aparece un error si pongo la variable *ValorMoneda* en el detalle: 

    Si la quito del detalle:

    SubInforme (Sin la variable en el detalle):

    De antemano, agradezco cualquier sugerencia que alguien tuviese.

    Muchas Gracias.


    Renzo Pique

    lunes, 13 de agosto de 2018 14:46

Respuestas

  • Hola Renzo:

    No me aclaro mucho con el código, lo que te pudo comentar es que en ocasiones similares, siempre lo soluciono con parámetros  y juego con los valores que puede tomar el mismo a través de código vb.net. Domino mucho mejor el valor que puede tomar el parámetro, esté dentro o fuera de una formula CR.

    Un saludo.

    Gemma

    • Propuesto como respuesta Pablo Rubio martes, 14 de agosto de 2018 22:55
    • Votado como útil Renzo Piqué Barbieri martes, 14 de agosto de 2018 22:59
    • Marcado como respuesta Pablo Rubio miércoles, 15 de agosto de 2018 21:47
    martes, 14 de agosto de 2018 9:28
  • Hola Gemma. Gracias por tu respuesta. Es que el parámentro va al reporte principal: 

                rpt.Load(ReportPath & "\FacturaElectronica" & LETRA & ".rpt")

                rpt.SetParameterValue("IDTRANSAC", IDTRANSAC)
                rpt.SetParameterValue("SUCURSAL", IDSUCURSAL)

                rpt.SetParameterValue("VALORMONEDA", VALORMONEDA)
                rpt.SetParameterValue("CODBARAFIP", CODBARCAE)
                rpt.SetParameterValue("PATHCODBAR", RutaCodBar)

    * Parámentros de Selección de Registros

    Puntualmente el parámentro VALORMONEDA es el que necesito en el subreporte al cual pasan los parámetros IDTRANSAC e IDSUCURSAL, porque son parámentros de selección de registros. No sé cómo pasarle el parámentro VALORMONEDA al subinforme.

    Gracias. 

    Saludos.


    Renzo Pique

    • Marcado como respuesta Pablo Rubio miércoles, 15 de agosto de 2018 21:47
    martes, 14 de agosto de 2018 21:47
  • Hola Gemma. Lo había probado previamente, y no funcionó. De todas maneras lo resolví. Estaba más o menos encaminado. 

    En campos de fórmula del Informe principal cree la fórmula: *Moneda* y dentro de ella coloqué:

    Shared numbervar Cotizacion;
    Cotizacion:={?VALORMONEDA}; (VALORMONEDA viene por parámetro)

    Agregué la fórmula "Moneda" en el encabezado de informe principal de manera oculta. 

    Luego en el SubInforme cree una fórmula llamada: *ValorMoneda* y coloqué dentro:

    Shared numbervar Cotizacion; 
    Cotizacion (Con ésto toma el valor de la variable pública mencionada en la fórmula Moneda del informe Principal)

    Ahí sí pude hacer uso de @ValorMoneda (como fórmula) desde cualquier parte del SubInforme.

    Gracias por Todo.


    Renzo Pique

    miércoles, 15 de agosto de 2018 17:19

Todas las respuestas

  • Hola Renzo:

    No me aclaro mucho con el código, lo que te pudo comentar es que en ocasiones similares, siempre lo soluciono con parámetros  y juego con los valores que puede tomar el mismo a través de código vb.net. Domino mucho mejor el valor que puede tomar el parámetro, esté dentro o fuera de una formula CR.

    Un saludo.

    Gemma

    • Propuesto como respuesta Pablo Rubio martes, 14 de agosto de 2018 22:55
    • Votado como útil Renzo Piqué Barbieri martes, 14 de agosto de 2018 22:59
    • Marcado como respuesta Pablo Rubio miércoles, 15 de agosto de 2018 21:47
    martes, 14 de agosto de 2018 9:28
  • Hola Gemma. Gracias por tu respuesta. Es que el parámentro va al reporte principal: 

                rpt.Load(ReportPath & "\FacturaElectronica" & LETRA & ".rpt")

                rpt.SetParameterValue("IDTRANSAC", IDTRANSAC)
                rpt.SetParameterValue("SUCURSAL", IDSUCURSAL)

                rpt.SetParameterValue("VALORMONEDA", VALORMONEDA)
                rpt.SetParameterValue("CODBARAFIP", CODBARCAE)
                rpt.SetParameterValue("PATHCODBAR", RutaCodBar)

    * Parámentros de Selección de Registros

    Puntualmente el parámentro VALORMONEDA es el que necesito en el subreporte al cual pasan los parámetros IDTRANSAC e IDSUCURSAL, porque son parámentros de selección de registros. No sé cómo pasarle el parámentro VALORMONEDA al subinforme.

    Gracias. 

    Saludos.


    Renzo Pique

    • Marcado como respuesta Pablo Rubio miércoles, 15 de agosto de 2018 21:47
    martes, 14 de agosto de 2018 21:47
  • Hola Renzo.

    Simplemente tienes que crear el parámetro en tu subinforme. Dicho parámetro lo tienes que vincular con el del mismo nombre que ya tienes creado en tu informe principal. Eso es todo.

    Un saludo.

    Gemma

    miércoles, 15 de agosto de 2018 4:58
  • Hola Gemma. Lo había probado previamente, y no funcionó. De todas maneras lo resolví. Estaba más o menos encaminado. 

    En campos de fórmula del Informe principal cree la fórmula: *Moneda* y dentro de ella coloqué:

    Shared numbervar Cotizacion;
    Cotizacion:={?VALORMONEDA}; (VALORMONEDA viene por parámetro)

    Agregué la fórmula "Moneda" en el encabezado de informe principal de manera oculta. 

    Luego en el SubInforme cree una fórmula llamada: *ValorMoneda* y coloqué dentro:

    Shared numbervar Cotizacion; 
    Cotizacion (Con ésto toma el valor de la variable pública mencionada en la fórmula Moneda del informe Principal)

    Ahí sí pude hacer uso de @ValorMoneda (como fórmula) desde cualquier parte del SubInforme.

    Gracias por Todo.


    Renzo Pique

    miércoles, 15 de agosto de 2018 17:19