none
Error al llamar informe en compilación Release. RRS feed

  • Pregunta

  • Hola a todos.

    Se me presenta un problema "solo" si compilo en Release para montar el ejecutable a distribuir, con la llamada a los informes que funcionan perfectamente en Debug.

    Tampoco se muy bien como interpretar el mensaje que arroja la aplicación, que paso a exponerlo:

                Ocurrió CrystalDecisions.Shared.CrystalReportsException
                HResult = -2146232832
      Message=No se ha podido cargar el informe.
                Source = CrystalDecisions.CrystalReports.Engine
    StackTrace:
                en CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
           en CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename, OpenReportMethod openMethod, Int16 parentJob)
           en CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename)
           en FinancialSystem.frmInformes.ImprimirFlujoDeCaja() en C:\Users\Gemma\Documents\Visual Studio 2013\Projects\FinancialSystem2016\FinancialSystem\Forms\frmInformes.vb:línea 14178
    InnerException: System.Runtime.InteropServices.COMException()
                ErrorCode = -2147215343
                HResult = -2147215343
           Message=Operación no admitida. Un documento procesado por el motor JRC no se puede abrir en la pila C++.
                Source = clientdoc.dll
    StackTrace:
                en CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object& DocumentPath, Int32 Options)
                en CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object& DocumentPath, Int32 Options)
                en CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()
    InnerException:

    No entiendo el mensaje y tampoco se porque en Debug no pasa y en Release si.

    Bueno, si sabéis el por qué os lo agradeceré. Tampoco pasa nada grave ya que el ejecutable se entrega compilado en Debug y no pasa nada, pero bueno, es por hacer las cosas lo mejor posible.

    Un cordial saludo.

    Gemma



    miércoles, 6 de julio de 2016 5:31

Respuestas

  • Hola:

    Las primeras líneas indican error al cargar informe:

      Message=No se ha podido cargar el informe.
                Source = CrystalDecisions.CrystalReports.Engine
    StackTrace:
                en CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()

    Comprueba que las rutas donde tienes los informes no cambian dependiendo de si estas en DEBUG/RELEASE, tiene pinta de que buscas el informe en un sitio donde no existe.

    Un saludo

    • Marcado como respuesta gemma_campillo miércoles, 6 de julio de 2016 6:57
    miércoles, 6 de julio de 2016 6:27
  • "gemma_campillo" escribió:

    > Bueno, vamos a cambiar la carpeta y a solucionarlo.

    La cuestión NO ES cambiar la carpeta para solucionar el problema, porque entonces vas a tener el mismo problema cuando estés desarrollando tu aplicación desde el IDE de Visual Studio en modo Debug.

    Si ese informe de Crystal Reports se encuentra en la MISMA CARPETA o en una subcarpeta que contiene el ejecutable de tu aplicación, lo que tienes que hacer es construir la ruta (path) adecuada mediante la propiedad Application.StartupPath, la cual te devuelve la ruta de acceso del archivo ejecutable de la aplicación.

    ¡Menos mal que me has hecho caso y estás revisando la aplicación en modo Release! ;-)


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    • Marcado como respuesta gemma_campillo miércoles, 6 de julio de 2016 7:27
    miércoles, 6 de julio de 2016 7:22
    Moderador

Todas las respuestas

  • Hola:

    Las primeras líneas indican error al cargar informe:

      Message=No se ha podido cargar el informe.
                Source = CrystalDecisions.CrystalReports.Engine
    StackTrace:
                en CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()

    Comprueba que las rutas donde tienes los informes no cambian dependiendo de si estas en DEBUG/RELEASE, tiene pinta de que buscas el informe en un sitio donde no existe.

    Un saludo

    • Marcado como respuesta gemma_campillo miércoles, 6 de julio de 2016 6:57
    miércoles, 6 de julio de 2016 6:27
  • Hola LG DES.

    Pues llevas toda la razón, antes apuntaba el informe a la carpeta Bin > Debug y ahora apunta a la carpeta Bin > Release y efectivamente en esa ruta no están los informes.

    Bueno, vamos a cambiar la carpeta y a solucionarlo.

    Muchísimas gracias por tu ayuda.

    Un cordial saludo.

    Gemma

    miércoles, 6 de julio de 2016 6:57
  • "gemma_campillo" escribió:

    > Bueno, vamos a cambiar la carpeta y a solucionarlo.

    La cuestión NO ES cambiar la carpeta para solucionar el problema, porque entonces vas a tener el mismo problema cuando estés desarrollando tu aplicación desde el IDE de Visual Studio en modo Debug.

    Si ese informe de Crystal Reports se encuentra en la MISMA CARPETA o en una subcarpeta que contiene el ejecutable de tu aplicación, lo que tienes que hacer es construir la ruta (path) adecuada mediante la propiedad Application.StartupPath, la cual te devuelve la ruta de acceso del archivo ejecutable de la aplicación.

    ¡Menos mal que me has hecho caso y estás revisando la aplicación en modo Release! ;-)


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    • Marcado como respuesta gemma_campillo miércoles, 6 de julio de 2016 7:27
    miércoles, 6 de julio de 2016 7:22
    Moderador
  • Hola maestro:

    Siempre te hago caso aunque tu no te lo creas, como eres un cascarrabias pues eso.

    Ya lo tengo los informes con la propiedad Application.StartupPath :

     AccesoLogica.MostrarTipoPapel()
                If VarGlobal.strTipoPapel = "A4" Then
                    CrReport.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.PaperA4
                    ''// Asigno el nombre del reporte 
                    CrReport.Load(Application.StartupPath & "\Informes\Informes_A4\Glosario_A4.rpt")
                    bolTipoInformeHorizontal = True
                Else
                    CrReport.PrintOptions.PaperSize = CrystalDecisions.Shared.PaperSize.PaperLetter
                    CrReport.Load(Application.StartupPath & "\Informes\Informes_Carta\Glosario_Carta.rpt")
                    bolTipoInformeHorizontal = True
                End If

    Pero tengo que comprobar bien el ejecutable porque al situarlo en la carpeta Bin > Release, los informes continúan apuntando a donde está el exe.original, es decir en Debug. Eso es lo que tengo que arreglar. Pero nada, ya está visto el tema.

    Un abrazo querido Enrique y muchas gracias como siempre.

    Gemma

    miércoles, 6 de julio de 2016 7:37