Foros del Web » Programación para mayores de 30 ;) » .NET »

Ayuda Crystal Reports

Estas en el tema de Ayuda Crystal Reports en el foro de .NET en Foros del Web. Hola Amigos del foro: Necesito saber como puedo hacer para que en tiempo de ejecución me aparezcan ciertos campos o nó en un reoprte hecho ...
  #1 (permalink)  
Antiguo 30/12/2004, 04:46
 
Fecha de Ingreso: febrero-2004
Mensajes: 8
Antigüedad: 20 años, 2 meses
Puntos: 0
Ayuda Crystal Reports

Hola Amigos del foro: Necesito saber como puedo hacer para que en tiempo de ejecución me aparezcan ciertos campos o nó en un reoprte hecho en vbnet y con crystal report.
Me explico:
Hay un formulario que el usuario pincha algunos checkbox que van a ser incuidos en el informe tales como Carnet,nombre,apellido,telefono,edad etc y este usuario selectivamente escoge los datos que desea que salgan en el reporte.
Como se puede hacer esto?
Gracias
  #2 (permalink)  
Antiguo 04/01/2005, 01:33
 
Fecha de Ingreso: febrero-2004
Ubicación: Granada
Mensajes: 26
Antigüedad: 20 años, 2 meses
Puntos: 0
Vamos a ver si soy capaz de explicarlo. Es un poco complicado.
Para poder condicionar la forma en que se imprimirán los datos debes cargar el report a través de código para poder hacer las comprobaciones y las asignaciones sobre los datos y los campos que necesites.
Por ejemplo: Tú tienes un report que se llama "ParteAccidente" y que tiene 200 campos en los que se imprimirán datos.
En los campos "txtAccidentado y Text177" necesitas que se modifique la información según los datos introducidos. En el caso del primer campo necesitas juntar la información de 3 campos en uno. En el caso del segundo aparecerá un "SI" o "NO" según el dato que contenga en la base de datos el registro asociado a este campo.
Pues bien, en el código siguiente explica como debes hacer las declaraciones, comprobaciones y asignaciones para que te salga como tu quieres.

EMPEZAMOS EL CODIGO

La clase CParte es la que recoge y asigna los campos del report para poder hacer las asignaciones según nos interese. En el ejemplo, "txtAccidentado" y "Text177" son dos campos del report llamado "ParteAccidente"


Public Class CParte

Public documentoCR As ParteAccidente

Public Sub New()
documentoCR = New ParteAccidente
End Sub

Public Sub Accidentado(ByVal texto As String)
Dim objetoTexto As CrystalDecisions.CrystalReports.Engine.TextObject
objetoTexto = CType(documentoCR.Section5.ReportObjects("TxtAccid entado"), CrystalDecisions.CrystalReports.Engine.TextObject)
objetoTexto.Text = texto
End Sub

Public Sub EACTCTR(ByVal texto As String)
Dim objetoTexto As CrystalDecisions.CrystalReports.Engine.TextObject
objetoTexto = CType(documentoCR.Section3.ReportObjects("Text177" ), CrystalDecisions.CrystalReports.Engine.TextObject)
objetoTexto.Text = texto
End Sub

. Debe haber tantos Sub Nombre_Campo como campos quieras chequear
. Aquí seguiría el código para el resto de asignaciones.
.


En la siguiente clase es donde se hacen las comprobaciones y las asignaciones de los datos que se imprimirán en el report. Por ejemplo: el registro "EACTCTR" de la base de datos corresponde al campo "Text177" del report.

Imports CrystalDecisions.CrystalReports.Engine
Imports System.IO
Imports System.Threading
Imports System.Data
Imports System.Data.SqlClient

Public Class CInforme

Dim Pe As CDatosPersonales
Dim Tr As CDatosTrabajador
Dim Em As CDatosEmpresa
Dim Lu As CDatosLugar
Dim Ac As CDatosAccidente
Dim Ai As CDatosAsistenciales
Dim Ec As CDatosEconomicos
Dim At As CDatosActores
Dim SB As CDatosSinBaja
Dim conectaC As String
Dim informe As ParteAccidente
Dim informeSB As ParteSinBaja
Dim dts As dsPrueba
Dim dts4 As dsSinBaja
Dim casque As Boolean


Public Sub New()
'Recupera la cadena de conexión de la variable definida en Web.config
conectaC = System.Configuration.ConfigurationSettings.AppSett ings("cadenaCon")
dts = New dsPrueba()
dts4 = New dsSinBaja()
End Sub

Public Function Imprimir(ByVal vPer As CDatosPersonales, ByVal vTra As CDatosTrabajador, ByVal vEmp As CDatosEmpresa, ByVal vLug As CDatosLugar, ByVal vAcc As CDatosAccidente, ByVal vAsi As CDatosAsistenciales, ByVal vEco As CDatosEconomicos, ByVal vAct As CDatosActores, ByVal Puede As String) As String
casque = False
Pe = New CDatosPersonales()
Tr = New CDatosTrabajador()
Em = New CDatosEmpresa()
Lu = New CDatosLugar()
Ac = New CDatosAccidente()
Ai = New CDatosAsistenciales()
Ec = New CDatosEconomicos()
At = New CDatosActores()
AsignarDatos(vPer, vTra, vEmp, vLug, vAcc, vAsi, vEco, vAct, Puede)
If casque = False Then
Dim informe As CParte

informe = New CParte()
informe.documentoCR.SetDataSource(dts)
Dim texto As String
'Asigna el nombre del accidentado
texto = dts.Tables(0).Rows(0)("TAPE1") + " " + dts.Tables(0).Rows(0)("TAPE2") + ", " + dts.Tables(0).Rows(0)("TNOM")
informe.Accidentado(texto)
'Comprueba si actuaba como contrata
If dts.Tables(0).Rows(0)("EACTCTR") = "0" Then
texto = "NO"
Else
texto = "SI"
End If
informe.EACTCTR(texto)
.
. Aquí seguirían el resto de comprobaciones y al final imprime el documento
. En mi caso la impresora genera un PDF. Si no se indica impresora imprime
. por la impresora por defecto.

Try
' Imprimir documento
Dim impresora As String
impresora = "Jaws PDF Creator"
informe.documentoCR.PrintOptions.PrinterName = impresora
informe.documentoCR.PrintToPrinter(1, False, 0, 0)
Catch e As Exception
Return e.Message
Exit Function
End Try
End If
End Function

' Este sería el código a imprimir en el Button para iniciar el proceso de impresión.

Dim informe As CInforme
informe = New CInforme()
' Se asignan los datos que se van a imprimir
fich = informe.Imprimir(Per, Tra, Emp, Lug, Acc, Asist, Eco, Act, puede)


IMPORTANTE: Observa que en todas las declaraciones de las diferentes clases la variable es la misma "informe". Para encadenar las asignaciones y comprobaciones sin problemas, deben llamarse igual.
Dim informe As Cinforme
Dim informe As CParte

Este ejemplo y este código son para .NET

Espero que te sirva. Ya me dirás algo.

Un saludo

Última edición por tolotoco; 04/01/2005 a las 01:53 Razón: Faltan explicaciones
  #3 (permalink)  
Antiguo 04/01/2005, 03:44
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Cita:
Public Sub Accidentado(ByVal texto As String)
Dim objetoTexto As CrystalDecisions.CrystalReports.Engine.TextObject
objetoTexto = CType(documentoCR.Section5.ReportObjects("TxtAccid entado"), CrystalDecisions.CrystalReports.Engine.TextObject)
objetoTexto.Text = texto
End Sub
¿Con esto ya estamos agregando al Crystal Report un nuevo campo junto con su Label?, si la respuesta es si, ¿En que lugar se está indicando la posición X e Y de la caja de texto?

Saludos.
__________________
Charlie.
  #4 (permalink)  
Antiguo 05/01/2005, 01:01
 
Fecha de Ingreso: febrero-2004
Ubicación: Granada
Mensajes: 26
Antigüedad: 20 años, 2 meses
Puntos: 0
No. Con eso lo que hacemos es definir el Textbox en el código para poder trabajar con él y cambiarle el dato que contiene.

El report hay que diseñarlo con el Crystal Reports entero y enlazarle el origen de datos, sea el que sea y, una vez creado podemos, a través del código que os he pasado, hacer referencia a los campos del report para trabajar con ellos.

Un saludo
  #5 (permalink)  
Antiguo 02/02/2008, 09:57
 
Fecha de Ingreso: febrero-2008
Mensajes: 2
Antigüedad: 16 años, 3 meses
Puntos: 0
Sonrisa Re: Ayuda Crystal Reports

una consulta quiero saber como pasar los datos de cajas de texto de un formulario de mi proyecto al cristal report porque los resultados de mi recordset son numericos y muchas veces he hecho codiciones al momento de pintarlos en las cajas de texto para aparezca en texto y no numerico, favor favor necesto saber como mandar esos datos a un reporte.... gracias y si pueden como mandar 3 grid a la vez al mismo reporte.... gracias..... totales
  #6 (permalink)  
Antiguo 02/02/2008, 09:58
 
Fecha de Ingreso: febrero-2008
Mensajes: 2
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Ayuda Crystal Reports

una consulta quiero saber como pasar los datos de cajas de texto de un formulario de mi proyecto al cristal report 9.0 porque los resultados de mi recordset son numericos y muchas veces he hecho codicionales al momento de pintarlos en las cajas de texto para aparezca en texto y no numerico, favor favor necesto saber como mandar esos datos a un reporte.... gracias y si pueden como mandar 3 grid a la vez al mismo reporte (cada uno tiene su propio recordset).... gracias..... totales
  #7 (permalink)  
Antiguo 04/02/2008, 02:46
 
Fecha de Ingreso: febrero-2004
Ubicación: Granada
Mensajes: 26
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: Ayuda Crystal Reports

kikipf, te ha mandado un privado con mi E-Mail para poder enviarte un archivo en el que te explico con detalle como se hace.

Un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:14.