Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Subreport Crystal Reports XI

Estas en el tema de Subreport Crystal Reports XI en el foro de Visual Basic clásico en Foros del Web. Hola, estoy usando Visual Basic 6 en el cual tengo conectada una base de datos Access 2003. Tengo un formulario en el que se llama ...
  #1 (permalink)  
Antiguo 27/02/2007, 17:37
 
Fecha de Ingreso: junio-2002
Mensajes: 243
Antigüedad: 21 años, 10 meses
Puntos: 1
Pregunta Subreport Crystal Reports XI

Hola, estoy usando Visual Basic 6 en el cual tengo conectada una base de datos Access 2003.

Tengo un formulario en el que se llama a un informe de crystal reports y me muestra el informe correctamente.

Mi problema está en que dicho informe contiene un subreport, y en la vista previa de Crystal se muestra correctamente pero cuando lo llamo desde visual faltan los datos del subreporte que se cojen de una consulta al a base de datos.

He dejado la parte donde va la llamada al subreport en blanco ya que como no funciona, para no liar....

A continuación os muestro el código q uso para llamar al reporte...

Código:
Dim crxApplication As New CRAXDRT.Application
' Declare report object
Dim crxReport As CRAXDRT.Report
' Declare database objects
Dim crxDatabase As CRAXDRT.Database
Dim crxDatabaseTables As CRAXDRT.DatabaseTables
Dim crxDatabaseTable As CRAXDRT.DatabaseTable

Set conn = New ADODB.Connection
conn.CursorLocation = adUseClient
conn.ConnectionString = conexion
conn.Open

Dim sentencia As String

Dim rs As New ADODB.Recordset

sentencia = " consulta "

Set rs = conn.Execute(sentencia)
Screen.MousePointer = vbHourglass
Set crxReport = crxApplication.OpenReport(App.Path & "\report.rpt")
crxReport.DiscardSavedData


Set crxDatabase = crxReport.Database
Set crxDatabaseTables = crxDatabase.Tables
crxReport.Database.SetDataSource rs

' ******************* Subreport *************************




' *****************************************************

crViewer.ReportSource = crxReport


crViewer.ViewReport
crViewer.Zoom 100
Screen.MousePointer = vbDefault
Gracias.
  #2 (permalink)  
Antiguo 28/02/2007, 13:42
 
Fecha de Ingreso: febrero-2004
Mensajes: 29
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: Subreport Crystal Reports XI

perdona por lo que veo sabes como funciona el crystal report, perdona que te responda con una pregunta pero esque estoy desesperado, mira:

-.un formulario con un control CrystalActiveXReportViewer1
-.un reporte enlazado a una base de datos access 97 que en cristal en el preview funciona y se ven todos los datos que necesito

pregunta:... como enlazo el reporte con el control ya que en las propiedades no tiene nada donde ponerle la ruta del reporte a visualizar

gracias por leerme y si no te importa ayudarme.... gracias de antemano
  #3 (permalink)  
Antiguo 28/02/2007, 13:55
 
Fecha de Ingreso: junio-2002
Mensajes: 243
Antigüedad: 21 años, 10 meses
Puntos: 1
Re: Subreport Crystal Reports XI

Pues lo esencial para enlazar correctamente el reprote lo he escrito arriba.

Donde pone consulta pon la query q estes usando en el crystal. Si usas directamente una tabla sin usar la opcion de comando pues pon "select * from tabla"

Pq la cacena de conexión desde visual te funciona y tal?

en mi caso el CrystalActiveXReportViewer1 le llamo crViewer

Pro lo demás no se quizás si pones algo de código pueda ayudarte... prueba con lo que he puesto a ver...

no he puesto la parte de como passar parámetros al report te lo pongo por si te es de ayuda...

Básicamente uso 2 modos definiendo formulas en blanco o con valor 0 (así no se queja crystal) o usando parámetros.

crxReport.FormulaFields(1).Text = var1

crxreport.ParameterFields(1).AddCurrentValue(var2)

Diria que el inidice lo calcula segun en el orden que hayas agregado los parámetros (no según se muestren ni alfabéticamente...)

SAlu2.
  #4 (permalink)  
Antiguo 28/02/2007, 19:02
 
Fecha de Ingreso: junio-2002
Mensajes: 243
Antigüedad: 21 años, 10 meses
Puntos: 1
Re: Subreport Crystal Reports XI

Bueno ya he encontrado la solución... me ha llevado variso dias pero al final lo he conseguido jeje

ya me puedo ir a domir me siento realizado jaja

Beuno pues el tema principal esta en que curiosamente hay q establecer los datasource de los SubReportes antes del datasource del reporte principal... pq sino no se pq pero es como si se machacara....

Cuando tena el código pulido os lo pongo... ya que he cojido un ejemplo para ver como pone lso datasource de lso subreports y tal... y sobra bastante codigo innecessario...

Salu2.
  #5 (permalink)  
Antiguo 28/02/2007, 19:16
 
Fecha de Ingreso: junio-2002
Mensajes: 243
Antigüedad: 21 años, 10 meses
Puntos: 1
Re: Subreport Crystal Reports XI

Bueno os pongo el código completo... que llama a un reprote y 2 subreportes...

Código:
Dim objReportApp As New CRAXDRT.Application
Dim objReport As CRAXDRT.Report
Dim objReportInner As CRAXDRT.Report
Dim objDatabaseTable As CRAXDRT.DatabaseTable
Dim objDatabase As CRAXDRT.Database
Dim objSections As CRAXDRT.Sections
Dim objSection As CRAXDRT.Section
Dim objReportObjs As CRAXDRT.ReportObjects
Dim objReportObj As Object
Dim objSubReport As CRAXDRT.SubreportObject

Dim sentencia As String
Dim rs As New ADODB.Recordset
Dim rsSub1 As New ADODB.Recordset
Dim rsSub2 As New ADODB.Recordset

Set conn = New ADODB.Connection
conn.CursorLocation = adUseClient
conn.ConnectionString = conexion
conn.Open


sentencia = " consulta del report "

Set rs = conn.Execute(sentencia)

' setup the report objects
Set objReport = objReportApp.OpenReport(App.Path & "\report.rpt")
        
' indicate we want the status window to display
objReport.DisplayProgressDialog = True
        


' ****************************** Subreport ***********************************
              
' set the database for the subreport(s) in the report
' set the section object to reference the report sections
Set objSections = objReport.Sections
        
' scan through all the sections in the report
For Each objSection In objSections
    ' set a reference to the report object found in the current Sections
    Set objReportObjs = objSection.ReportObjects
               
    ' scan through the current object found in the current Section
    For Each objReportObj In objReportObjs
        ' check if the current object in the current section is a subreport
        If objReportObj.Kind = crSubreportObject Then
            ' set a reference to this sub report
            Set objSubReport = objReportObj
            Set objReportInner = objSubReport.OpenSubreport
            objReportInner.DiscardSavedData
                    
            If objSubReport.SubreportName = "titol" Then
                        
                sentencia = "consulta subreporte 1"
                        
                Set rsSub1 = conn.Execute(sentencia)
                        
            Else
                sentencia = "consulta subreporte 2"
                
                Set rsSub2 = conn.Execute(sentencia)
        
            End If
            
            ' scan through each table in the subreport
            For Each objDatabaseTable In objReportInner.Database.Tables
                If objSubReport.SubreportName = "subreporte1" Then
                    objDatabaseTable.SetDataSource rsSub1
                Else
                    objDatabaseTable.SetDataSource rsSub2
                End If
            Next objDatabaseTable
        End If
    Next objReportObj
Next objSection

'**********************************************************************************

objReport.DiscardSavedData

' set the database to use for this report
For Each objDatabaseTable In objReport.Database.Tables
    objDatabaseTable.SetDataSource rs
Next objDatabaseTable

crViewer.ReportSource = objReport

objReport.FormulaFields(4).Text = var1


crViewer.ViewReport
crViewer.Zoom 100
Screen.MousePointer = vbDefault
Espero que le sirva a alguien de algo....

Salu2
  #6 (permalink)  
Antiguo 01/03/2007, 02:19
 
Fecha de Ingreso: febrero-2004
Mensajes: 29
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: Subreport Crystal Reports XI

el tema es que no tengo codigo todavia abro la bd:

Option Explicit
Dim basededatos As Database
Dim tablasocios As Recordset
Private Sub Form_Load()
Set basededatos = OpenDatabase("C:\Programa Gestion Aikido\socios.mdb ")
Set tablasocios = basededatos.OpenRecordset("miembros_club")
End Sub

con el codigo que pones me pierdo, no hago ningun filtro es un listado completo
por favor ayuda o recomiendame un buen manual para aprender yo


gracias de todos modos

y saludos
  #7 (permalink)  
Antiguo 01/03/2007, 04:51
 
Fecha de Ingreso: junio-2002
Mensajes: 243
Antigüedad: 21 años, 10 meses
Puntos: 1
Re: Subreport Crystal Reports XI

Bàsicamente el còdigo que se encarga de enlazar el report es el siguiente:

Código:
Dim crxApplication As New CRAXDRT.Application
Dim crxReport As CRAXDRT.Report

Set crxReport = crxApplication.OpenReport(App.Path & "\report.rpt")

crViewer.ReportSource = crxReport

crViewer.ViewReport
crViewer.Zoom 100
Screen.MousePointer = vbDefault
Lo que passa es que si no le indicas el datasource ni usas discardsaveddata el reporte será estático, osease que por mucho q actualices la bd y llames al reporte no canviaran los datos a no ser q te vayas al crytsal y vuelvas a hacer un preview y guardes el report.
  #8 (permalink)  
Antiguo 01/03/2007, 08:39
 
Fecha de Ingreso: febrero-2004
Mensajes: 29
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: Subreport Crystal Reports XI

Dim crxApplication As New CRAXDRT.Application
Dim crxReport As CRAXDRT.Report
Set crxReport = crxApplication.OpenReport(App.Path & "\listado_fichas.rpt")
crViewer.ReportSource = crxReport
crViewer.ViewReport
crViewer.Zoom 100
Screen.MousePointer = vbDefault


me da el error "NO SE HA DEFINIDO EL TIPO DEFINIDO POR EL USUARIO"

Última edición por armaggedon; 01/03/2007 a las 11:17
  #9 (permalink)  
Antiguo 01/03/2007, 11:00
 
Fecha de Ingreso: febrero-2004
Mensajes: 29
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: Subreport Crystal Reports XI

Option Explicit
Dim basededatos As Database
Dim tablasocios As Recordset
Private Sub Form_Load()
Set basededatos = OpenDatabase("C:\Programa Gestion Aikido\socios.mdb ")
Set tablasocios = basededatos.OpenRecordset("miembros_club")
End Sub


a la vista de esto que es la apertura de la base de datos como tendria que seguir si mi reporte sde llama lista_fichas???


gracias
  #10 (permalink)  
Antiguo 01/03/2007, 16:16
 
Fecha de Ingreso: junio-2002
Mensajes: 243
Antigüedad: 21 años, 10 meses
Puntos: 1
Re: Subreport Crystal Reports XI

Priemramente deberías cerciorarte q teiens seleccioadna la referencia

"Crystal Reprots Active X Designer and run time library" o pro el estilo.... segun la versión de crystal puede varair el nombre...

el código más o menso quedaría de la sigueinte forma,... pero no te aseguro que funcione ya q yo uso ADODB (microsoft JET 4) connectado a un access 2003

Código:
Option Explicit
Dim basededatos As Database
Dim tablasocios As Recordset
Private Sub Form_Load()

Dim crxApplication As New CRAXDRT.Application
Dim crxReport As CRAXDRT.Report
Dim crxDatabase As CRAXDRT.Database
Dim crxDatabaseTables As CRAXDRT.DatabaseTables
Dim crxDatabaseTable As CRAXDRT.DatabaseTable

Set crxReport = crxApplication.OpenReport(App.Path & "\listado_fichas.rpt")

Set basededatos = OpenDatabase("C:\Programa Gestion Aikido\socios.mdb ")
Set tablasocios = basededatos.OpenRecordset("miembros_club")

crxReport.DiscardSavedData

Set crxDatabase = crxReport.Database
Set crxDatabaseTables = crxDatabase.Tables
crxReport.Database.SetDataSource tablasocios 

crViewer.ReportSource = crxReport

crViewer.ViewReport
crViewer.Zoom 100
Screen.MousePointer = vbDefault

End Sub


Salu2.
  #11 (permalink)  
Antiguo 01/03/2007, 18:13
 
Fecha de Ingreso: febrero-2004
Mensajes: 29
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: Subreport Crystal Reports XI

fantastico muchas gracias por ayudarme funciona muy bien.
solo que las imagenes de las fichas salen de diferente tamaño que en la preview del crystal report como puedo solventar el problemilla


saludos y muchas gracias

pd: es un reporte dinamico de imagenes osea que asignamos el contenido de un campo que contiene la ruta de la imagen a un objeto ole en el reporte
  #12 (permalink)  
Antiguo 01/03/2007, 18:34
 
Fecha de Ingreso: junio-2002
Mensajes: 243
Antigüedad: 21 años, 10 meses
Puntos: 1
Re: Subreport Crystal Reports XI

Uf pues en esto ya ni idea, no he usado nunca objetos ole y menos en reporte...

cuando necessite insertar imágenes ya me lo estudiaré jaja

SAlu2.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 18:58.