Ver Mensaje Individual
  #10 (permalink)  
Antiguo 10/02/2012, 11:11
sAnto0s
 
Fecha de Ingreso: mayo-2011
Mensajes: 18
Antigüedad: 13 años
Puntos: 3
Respuesta: CrystalReports y parametros através de Textbox!!!

Hola, e echo algunos reportes con crystal y enviado parametros al crystal, te paso la forma de como lo ajo espero te ayude... (soy un poco nuevo con esto de los reportes....)
Para generar el crystal report utiliso un dataset este con los campos que requiero en el reporte...(el crystal report en lugar de conectarlo a la base de datos, le agrego el dataset)
En una de tus repuestas vi que dices que lo que requieres es enviar la info consultada previamente en tu formulario desde un boton enviando el ID del trabajador.... podemos hacer un reporte que muestre esta info consultandola desde la base de datos y no enviandole como parametro, te pongo los pasos.....

Voy por pasos....
1.- Genero un dataSet con los campos que requiero mostrar en reporte.
2.- Creo un nuevo reporte en blanco, a este reporte le database expert le agregego el dataset que se creo. Realizas el formato de tu reporte y agregas los campos del dataset.

3.- Creo una pag (PageReports.aspx) donde pongo mi crystalreportview (crv) y crystalreporsource(crs). Al crv voy a su propiedad ReportSourceID y le agrego el crs.

4.- Codigo para mostrar el reporte.

4.1 codigo en tu formulario para enviar el id del trabajador y mandar llamar la pagina que contendra el reporte. etse en algun boton. btnMostrar

Código:
Dim id As String = "4000=" & lblIDregistro.Text
            Dim strURL As String = "PageReports.aspx?" & id
            If Not id = "" Then               
                Response.Redirect(strURL)
            End If
4.2 Codigo en load para obtener el idtrabajador y mandar llamar la funcion que mostrara el reporte.

LOAD
Código:
dim idTrab as string = Request.Params("4000")
Call show(idTrab)
FUNCION QUE GENERA EL REPORTE
Código:
Public Sub show(idTrabajador as string)
        Try
            Me.lblError.Text = ""

            'Se verifica que id tengan información
            If Not idTrabajador = "" Then

                '[Inicia proceso para mostrar reporte]
                sqlConn.ConnectionString = strConn

                cmd.Connection = sqlConn
'aki ponemos la consulta que me genera la info, la que tienes en tu boton para mostrar la informaicón del trabajador en tu formulario
                cmd.CommandText = "select * from trabajadores where ID=" & idTrabajador 
                cmd.CommandType = CommandType.Text

                da.SelectCommand = cmd
                da.Fill(ds, "trabajadores")
              
                strReportName = "CrystalReport.rpt"  'aki ponemos el nombre del reporte              
                'aki ago un mapeo para encontrar la ruta del reporte
                crs.Report.FileName = Server.MapPath("Reports\" & strReportName)
                crs.ReportDocument.SetDataSource(ds)         

                '-->Pasar el parametro, encaso de que si envies parametros aki los envias      
                Dim auditor As String = "*Firma, **Nombre, Puesto y Firma"
                pd.Value = auditor
                nParametro.Add(pd)

                Parametros = crv.ParameterFieldInfo
                Parametros(0).CurrentValues = nParametro

            Else
                lblError.Text = "No se ha especificado el id del trabajador."
            End If

        Catch ex As Exception
            'lblError.Text = ex.Message & ex.InnerException.Message
            lblError.Text = ex.Message
        End Try
    End Sub
en la pagina que contiene el reporte tiene que agregar algunos imports.
Código:
Imports Microsoft.VisualBasic
Imports System
Imports System.Configuration
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Imports System.Data
Imports System.Data.OleDb
variables que se utilizan en el codigo
Código:
 Private strConn As String = System.Configuration.ConfigurationManager.ConnectionStrings("SACSConnectionString").ConnectionString
    Private sqlConn As New OleDbConnection
    Private cmd As New OleDbCommand

    Private strReportName As String = ""
    Private da As New OleDbDataAdapter
    Private ds As New DataSet
    Private rpt As ReportDocument
    Dim nParametro As New ParameterValues
    Dim pd As New ParameterDiscreteValue
    Dim pf As New ParameterField
    Dim Parametros As ParameterFields
Espero te ayude, en caso de que no le ayes en alguna parte del codigo me mandas un correo...
hace poco tuve tu mismo problema asi que por algun lugar de mi compu debo tener los link con tutoriales de como hacer el reporte....si tienes algun problema los busco y te los paso....

Suerte....