Principales respuestas
Pasar variable de informe a subinforme en Crystal Reports

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;
CotizacionAhora 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.00Me 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
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
-
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
-
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
- Marcado como respuesta Renzo Piqué Barbieri 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
-
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
-
-
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
- Marcado como respuesta Renzo Piqué Barbieri miércoles, 15 de agosto de 2018 17:19