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

Crystal Reports ¿sencillo?

Estas en el tema de Crystal Reports ¿sencillo? en el foro de .NET en Foros del Web. Muy buenas a todos. La verdad es que lo de Crystal Reports me está costando más de lo que pensaba. Hay mucha documentación por ahí, ...
  #1 (permalink)  
Antiguo 16/05/2005, 07:52
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Crystal Reports ¿sencillo?

Muy buenas a todos. La verdad es que lo de Crystal Reports me está costando más de lo que pensaba. Hay mucha documentación por ahí, pero es muy densa y no como en otras cosas, es difícil ir al grano.

Muy simple: en un WinForm he hecho una consulta a una base de datos y obtengo una tabla que la añado a un dataset. Me gustaría pasar esa tabla a un PDF por lo que he pensado en Crystal. Añado un nuevo elemento RPT al proyecto pero no sé qué hago en el diseño de ese documento, qué campos meter, etc. No es tan fácil como tener un Datagrid y pasarle el dataset como fuente de datos y se rellena sólo.

¿Por tanto, cómo le paso los datos del Dataset al informe?

Gracias y un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #2 (permalink)  
Antiguo 16/05/2005, 08:05
wok
 
Fecha de Ingreso: abril-2005
Mensajes: 37
Antigüedad: 19 años
Puntos: 0
Podes hacer algo así si tenes todo en un dataset

Dim pFrmReportes As New FrmReportes

Try
Dim mi_rptImprimirOrden As New RptImprimirOrden
Dim obuscar As New DataSet

Dim sr As System.IO.StringReader = New System.IO.StringReader(RecibirString(oWs.ImprimirO rden(orden)))
obuscar.ReadXml(sr)

If obuscar.Tables.Count > 0 Then
'=>seteamos los datos
mi_rptImprimirOrden.SetDataSource(obuscar.Tables(0 ))

mi_rptImprimirOrden.Refresh()

pFrmReportes.crptReport.ReportSource = mi_rptImprimirOrden

pFrmReportes.Text = "Ordene de trabajo"

pFrmReportes.Show() '=>Mostramos el reporte

pFrmReportes = Nothing

End If

Catch ex As Exception
Me.Cursor = Windows.Forms.Cursors.Default
MessageBox.Show(ex.Message, "Impresíón", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try


Yo lo que hago, es tambien tenerlo en un dataset como ves, pero no en memoria, si no que agrego al proyecto un dataset pero como un elemento (item)
Luego desde el rptImprimirOrden le paso ese dataset como data para tomar los fields y listo ;)

suerte, espero haberte ayudado
  #3 (permalink)  
Antiguo 16/05/2005, 09:25
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Gracias por responder, pero es que no lo entiendo mucho. Cosas como RptImprimirOrden, oWs, FrmReportes, no sé qué son exactamente.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #4 (permalink)  
Antiguo 16/05/2005, 09:30
wok
 
Fecha de Ingreso: abril-2005
Mensajes: 37
Antigüedad: 19 años
Puntos: 0
rptImprimirOrden ==> es el nombre de mi reporte de crystal report que agrege.

oWs ==> en esto ni te fijes, pero solo tene en cuenta, que de ahi estoy consumiendo un web service, y lo que tenes que tener en cuenta vos es que eso me devuelve datos que se los paso a OBUSCAR que es el dataset con la información que va a usar el RptImprimirOrden

frmReportes ==> es el formulario que contiene al control CRYSTAL REPORTS que se va a mostrar

suerte!
  #5 (permalink)  
Antiguo 17/05/2005, 05:57
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Ajá, gracias. Pues voy a ver qué puedo hacer.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #6 (permalink)  
Antiguo 17/05/2005, 07:01
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Bueno, pues lo he probado y me sale un error en el archivo C:\......\Temp\temp_beda............rpt: Número de Tabla no válido.

te pongo el código:

Código:
        Dim ds As New DataSet("dsInforme")
        ds.Tables.Add(dt)

        Try
            Dim myexportoptions As CrystalDecisions.Shared.ExportOptions
            Dim mydiskfiledestinationoptions As CrystalDecisions.Shared.DiskFileDestinationOptions
            Dim myexportfile As String
            Dim myreport As New Informe 'Este es el archivo de Crystal Reports
            myreport.SetDataSource(ds.Tables(0))
            myreport.Refresh()
            myexportfile = "D:\Miguel\Documentos\Qube\Qube\bin\informe.PDF"
            mydiskfiledestinationoptions = New CrystalDecisions.Shared.DiskFileDestinationOptions
            mydiskfiledestinationoptions.DiskFileName = myexportfile
            myexportoptions = myreport.ExportOptions()
            With myexportoptions
                .DestinationOptions = mydiskfiledestinationoptions
                .ExportDestinationType = .ExportDestinationType.DiskFile
                .ExportFormatType = .ExportFormatType.PortableDocFormat
            End With
            myreport.Export()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
La línea de rojo es la que da el error, por lo que probé también con:

myreport.SetDataSource(ds.Tables("Informe"))

que es como se llama la tabla.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #7 (permalink)  
Antiguo 17/05/2005, 07:29
wok
 
Fecha de Ingreso: abril-2005
Mensajes: 37
Antigüedad: 19 años
Puntos: 0
que error te da?
agarra, depuralo ahi, y con el inmediate pone
?oBuscar.tables.count
luego si existe
?oBuscar.tables(0).rows.count

para ver si existe tu tabla 0
me suena que esta mal el dataset porque tendia que andar
  #8 (permalink)  
Antiguo 17/05/2005, 07:43
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
De todas formas, si le paso sólo el DataSet sin especificar ninguna tabla también debería funcionar ¿no? De hecho, la tabla también debería estar bien, porque esa misma la utilizo para cargar un dataview y no da problemas.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #9 (permalink)  
Antiguo 17/05/2005, 08:38
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Espera un momento. Digamos que yo he añadido un elemento Crystal Reports al proyecto, pero no he añadido ningún campo ni nada de nada en el diseñador de CR.

Cuando le paso el DataSet pretendo que se genere una tabla en el reporte con los campos y filas de la tabla que contiene el DataSet, pero claro, en el reporte no hay ningún sitio en el que se especifique dóndo y cómo colocar esa tabla.

¿Qué tendría que añadir en el diseñador CR para que el DataSet que le paso se visualice?

Creo que ese era el problema, porque el PDF se generaba correctamente y no daba ningún tipo de error cuando lo único que hacía era pasarle un DataSet:

myreport.SetDataSource(ds)

por cierto, también quité la línea:

myreport.Refresh()
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #10 (permalink)  
Antiguo 17/05/2005, 08:51
wok
 
Fecha de Ingreso: abril-2005
Mensajes: 37
Antigüedad: 19 años
Puntos: 0
Ah bro, un momento.
Mi forma para hacerlo es esta; como te habia dicho al principio, yo creo el dataset como un item (como si fuera una clase, un form, o lo que sea) y cuando armo el reporte y me pregunta de donde voy a tomar los datos, le pongo desde ese DataSet !!!!!!

esto en realidad, lo hago para que me aparezcan la estructura del dataset, no es que los datos lo vaya a cargar desde ahi, los datos van desde el dataset en memoria; pero lo que hago para crear los "fields" es eso... pasarle la estructura de lo que le voy a dar via un dataset fijo, estático.

para esto hace boton derecho y anda a "ADD" ==> "ADD NEW ITEM" ==> y luego agregas un dataset.
a ese dataset, completalo con la estructura y tipos correspondiente ;)

luego cuando el CR te pregunte de donde vas a tomar los datos, ponele de ahi ;)
  #11 (permalink)  
Antiguo 17/05/2005, 08:52
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 19 años, 11 meses
Puntos: 0
Por que no creas un Dataset que no tenga que ver con la BD, apartir de esta creas el reporte y solo le asignas tu consulta.

Opps. Me ganaste
  #12 (permalink)  
Antiguo 17/05/2005, 09:00
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Ajá wok, lo pillé. Je je, me ha costado. Claro, en CR puedes definir el origen de datos, entre otros ADO.Net. Pero claro, yo decía: Pero si el DataSet no lo he creado todavía, ¿cómo se lo voy a asignar en el diseñador de CR?

Bien, vamos a ello pues. Ya te comentaré.

Un saludo y gracias.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #13 (permalink)  
Antiguo 17/05/2005, 09:26
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Cita:
Iniciado por wok
...a ese dataset, completalo con la estructura y tipos correspondiente ...
Ahí está el meollo de la cuestión. El dataset no tiene una estrucutra fija. He añadido el archivo dsInforme.xsd al proyecto.

Luego:

Código:
Dim ds As New dsInforme
    ds.Tables.Clear()
    ds.Tables.Add(dv.Table) 'dv es un DataView con las modificaciones de la consulta

   ......
   myreport.SetDataSource(ds)
Pero claro, al CR no le he podido añadir campos de base de datos porque el DataSet todavía no tiene tablas que seleccionar.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #14 (permalink)  
Antiguo 31/05/2005, 15:46
Avatar de laureano59  
Fecha de Ingreso: febrero-2005
Mensajes: 395
Antigüedad: 19 años, 2 meses
Puntos: 1
Hola Amigos del Foro

Si me pueden ayudar.
Estoy trabajando con ASP NET y postgres. Para hacer las conexiones lo hago con el NPGSQL. Todo funciona perfecto.

Lo que quiero ahora es utilizar eso mismo con los reportes alguien save como hacerlo SIN odbc sino con el NPGSQL.

Gracias
__________________
http://www.weblaum.com
Laureano Melo Medina
:arriba:
  #15 (permalink)  
Antiguo 01/06/2005, 02:34
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Amigo laureano ¿no crees que haces preguntas repetidas en lugares inadecuados?

Sólo es mi opinión vamos, pero a la vista de los mensajes que has escrito....

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
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 06:03.