Crystal Report con Parametros. Solucion.
Publicado por r_hyno (2 intervenciones) el 02/02/2007 18:37:21
Bueno, primero que nada, agradeciendo al foro, ya que de aquí he sacado un sin numero de referencias sin siquiera haber preguntado nada. Voy a lo que me compete, este es una pequeña ayuda lo mejor detallada posible para usuarios que no saben jugar con el crystal report.
Programas usados. Visual Basic .NET 2003, Crystal Report 11 y BD Access.
Entonces vamos.
1. Crearemos 2 forms de windows los llamaresmos frmform y frmrpt tal como suena uno para agregara textbox, labels, combos, etc., y el otro para ver el reporte. y un reporte de cristal report que llamaremos CR.rpt
2. Pondremos un textbox en el frmform llamado txtcod el que hara de variable para pasar al reporte y nos muestre lo que desemos.
3. En el frmrpt colocaremos un crystalreportviewer1 para llamar al reporte.
Creando el reporte.
1. Se da por hecho que el reporte se sabe hacer.(CR.rpt)
2. la variable o parámetro que hara que nos muestre los demas datos es la importante.
3. ponte en el Reporte CR.rpt y al costado izquierdo arriba busca donde dice PARAMETER FIELD, boton derecho del mouse y dale NEW, luego SET DEFAULT VALUES y te BROWSE TABLE y BROWSE FIELD busca aquí la variable (Campo) que desees y dale OK y OK.
4. Ahora de ahí mismo arrástralo al reporte y apreta encima de el boton del lado derecho del mouse y apreta SELECT EXPERT y apreta SHOW FORMULA y debería aparecerte algo como {TABLA.CAMPO} = {?PARAMETRO}, donde TABLA es la tabla donde sacas el campo, CAMPO es el campo que vas a igualar y PARAMETRO es el campo que pusiste en PARAMETER FIELDS, casi siempre tiene el mismo nombre, en mi caso me aparece de la siguiente manera : {informe.CODALUMNO} = {?codalumno})
5. Terminamos con el Reporte.
Del FRMFORM:
1. Agregamos en txtcod y un boton btnreporte.
2. en btnrporte llamamos al FRMRPT. (_Click)
Dim Reporte As New FrmRpt
Reporte.ShowDialog()
Existe la opción también de llevar a una variable global el txtcod. En este caso haremos txtcod.txt = variable_cod. La variable global ha sido creada como. Public variable_cod As String
Del FRMRPT:
1. Insertamos un control crystalreportviewer1 que se encuentra en la parte baja de las TOOLS.
2. En las propiedades de este control busca REPORTSOURCE y busca el reporte que ya creaste llamado CR.rpt
Ahora viene lo interesante de este asunto. Tienes que ir al codigo de FRMRPT.
1. Definamos las variables a utilizar.
‘llamamos al reporte
Dim crReportDocument As CR
Dim crParameterFieldDefinitions As ParameterFieldDefinitions
Dim crParameterFieldDefinition As ParameterFieldDefinition
Dim crParameterValues As ParameterValues
Dim crParameterDiscreteValue As ParameterDiscreteValue
2. Vamos #Region " Windows Form Designer generated code " e insertamos el siguiente código
''Creamos la instancia para llamar al reporte
crReportDocument = New CR
''Lenamos el parametros que se mostrarar en el reporte
crParameterFieldDefinitions = crReportDocument.DataDefinition.ParameterFields
''Especificamos el parametro que hara de variable en el reporte en nustro caso sera
crParameterFieldDefinition = crParameterFieldDefinitions.Item("PARAMETRO")
''Le daramos al paraametro los valores que nos entrego el Frmform. Antes de esto el parámetro era cero.
crParameterValues = crParameterFieldDefinition.CurrentValues
''Llamaremos al parametro del Frmform. crParameterDiscreteValue = New ParameterDiscreteValue
crParameterDiscreteValue.Value = variable_cod
''Se agrega el valor de variable_cod al parametro a entrega al reporte
crParameterValues.Add(crParameterDiscreteValue)
''El parámetro permite valores multiples, el objeto necesita ser reajustado. Se destruye el anterio y se crea un nuevo crParameterDiscreteValue = Nothing
''Todos los valores del paremtro actual se deben solicitor al campo del paramtro.
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)
''Llamamos al control del reporte.
CrystalReportViewer2.ReportSource = crReportDocument
No hay nada mas k colocar en el FRMRPT.
Sin mas que agregar, espero que les sirva, si alguien le interesa el ejemplo, lo hago y lo envio a los correos no hay problema.
Gracias.
Programas usados. Visual Basic .NET 2003, Crystal Report 11 y BD Access.
Entonces vamos.
1. Crearemos 2 forms de windows los llamaresmos frmform y frmrpt tal como suena uno para agregara textbox, labels, combos, etc., y el otro para ver el reporte. y un reporte de cristal report que llamaremos CR.rpt
2. Pondremos un textbox en el frmform llamado txtcod el que hara de variable para pasar al reporte y nos muestre lo que desemos.
3. En el frmrpt colocaremos un crystalreportviewer1 para llamar al reporte.
Creando el reporte.
1. Se da por hecho que el reporte se sabe hacer.(CR.rpt)
2. la variable o parámetro que hara que nos muestre los demas datos es la importante.
3. ponte en el Reporte CR.rpt y al costado izquierdo arriba busca donde dice PARAMETER FIELD, boton derecho del mouse y dale NEW, luego SET DEFAULT VALUES y te BROWSE TABLE y BROWSE FIELD busca aquí la variable (Campo) que desees y dale OK y OK.
4. Ahora de ahí mismo arrástralo al reporte y apreta encima de el boton del lado derecho del mouse y apreta SELECT EXPERT y apreta SHOW FORMULA y debería aparecerte algo como {TABLA.CAMPO} = {?PARAMETRO}, donde TABLA es la tabla donde sacas el campo, CAMPO es el campo que vas a igualar y PARAMETRO es el campo que pusiste en PARAMETER FIELDS, casi siempre tiene el mismo nombre, en mi caso me aparece de la siguiente manera : {informe.CODALUMNO} = {?codalumno})
5. Terminamos con el Reporte.
Del FRMFORM:
1. Agregamos en txtcod y un boton btnreporte.
2. en btnrporte llamamos al FRMRPT. (_Click)
Dim Reporte As New FrmRpt
Reporte.ShowDialog()
Existe la opción también de llevar a una variable global el txtcod. En este caso haremos txtcod.txt = variable_cod. La variable global ha sido creada como. Public variable_cod As String
Del FRMRPT:
1. Insertamos un control crystalreportviewer1 que se encuentra en la parte baja de las TOOLS.
2. En las propiedades de este control busca REPORTSOURCE y busca el reporte que ya creaste llamado CR.rpt
Ahora viene lo interesante de este asunto. Tienes que ir al codigo de FRMRPT.
1. Definamos las variables a utilizar.
‘llamamos al reporte
Dim crReportDocument As CR
Dim crParameterFieldDefinitions As ParameterFieldDefinitions
Dim crParameterFieldDefinition As ParameterFieldDefinition
Dim crParameterValues As ParameterValues
Dim crParameterDiscreteValue As ParameterDiscreteValue
2. Vamos #Region " Windows Form Designer generated code " e insertamos el siguiente código
''Creamos la instancia para llamar al reporte
crReportDocument = New CR
''Lenamos el parametros que se mostrarar en el reporte
crParameterFieldDefinitions = crReportDocument.DataDefinition.ParameterFields
''Especificamos el parametro que hara de variable en el reporte en nustro caso sera
crParameterFieldDefinition = crParameterFieldDefinitions.Item("PARAMETRO")
''Le daramos al paraametro los valores que nos entrego el Frmform. Antes de esto el parámetro era cero.
crParameterValues = crParameterFieldDefinition.CurrentValues
''Llamaremos al parametro del Frmform. crParameterDiscreteValue = New ParameterDiscreteValue
crParameterDiscreteValue.Value = variable_cod
''Se agrega el valor de variable_cod al parametro a entrega al reporte
crParameterValues.Add(crParameterDiscreteValue)
''El parámetro permite valores multiples, el objeto necesita ser reajustado. Se destruye el anterio y se crea un nuevo crParameterDiscreteValue = Nothing
''Todos los valores del paremtro actual se deben solicitor al campo del paramtro.
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)
''Llamamos al control del reporte.
CrystalReportViewer2.ReportSource = crReportDocument
No hay nada mas k colocar en el FRMRPT.
Sin mas que agregar, espero que les sirva, si alguien le interesa el ejemplo, lo hago y lo envio a los correos no hay problema.
Gracias.
Valora esta pregunta


0