crystal-reports - tutorial - crystal reports visual studio 2017
Crystal Reports-ParĂ¡metros predeterminados (2)
¿Está planeando ejecutar su informe de Crystal desde la interfaz de informes de Crystal o como un complemento integrado en otro programa (por ejemplo, puede usar el soporte de Crystal Enterprise ActiveX Designer Runtime Support - craxdrt.dll - en código VB)? En este último caso, es posible manipular todos los objetos del informe antes de iniciarlo. Los objetos como los parámetros se pueden actualizar según sus necesidades.
Como un ejemplo simple de dicha actualización de tiempo de ejecución, mi rutina de impresión de informes siempre comprobará si hay un campo llamado "printedBy" en el informe. En caso de que se encuentre este campo, su valor se establecerá en el nombre de dominio del usuario que solicita el informe y se imprimirá.
En un nivel superior, incluso puede cambiar la forma de la cadena SQL del informe para agregar filtros específicos que puedan heredarse de su código. Al hacerlo, es posible que ni siquiera necesite parámetros: deje que su código agregue los valores de filtrado ''sobre la marcha''
EDITAR: algunos ejemplos de código:
(m_rapport es un objeto CRAXDRT.report, ActiveSession es mi objeto de sesión actual)
If m_rapport.ParameterFields.Count > 0 Then
For i = 1 To m_rapport.ParameterFields.Count
If m_rapport.ParameterFields(i).Name = "{?PUB_DateDebutPeriode}" Then
m_rapport.ParameterFields(i).AddCurrentValue CDate(DateValue(sessionActive.dateDebutPeriode))
End If
If m_rapport.ParameterFields(i).Name = "{?PUB_DateFinPeriode}" Then
m_rapport.ParameterFields(i).AddCurrentValue CDate(DateValue(sessionActive.dateFinPeriode))
End If
If m_rapport.ParameterFields(i).Name = "{?PUB_id_Personne}" Then
m_rapport.ParameterFields(i).AddCurrentValue StringFromGUID(clientActif.id_Personne)
End If
Next i
Endif
También tengo otra función para cambiar el origen de datos del informe en tiempo de ejecución, de modo que los informes se puedan ejecutar en diferentes servidores / ubicaciones.
En los informes de Crystal, puede definir valores predeterminados para los parámetros del informe.
Por ejemplo, podría tener un intervalo de fechas y establecer un inicio predeterminado del 12/01/2008 y un final predeterminado del 31/12/2008.
¿Es posible modificar estos valores predeterminados en tiempo de ejecución? Por ejemplo:
1 - ¿Predeterminado al primer y último día del mes actual?
2 - ¿Predeterminado al primer y último día del calendario fiscal de una empresa propietaria? (es decir, búscalo en una base de datos)
3 - Primer y último día del año en curso?
Tú entiendes. es posible? Incluso estaría abierto a una solución que implique ejecutar una aplicación externa para acceder a los informes y modificarlos, si alguien sabe cómo hacerlo.
Editar:
Para responder a la pregunta planteada por Philippe Grondier, la mayoría de estos informes se ejecutan desde dentro de una aplicación. Esperaba algo más simple que manipular el objeto de cristal en tiempo de ejecución; Tengo las manos ocupadas ahora mismo para descubrir otras partes de esa API. Aunque podría echar un vistazo en el futuro.
Lea mi publicación Crystal Reports: Parámetros de rango de fechas nominales . Quizás puedas aprovechar esta técnica para tus propósitos.