Autor Tema: lo que tu mama no te conto de los CrystalReports !!!  (Leído 22300 veces)

0 Usuarios y 5 Visitantes están viendo este tema.

Desconectado Juancho

  • The Communiter-
  • *
  • Mensajes: 1311
Re: lo que tu mama no te conto de los CrystalReports !!!
« Respuesta #15 : enero 24, 2008, 04:48:26 pm »
yo dije imprimir doble cara porque literalmente eso es lo que describes en el parrafo anterior....

sabia q m ibas a contestar con doble cara x eso iba a poner no doble cara pero hasta despues m acord jajajaja
<a href="http://www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/" target="_blank">
<img src="http://cache.www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/b_560x95.png" border="0" width="560" height="95" alt="" />
</a>

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: lo que tu mama no te conto de los CrystalReports !!!
« Respuesta #16 : agosto 21, 2008, 05:36:20 pm »
Continuando con mi superPost XD....

mas que todo por la solicitud de JGuillen™ ..... retomo este post....

me faltava algo que ya habia adelantado...y  es el echo de redistribuir tus app de vs05 que lleven crystalReport... si al momento de ejecutar tu app en otras pc te da un error de archivos de CrystalReport....

puede ser porque no esten instalados CrystalReportsRedist2005_x86.msm .... entonces como hacer pa instalarlos.... es super fácil... el mismo vs05 los hace por ti... solo para que los lleves y los instales antes de ejecutar tu aplicación.... bien aqui te explico como?¿

en las propiedades de tu proyecto, busca la opion Publicar, luego presiona sobre el botón Requisitos Previos, en la pantalla que te aparezca chequea la opción "Crear programas de Instalación para instalar los componentes necesarios"

el cuadrito debe quedar como la siguiente pantalla..


luego... siempre en la pestaña Publicar, en donde te pide "Ubicación de publicación" pón una dirección válida en tu pc.... luego da clic en Publicar Ahora...

hara la publicación en la carpeta que especificaste y ahí creara una carpeta "crystalreports" donde estarán los archivos que necesitas instalar en las pc donde ocuparas tu aplicación.... los demás talvez no te importen...

y Listo.... :thumbsup:


si tenes curiosidad por saber que es eso de la publicación podes preguntar también.... porque es una maravilla   :)
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

marcosr_87

  • Visitante
Re: lo que tu mama no te conto de los CrystalReports !!!
« Respuesta #17 : septiembre 09, 2008, 11:42:32 am »
Continuando con mi superPost XD....

mas que todo por la solicitud de JGuillen™ ..... retomo este post....

me faltava algo que ya habia adelantado...y  es el echo de redistribuir tus app de vs05 que lleven crystalReport... si al momento de ejecutar tu app en otras pc te da un error de archivos de CrystalReport....

puede ser porque no esten instalados CrystalReportsRedist2005_x86.msm .... entonces como hacer pa instalarlos.... es super fácil... el mismo vs05 los hace por ti... solo para que los lleves y los instales antes de ejecutar tu aplicación.... bien aqui te explico como?¿

en las propiedades de tu proyecto, busca la opion Publicar, luego presiona sobre el botón Requisitos Previos, en la pantalla que te aparezca chequea la opción "Crear programas de Instalación para instalar los componentes necesarios"

el cuadrito debe quedar como la siguiente pantalla..


luego... siempre en la pestaña Publicar, en donde te pide "Ubicación de publicación" pón una dirección válida en tu pc.... luego da clic en Publicar Ahora...

hara la publicación en la carpeta que especificaste y ahí creara una carpeta "crystalreports" donde estarán los archivos que necesitas instalar en las pc donde ocuparas tu aplicación.... los demás talvez no te importen...

y Listo.... :thumbsup:


si tenes curiosidad por saber que es eso de la publicación podes preguntar también.... porque es una maravilla   :)


Hola me sirvio mucho tus post ahora llegue a al momento que necesito que me corran en diferentes maquinas pero no encuentro esa pestaña Publicar a la que haces referencia, y ya que estoy te pregunto como solucionar el problema de ir cambiando las cadenas de conexion de sql en cada maquina que instale mi aplicacion desde ya muchas gracias.
Un saludo.

Desconectado JGuillen™

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3449
  • PHP,C#,MySQL,SQL
Re: lo que tu mama no te conto de los CrystalReports !!!
« Respuesta #18 : septiembre 09, 2008, 07:22:20 pm »

Hola me sirvio mucho tus post ahora llegue a al momento que necesito que me corran en diferentes maquinas pero no encuentro esa pestaña Publicar a la que haces referencia, y ya que estoy te pregunto como solucionar el problema de ir cambiando las cadenas de conexion de sql en cada maquina que instale mi aplicacion desde ya muchas gracias.
Un saludo.

Hey Bienvenido a la SVC marcosr_87..!


Respondiendo a tus dudas...

¿ no encuentro esa pestaña Publicar ?

Aca te dejo un par de imagenes... espero me de a entender...





¿como solucionar el problema de ir cambiando las cadenas de conexion de sql?

Si pones la ip del servidor donde esta alojado SQL Server... o a q te referis?  :big_boss:


marcosr_87

  • Visitante
Re: lo que tu mama no te conto de los CrystalReports !!!
« Respuesta #19 : septiembre 10, 2008, 10:41:29 am »
Gracias por la explicacion me sirvio, a lo de la conexion me refiero a que yo mi maquina utilizo esta cadena de conexion por ej :
private static SqlConnection oConn = new SqlConnection(" Data Source=DIEL-01C3EBA51E;Initial Catalog=Dielpos;Integrated Security=True "), ahora yo quiero que mi aplicacion corra en diferentes maquinas entonces nose como solucionar el tema de la cadena en cada maquina.Me explico ??. Mi intencion seria entrgar un cd por ej con mi aplicacion, con todas las tablas sin la necesidad de ir cada vez que se quiera instalar la aplicacion...

Desconectado JGuillen™

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3449
  • PHP,C#,MySQL,SQL
Re: lo que tu mama no te conto de los CrystalReports !!!
« Respuesta #20 : septiembre 10, 2008, 11:52:37 am »
Gracias por la explicacion me sirvio, a lo de la conexion me refiero a que yo mi maquina utilizo esta cadena de conexion por ej :
private static SqlConnection oConn = new SqlConnection(" Data Source=DIEL-01C3EBA51E;Initial Catalog=Dielpos;Integrated Security=True "), ahora yo quiero que mi aplicacion corra en diferentes maquinas entonces nose como solucionar el tema de la cadena en cada maquina.Me explico ??. Mi intencion seria entrgar un cd por ej con mi aplicacion, con todas las tablas sin la necesidad de ir cada vez que se quiera instalar la aplicacion...

Yo lo que hago es... colocar una clave en el registro con la IP, User, Password del Servidor SQL.. y desde mi aplicacion.. cada vez q la abro solo voy a traer esos datos para estrablecer la conexion.... si te sirve mi idea.. te puedo explicar como hacerlo..!  :thumbsup:

marcosr_87

  • Visitante
Re: lo que tu mama no te conto de los CrystalReports !!!
« Respuesta #21 : septiembre 10, 2008, 01:15:26 pm »
Bueno buenisimo si me podes explicar el metodo que vos utilizas para arreglar mi inconveniente me sria de gra ayuda  :thumbsup:

Desconectado Jonhyrey

  • Sv Full Member
  • *
  • Mensajes: 558
Re: lo que tu mama no te conto de los CrystalReports !!!
« Respuesta #22 : septiembre 12, 2008, 09:43:25 am »
Yo lo que hago es que manejo una clase que me administra la información del reporte.

Lo unico que necesito enviar es una tabla cargada con toda la información y la clase se encarga de establecer todos los elementos necesarios para mostrar el informe ya configurado.

No necesito establecer la cadena de conexión porque yo le pongo el origen de datos desde la clase.

Si deseas, te puedo poner la clase y un ejemplo de como utilizarla.



marcosr_87

  • Visitante
Re: lo que tu mama no te conto de los CrystalReports !!!
« Respuesta #23 : septiembre 15, 2008, 09:37:05 am »
A bueno si copiarias la clase me seria de ayuda Gracias.

Desconectado Jonhyrey

  • Sv Full Member
  • *
  • Mensajes: 558
Re: lo que tu mama no te conto de los CrystalReports !!!
« Respuesta #24 : septiembre 16, 2008, 05:17:31 pm »
Esta clase todavía está en construcción la idea de ponerla aqui es aceptar sugerencias para que la clase sea superfuncional sin dar muchas vueltas.... ahorita solo funciona para Crystal Reports.

Citar
Option Strict Off

Imports System.Reflection
Imports System.ComponentModel
Imports Microsoft.VisualBasic

Public Class ReportHandler
    Implements IDisposable

    Private _NombreInforme As String
    Private _Origen As New DataTable
    Private disposedValue As Boolean = False
    Private _Parametro As New List(Of ReportParameter)
    Private _Ruta As String
    Private _Origen2 As New DataTable

    Enum Estadoinf
        Pantalla
        Impresor
    End Enum

    Public Property Parametros() As List(Of ReportParameter)
        Get
            Return Me._Parametro
        End Get
        Set(ByVal value As List(Of ReportParameter))
            Me._Parametro = value
        End Set
    End Property

    ''' <summary>
    ''' Obtiene o establece el nombre del reporte que se mostrará
    ''' </summary>
    ''' <value>String</value>
    ''' <returns>String</returns>
    ''' <remarks></remarks>
    <Description("Obtiene o establece el nombre del reporte que se mostrará")> _
    Public Property NombreInforme() As String
        Get
            Return Me._NombreInforme
        End Get
        Set(ByVal value As String)
            Me._NombreInforme = value
        End Set
    End Property

    ''' <summary>
    ''' Obtiene o establece
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Property Origen() As DataTable
        Get
            Return Me._Origen
        End Get
        Set(ByVal value As DataTable)
            Me._Origen = value
        End Set
    End Property

    Public Property Origen2() As DataTable
        Get
            Return Me._Origen2
        End Get
        Set(ByVal value As DataTable)
            Me._Origen2 = value
        End Set
    End Property

    Public Property Ruta() As String
        Get
            Return Me._Ruta
        End Get
        Set(ByVal value As String)
            Me._Ruta = value
        End Set
    End Property

    ''' <summary>
    ''' Inicializa la instancia ReportHandler
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub New()

    End Sub

    ''' <summary>
    ''' Inicializa la instancia ReportHandler configurando al mismo tiempo el Nombre del Informe
    ''' </summary>
    ''' <param name="NombreInforme"></param>
    ''' <remarks></remarks>
    Public Sub New(ByVal NombreInforme As String)
        Me.NombreInforme = NombreInforme
    End Sub

    ''' <summary>
    ''' Inicializa la instancia de ReportHandler configurando al mismo tiempo el Nombre y el Origen del Informe
    ''' </summary>
    ''' <param name="NombreInforme"></param>
    ''' <param name="Origen"></param>
    ''' <remarks></remarks>
    Public Sub New(ByVal NombreInforme As String, ByVal Origen As DataTable)
        Me.NombreInforme = NombreInforme
        Me.Origen = Origen
    End Sub

    ''' <summary>
    ''' Función privada que crea un objeto a partir de el nombre del informe que existe en el proyecto
    ''' </summary>
    ''' <param name="nombreInforme"></param>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Private Function CrearObjeto(ByVal nombreInforme As String) As Object
        Dim Frm As New Object
        Dim toop As New Object
        nombreInforme = System.Reflection.Assembly.GetExecutingAssembly.GetName.Name & "." & nombreInforme
        Dim valor As New System.Runtime.Remoting.ObjectHandle(Frm)
        valor = AppDomain.CurrentDomain.CreateInstance(Assembly.GetExecutingAssembly().FullName, nombreInforme)
        toop = valor.Unwrap
        Return toop
    End Function

    ''' <summary>
    ''' Procedimiento que imprime el informe configurado
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub PrintToPrinter()
        If Me.Origen.Rows.Count = 0 Then
            Throw New Exception("No hay datos que asignar")
        End If

        Dim rpt As New CrystalDecisions.CrystalReports.Engine.ReportDocument
        rpt.Load(Me.Ruta & "\Informes\" & Me.NombreInforme & ".rpt")
        'Dim rpt As Object = CrearObjeto(Me.NombreInforme)
        Dim frmVisor As New FrmVisor
        rpt.SetDataSource(Me.Origen)

        frmVisor.CRViewer.ReportSource = rpt
        frmVisor.CRViewer.PrintReport()
    End Sub

    ''' <summary>
    ''' Procedimiento que imprime un reporte configurado con los parametros indicados directamente al Impresor
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub PrintToPrinterwithParameters()
        If Me.Origen.Rows.Count = 0 Then
            Throw New Exception("No hay datos que asignar")
        End If

        Dim rpt As New CrystalDecisions.CrystalReports.Engine.ReportDocument
        rpt.Load(Me.Ruta & "\Informes\" & Me.NombreInforme & ".rpt")
        'Dim rpt As Object = CrearObjeto(Me.NombreInforme)
        Dim frmVisor As New FrmVisor
        rpt.SetDataSource(Me.Origen)

        For Each param As ReportParameter In Me.Parametros
            rpt.SetParameterValue(param.NombreParametro, param.Value)
        Next
        frmVisor.CRViewer.ReportSource = rpt
        frmVisor.CRViewer.PrintReport()
    End Sub

    ''' <summary>
    ''' Procedimiento que imprime un reporte configurado con los parametros indicados en Vista Preliminar
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub PrintToPromptPreviewWithParameters()
        If Me.Origen.Rows.Count = 0 Then
            Throw New Exception("No hay datos que asignar")
        End If

        Dim rpt As New CrystalDecisions.CrystalReports.Engine.ReportDocument
        rpt.Load(Me.Ruta & "\Informes\" & Me.NombreInforme & ".rpt")
        'Dim rpt As Object = CrearObjeto(Me.NombreInforme)
        Dim frmVisor As New FrmVisor

        rpt.SetDataSource(Me.Origen)

        For Each param As ReportParameter In Me.Parametros
            rpt.SetParameterValue(param.NombreParametro, param.Value)
        Next
        frmVisor.CRViewer.ReportSource = rpt
        frmVisor.ShowDialog()
    End Sub

    ''' <summary>
    ''' Procedimiento que imprime un reporte configurado con los parametros indicados en Vista Preliminar
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub PrintToPromptPreviewMultitableWithParameters()
        If Me.Origen.Rows.Count = 0 Then
            Throw New Exception("No hay datos que asignar")
        End If

        Dim rpt As New CrystalDecisions.CrystalReports.Engine.ReportDocument
        rpt.Load(Me.Ruta & "\Informes\" & Me.NombreInforme & ".rpt")
        'Dim rpt As Object = CrearObjeto(Me.NombreInforme)
        Dim frmVisor As New FrmVisor

        Dim ds As New DataSet("DSReportes")
        ds.Tables.Add(Me.Origen2)
        ds.Tables.Add(Me.Origen)

        rpt.SetDataSource(ds)

        For Each param As ReportParameter In Me.Parametros
            rpt.SetParameterValue(param.NombreParametro, param.Value)
        Next
        frmVisor.CRViewer.ReportSource = rpt
        frmVisor.ShowDialog()
    End Sub

    ''' <summary>
    ''' Procedimiento que muestra el informe en vista preliminar
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub PrintToPromptPreview()
        If Me.Origen.Rows.Count = 0 Then
            Throw New Exception("No hay datos que asignar")
        End If

        Dim rpt As New CrystalDecisions.CrystalReports.Engine.ReportDocument
        rpt.Load(Me.Ruta & "\Informes\" & Me.NombreInforme & ".rpt")
        'Dim rpt As Object = CrearObjeto(Me.NombreInforme)
        Dim frmVisor As New FrmVisor
        rpt.SetDataSource(Me.Origen)

        If Not Me.Origen2.Rows.Count = 0 Then
            rpt.SetDataSource(Me.Origen2)
        End If
        frmVisor.CRViewer.ReportSource = rpt
        frmVisor.ShowDialog()
    End Sub

    ''' <summary>
    ''' Procedimiento utilizado para Agregar los parametros adecuados para mostrar los informes
    ''' </summary>
    ''' <param name="NombreParametro"></param>
    ''' <param name="valor"></param>
    ''' <remarks></remarks>
    Public Sub AgregarParametro(ByVal NombreParametro As String, ByVal valor As Object)
        Dim nParametro As New ReportParameter(NombreParametro, valor)
        Me.Parametros.Add(nParametro)
    End Sub

    ' IDisposable
    Protected Overridable Sub Dispose(ByVal disposing As Boolean)
        If Not Me.disposedValue Then
            If disposing Then
                ' TODO: Liberar recursos administrados cuando se llamen explícitamente
            End If

            ' TODO: Liberar recursos no administrados compartidos
        End If
        Me.disposedValue = True
    End Sub

#Region " IDisposable Support "
    ''' <summary>
    ''' elimina de memoria la información utilizada por ReportHandler
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub Dispose() Implements IDisposable.Dispose
        ' No cambie este código. Coloque el código de limpieza en Dispose (ByVal que se dispone como Boolean).
        Dispose(True)
        GC.SuppressFinalize(Me)
    End Sub
#End Region

End Class

Partial Public Class ReportParameter

    Private _NombreParametro As String
    Private _value As Object

    ''' <summary>
    ''' Obtiene o establece el nombre del parametro con el ID establecido en el reporte
    ''' </summary>
    ''' <value>String </value>
    ''' <returns>Nombre del Parametro</returns>
    ''' <remarks></remarks>
    Public Property NombreParametro() As String
        Get
            Return Me._NombreParametro
        End Get
        Set(ByVal value As String)
            Me._NombreParametro = value
        End Set
    End Property

    ''' <summary>
    ''' Obtiene o establece el objeto que representa el valor del objeto
    ''' </summary>
    ''' <value>Object</value>
    ''' <returns>Valor del parametro</returns>
    ''' <remarks></remarks>
    Public Property Value() As Object
        Get
            Return Me._value
        End Get
        Set(ByVal value As Object)
            Me._value = value
        End Set
    End Property

    ''' <summary>
    ''' Inicializa la instancia de la clase
    ''' </summary>
    ''' <remarks></remarks>
    Public Sub New()
    End Sub

    ''' <summary>
    ''' Inicializa la instancia de la clase con el nombre del parametro
    ''' </summary>
    ''' <param name="NombreParametro"></param>
    ''' <remarks></remarks>
    Public Sub New(ByVal NombreParametro As String)
        Me.NombreParametro = NombreParametro
    End Sub

    ''' <summary>
    ''' Inicializa la instancia de la clase con el nombre del parametro y su respectivo valor
    ''' </summary>
    ''' <param name="NombreParametro"></param>
    ''' <param name="valor"></param>
    ''' <remarks></remarks>
    Public Sub New(ByVal NombreParametro As String, ByVal valor As Object)
        Me.NombreParametro = NombreParametro
        Me.Value = valor
    End Sub
End Class

Como Funciona?? Aqui les va un ejemplo: utilizo otra clase:

Citar
Private Const rpt_ConglomeradoPartidas As String = "rpt_Partidas"

Enum Timpr
        impresor
        VistaPrevia
    End Enum

    Public Sub ImprimirConglomeradoPartidas(ByVal Impresion As Timpr, ByVal Ruta As String)
        Dim repoHandler As New ReportHandler
        repoHandler.NombreInforme = ReportManager.rpt_ConglomeradoPartidas
        repoHandler.Ruta = Ruta

        Dim dt As New DataTable
        Dim cSource As New cAvance
        dt = cSource.ConglomeradoPartidasSource()

        repoHandler.Origen = dt

        If Impresion = Timpr.VistaPrevia Then
            repoHandler.PrintToPromptPreview()
        Else
            repoHandler.PrintToPrinter()
        End If
    End Sub

Lo que hago en el procedimiento es configurar el origen de datos del reporte y asignarselo a la clase. Un elemento importante en esa clase es que utiliza un elemento frmvisor y dentro de el utiliza el CrystalReportsViewer.
El proximo trabajo es implementar un objeto form que tenga todos los elementos que el "FrmVisor" utiliza.

En la clase tambien se pueden agregar parametros y hasta ahorita un máximo de 2 tablas por informe.
En mi caso, utilizo los reportes fuera del exe, esto me permite cambiar formatos y alineación de los informes y luego nada más reemplazarlos sin tener la necesidad de generar un nuevo exe, sin embargo, para ello debo proporcionar la ruta donde se encuentra el reporte. La clase es bastante sencilla pero ahorra bastantes lineas de codigo.

Si tienes alguna duda para utilizarla, me la posteas Ok.

Saludos



Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: lo que tu mama no te conto de los CrystalReports !!!
« Respuesta #25 : septiembre 17, 2008, 08:51:23 am »
muy buen trabajo Jonhyrey, muy buen trabajo....

la clase ReportHandler esta muy bien creada y para estar todavía en construcción esta muy avanzada.


le faltan "cosillas" que harían más personalizable los reportes, por ejemplo, una propiedad que yo pueda en tiempo de Ejecución cambiar los valores de un objeto FormulaField de cualquier reporte, una propiedad donde yo pueda poner como True la propiedad Supress de "cualquier" objeto del reporte, una propiedad que me permita cambiar el Orden de mis datos, una propiedad que me permita en tiempo de ejecución decirle a mi reporte si lo quiero en Excel, Word o Pdf, una propiedad que en tiempo de ejecución pueda cambiar el tamaño del reporte[Carta,Oficio], una propiedad para cambiar en tiempo de ejecución la orientación de mi reporte [Vertical, Horizontal].. etc.... etc... etc....


Esto ultimo me lleva a una pregunta, ¿ tu aplicación la podes ejecutar en cualquier computadora sin problema de instalar los servicios del ReportViewer ?


y;
Sin ánimos de entrar en discusión, expondré mi punto sobre la idea de trabajar los reportes fuera del Exe. No estoy en contra de esta práctica porque tiene sus ventajas, pero tiene una gran desventaja, porque expones a que eliminación, cambio de nombre, cambio de ubicación; de los archivos de los reportes y ahí esta el problema!!
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado Jonhyrey

  • Sv Full Member
  • *
  • Mensajes: 558
Re: lo que tu mama no te conto de los CrystalReports !!!
« Respuesta #26 : septiembre 17, 2008, 12:04:42 pm »
Citar
Esto ultimo me lleva a una pregunta, ¿ tu aplicación la podes ejecutar en cualquier computadora sin problema de instalar los servicios del ReportViewer ?

Claro que sí. Recuerda que el visor que utilizo es el de Crystal Reports, lo único que hago es que en cada instalador coloco el paquete distribuido de Crystal Reports que explican en post anteriores. Se instala eso y funciona bien.

Y en cuanto a los reportes fuera del exe.... eso más bien lo hice como un requerimiento de mi entorno de trabajo. Mi deber es solo desarrollar aplicaciones y otra persona se encarga de instalar, es por eso que a la hora de hacer formatos de informes yo solo tiro la información y el técnico se encarga de darle el formato.

Al principio cuando empecé a crear el ReportHandler no me habían pedido eso, por ese motivo se van a dar cuenta que tengo un código con comentario abajo del rpt.Load(....

Citar
Dim rpt As New CrystalDecisions.CrystalReports.Engine.ReportDocument
        rpt.Load(Me.Ruta & "\Informes\" & Me.NombreInforme & ".rpt")
        'Dim rpt As Object = CrearObjeto(Me.NombreInforme)

Solo comenten la parte del Load y quitenle el comentario a la parte que marque del codigo y el reporte ya no es externo.  :thumbsup:

Ahhhh Gracias por las sugerencias!! Ahora mismo empiezo a ver como le pongo esas funcionalidades que comentaste. Si alguien más me ayuda con otras sugerencias se los agradeceré mucho
« Última Modificación: septiembre 17, 2008, 12:06:17 pm por Jonhyrey »