none
Archivo no encontrado RRS feed

  • Pregunta

  • Ese es el error que me tira al querer abrir un informe(Reporte) desde donde instale mi aplicacion("Archivo no encontrado") realizada en VB.NET,el problema es que para poner la ruta de donde estan mis reportes escribo algo asi:
    Public crReport As New CRAXDDRT.Report
    Public crApp As New CRAXDDRT.Application

    crReport = crApp.OpenReport(System.AppDomain.CurrentDomain.BaseDirectory & _
    "\EstadoFact.rpt", 1)

    Ya probe con:
    CurDir()
    My.Application.Info.DirectoryPath()
    System.AppDomain.CurrentDomain.BaseDirectory
    Application.StartupPath 'Este no lo tengo
    Application.ExecutablePath 'Este tampoco lo tengo
    System.Reflection.Assembly.GetExecutingAssembly.Location

    Ese que uso me tira la direccion hasta la carpeta Solucion y dentro de esta estan todos mis reportes, pero claro en mi maquina esta perfecto, pero el problema lo tengo cuando Genero mi Solucion, la publico, etc. y luego la quiero ejecutar en otra maquina me salta ese error de que no encuentra el archivo, lo tendre que poner en otro lado a los archivos del reporte?. Espeo me ayuden.
    miércoles, 18 de marzo de 2009 17:07

Todas las respuestas

  • hola,

    creo que podrias servirte este link:

    How do I get my .NET application's path in VB or C#?


    lo que no entiendo es porque dices que el StartupPath y el ExecutePath no los tienes, o sea este path es de una aplicacion .exe, o de un assembly ?


    bueno espero te sea de utilidad
    Saludos

    Leandro Tuttini
    miércoles, 18 de marzo de 2009 18:19
  • Gracias por responder, pero en esa web que me citas es como yo lo hago y sigo teniendo el mismo problema, la verdad no tengo idea porque, pongo un punto de interrupcion y donde busca los reportes esta bien, pero cuando voy a mi sistema instalado en otras maquinas dice que no encuentra el archivo,no creo que sea un problema de referencias, ya que verifique antes de Generar mi proyecto y estan las que tienen que estar, tendre que instalar el Crystal Report XI en las otras maquinas?. Gracias
    miércoles, 18 de marzo de 2009 19:29
  • hola

    has probado agregar algun sistema de log, ya sea a una archivo de texto, o al event viewer.

    O sea, asi puedes compilar la aplicacion, llevarla al cliente, y cuando lo corras alli, loguear cual es el path que estas obteniendo, y por el cual tu aplicacion falla.

    Esto de seguro te ayudara a detectar el problema.


    Puedes usar para esto el:  EventLog Class

    o por ahi algo como esto:  Error and Event Logging in VB.NET


    Espero te sea de utilidad
    Saludos

    Leandro Tuttini
    miércoles, 18 de marzo de 2009 21:38
  • Como se usan esos "controles" por ejemplo yo en Visual Basic Express Edtion 2005 tengo un control que se llama: EventLog1. Pero no se como se usa, tendria que tirarlo en el form donde me tira el error por ejemplo y pasarle algun parametro, gracias por la ayuda.
    jueves, 19 de marzo de 2009 17:31
  • hola,

    ahh cierto me habia olvidado que habia controles, la verdad nunca los use ya que siempre preferi hacerlo desde codigo.

    Has algo mas simple, copia este codigo:

            public void LogWrite(string _log) 
            { 
                if (!System.Diagnostics.EventLog.SourceExists("<nombre>")) 
                    System.Diagnostics.EventLog.CreateEventSource( 
                       "<nombre>""Application"); 
     
                System.Diagnostics.EventLog log = new System.Diagnostics.EventLog(); 
                log.Source = "<nombre>"
                log.WriteEntry(_log); 
            } 
     


    a la clase donde sepas mas o menso que puede estar el error.
    reemplaza donde dice "<nombre>", por algun nombre que identifique tu aplicacion, con ese nombre tu lo veras en el event viewer

    Nota: lo unico es que deberas pasarlo a VB.NET, pero es simple, freo que solo hace falta reformular el metodo, y cambiar el if.

    Luego para loguear simplemente, usas el : this.LogWrite("<cadena a loguear>");

    Esto ingresara lineas en tu evento viewer de windows.

    Asi podras saber cual es el path que esta resolviendo en tus clientes.
    Es mas puedes agregar tantas lineas d elog como consideres necesarias para guiarte.


    Saludos




    Leandro Tuttini
    jueves, 19 de marzo de 2009 18:41
  • Ya lo pase todo a VB.NET y me quedo asi:
    Public Sub LogWrite(ByVal _log As String)
            If (Not System.Diagnostics.EventLog.SourceExists("GAMAT")) Then
                System.Diagnostics.EventLog.CreateEventSource("GAMAT", "Application")
                Dim log As System.Diagnostics.EventLog = New System.Diagnostics.EventLog
                log.Source = "GAMAT"
                log.WriteEntry(_log)
            End If
        End Sub

    Ahora lo que no entiendo es eso de "<cadena a loguear>" no se que tengo que pasarle a ese parametro desde los forms donde tenga posibles errores y otra pregunta el procedimiento donde lo tendria que poner o sea en que parte de mi codigo del formulario. Gracias.
    jueves, 19 de marzo de 2009 20:12
  • hola,

    lo deberias poner en dentro cualquier clases en donde mas o menos sepas que puede estar el problema, simplemente lo pegas alli y lo llamas.

    El valor de <cadena a loguear>, es justamente lo que tu quiere que se grabe en el evento viewer, o sea puede ser un string, puede ser el mensaje de un error, algo que tu desee ver que valore sta tomando, si tu puedes debugear esto no haria falta, pero no creo que tus clientes les instales todo el Visual Studio en una de sus pc, solo para ver que valor esta tomando una varieble de tu programa, por eso es que agregas estas liena para poder ver que valor estan tomando.

    Un ejemplo si tu formaulario Form1 es el que falla, agregas esta clase alli dentro.

    y luego la puedes llamar de esta forma: this.LogWrite(System.AppDomain.CurrentDomain.BaseDirectory & "\EstadoFact.rpt");
    o de esta: this.LogWrite(System.AppDomain.CurrentDomain.BaseDirectory);, si es que solo queires ver el path.

    ojo esta puede ser usado para muchas otras cosas como ser this.LogWrite(ex.Message);, o sea para ver el error que se produce dentro de un try..catch
    luego vas al event viewer y puedes saber porque fallo la aplicacion.


    Saludos

    Leandro Tuttini
    viernes, 20 de marzo de 2009 15:20
  • Ya realice lo que me dices, pero no comprendo cuando dices "luego vas al event viewer", donde esta eso?, como lo busco desde las pcs de los clientes y otra cosa ahora me esta tirando otro error aparentemente es en el formulario donde tengo el control AxCrystalActiveXReportViewerLib11_5.AxCrystalActivieXReportViewer y el error es este:

    System.InvalidOperationException: Error al crear el formulario. Consulte Exception.InnerException para obtener más detalles. Error: Error al recuperar un generador de clases COM para el componente con CLSID {D260B86E-0D8C-4008-B87B-3E6D6BA69A9F} debido al siguiente error: 80040154. ---> System.Runtime.InteropServices.COMException (0x80040154): Error al recuperar un generador de clases COM para el componente con CLSID {D260B86E-0D8C-4008-B87B-3E6D6BA69A9F} debido al siguiente error: 80040154.
       en Construccion.FrCrystal..ctor()
       --- Fin del seguimiento de la pila de la excepción interna ---
       en Construccion.My.MyProject.MyForms.Create__Instance__[T](T Instance)
       en Construccion.My.MyProject.MyForms.get_FrCrystal()
       en Construccion.FrEstadoCli.btnImprimir_Click(Object sender, EventArgs e)
       en System.Windows.Forms.Control.OnClick(EventArgs e)
       en DevComponents.DotNetBar.ButtonX.OnClick(EventArgs e)
       en DevComponents.DotNetBar.ButtonX.OnMouseUp(MouseEventArgs e)
       en System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       en System.Windows.Forms.Control.WndProc(Message& m)
       en DevComponents.DotNetBar.ButtonX.WndProc(Message& m)
       en System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       en System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       en System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    viernes, 20 de marzo de 2009 18:42
  • hola,

    El event viewer lo encontraras en windows, llendo a Start -> Settings -> Control Panel,
    y alli seleccionando Administrative Tools -> Event Viewer

    Es una aplicacion que trae Windows para logear errores de las aplicaciones o servicios que el dispone, o en este caso lo utilizas tu para la aplicacion que desarrollas.


    Con respecto al error la verad es bastante raro, segun parece quiere crear un componente COM pero no puede.

    Sabes si has agregado algun componente nuevo en las ultimas modificaciones?

    El programa cuando lo corres desde el VS funciona correctamente ? o sea solo en el cliente da este error o cuando lo estas desarrollando tambien ?
    Si es solo en el cliente seguramente durante el deploy algun componente te esta faltando agregar.

    Veo que el error te muestra cual es el CLASID que genera el fallo, intente buscarlo para ver si era un componente conocido, pero no encontre nada.

    Tienes algun backup del soft antes de las ultimas modificaciones para probar si volviendo atras el codigo, funciona nuevamente, esto sevira para verificar si los ultimos cambiso no afectaron al programa.

    Trata de recordar los ultimos cambios que realizaste y deshaslos, a ver si esto es lo que afecta.

    Saludos


    Leandro Tuttini
    viernes, 20 de marzo de 2009 18:58
  •  El event Viewer se encuentra en:

    Inicio -> Todos los programas -> herramientas administrativas -> Event Viewer (o Visor de eventos).

    También puedes abrirlo desde: Inicio -> Ejecutar, y pones el comando: eventvwr.msc.


    Saludos,
    Sergio Tarrillo - http://sergiot2.com/blog/
    Si la respuesta ha sido de utilidad marca la como respuesta correcta.
    viernes, 20 de marzo de 2009 19:01
  • Efectivamente el error solo me da en las otras maquinas ya sea con Vista o XP, en done realice el proyecto anda de maravillas y antes de agregar este control (que es el que me permite mostrar el reporte antes de imprimir) mi aplicacion andaba sin problemas en las otras maquinas.
    Tambien verifique que este agregado en mis referencias antes de generar mi proyecto y estan todos los componentes, es muy raro, me da a pensar que tendria que instalar el Crystal Report en las maquinas que no funciona mi aplicacion(seria tragico llegar a esto), pero no le veo otra solucion. Gracias por la ayuda de nuevo
    viernes, 20 de marzo de 2009 19:12
  • hola,

    Puedes probar de descargar los paquetes de redistribucion del Crystal, de este link:

    Crystal Reports Runtime Packages


    Luego bajar el redistribuible, deberias instalarlo en la pc del cliente.

    Saludos


    Leandro Tuttini
    viernes, 20 de marzo de 2009 20:44
  • Ya instale el Packages pero me sigue tirando el mismo error que comentaba anteriormente el que instale para Windows Vista es: Crystal Reports for .NET framework 2.0 (X86). Sera un problema del vista? o quizas eso no era el redistribuible, ya no se que mas hacer.
    lunes, 23 de marzo de 2009 19:39
  • Por lo que dices solo parece que es error, donde se ubica los reportes. Una solución mas simple, en tu archivo de configuracion (aap.config) agrega un AppSettings, y ponle folderReports, y desde ahi das la ruta base de un reporte. Y en el cliente solo cambias esa configuracion.

    crReport = crApp.OpenReport(ConfigurationManager.AppSettings["pathFolder"] & _
    "\EstadoFact.rpt", 1)

    Y cuando estes en tu clientes, solo cambias la variable pathFolder en tu archivo de configuración. Así te libras del problema, de sacar de una carpeta en especial los reportes.

    Saludos,


    Sergio Tarrillo - http://sergiot2.com/blog/
    Si la respuesta ha sido de utilidad marca la como respuesta correcta.
    • Propuesto como respuesta sergio.tarrillo martes, 24 de marzo de 2009 14:59
    lunes, 23 de marzo de 2009 21:03
  • hola,

    mm la verdad no estoy del todo seguro si sera ese, pero prueba hacer otra cosa.

    Cuando tu creaste el proyecto agregaste referencias a distintos essemblies de Crystal en tu proyecto.
    Estos los veras en las referencias que tiene el proyecto donde esta el control de Crystal.

    Busca estos assemblies, y redistribuyelos junto a tu ejecutable, o sea copialos junto a tu exe, a ver si asi los toma.

    igualmente sino me equivoco estos deberian ser copiados en tu carpeta \bin\debug, es raro que no esten alli.

    Saludos

    Leandro Tuttini
    lunes, 23 de marzo de 2009 21:04
  • En mi explorador de soluciones hago click derecho en mi proyecto para luego seleccionar agregar referencias y luego selecciono la solapa COM y ahi estan todas las referencias, lo que pasa que son muchas desde Business Objects(hay como 6) hasta las de Crystal ActiveX, Crystal Enterprise, etc. y de cada una de ellas hay muchas.
    El tema es que voy a gregando al azar sin saber cual de todas debo agregar y una vez agregadas algunas me pone en Referencias de mi explorador de soluciones con un icono amarillo como de advertencia, entonces no se cual de todos debo agregar, igual viendo las referencias ya agregadas anteriormente tengo varias referidas a Crystal Report.
    Tambien verifique lo de la carpeta \bin\debug y hay varias dlls referidas a crystal, asi que estan donde tienen que estar.

    martes, 24 de marzo de 2009 22:26
  • probaste lo de cargar la dirección del reporte con el archivo de configuración?

    Saludos,
    Sergio Tarrillo - http://sergiot2.com/blog/
    Si la respuesta ha sido de utilidad marca la como respuesta correcta.
    miércoles, 25 de marzo de 2009 0:11
  • Cual es ese archivo de configuracion que decis o sea el aap.config, donde esta?, recuerda que yo trabajo con el Visual Basic 2005 Express Edition, ademas el AppSettings es un control? porque no lo tengo en el cuadro de herramientas.

    miércoles, 25 de marzo de 2009 16:33
  • Ahora cuando quiero llamar a un reporte desde otra maquina que instale mi aplicacion(en este caso la maquina cliente es XP) me sigue tirando archivo no encontrado y el error aqui lo pongo, como ven no es el mismo que me tira para la maquina de Vista:

    ************** Texto de la excepción **************
    System.Runtime.InteropServices.COMException (0x80043AC3): Archivo no encontrado.
    Detalles: error
       en CRAXDDRT.ApplicationClass.OpenReport(String pFileName, Object OpenMethod)
       en Construccion.FrSueldos.btnImprimir_Click(Object sender, EventArgs e)
       en System.Windows.Forms.Control.OnClick(EventArgs e)
       en DevComponents.DotNetBar.ButtonX.OnClick(EventArgs e)
       en DevComponents.DotNetBar.ButtonX.OnMouseUp(MouseEventArgs e)
       en System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       en System.Windows.Forms.Control.WndProc(Message& m)
       en DevComponents.DotNetBar.ButtonX.WndProc(Message& m)
       en System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       en System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       en System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    .
    .
    .
    .
    y otras cosas mas......
    miércoles, 25 de marzo de 2009 17:00
  • Bueno parece que nadie me puede ayudar, yo ya hace mas de una semana que estoy con este problema y me paro todo el proyecto, encima era lo ultimo que tenia que hacer solo me quedaba eso hacer los distintos reportes de mi aplicacion, pero la verdad ya ni idea de que puede ser y probe de todo. Lo peor es que tengo los reportes ya realizados, porque si no lo intentaria con otro que no sea crystal report.
    Es increible me acuerdo haber realizado en VB6 y Crystal Report 8 y nunca tuve problemas y ahora con VB 2005 Y CR XI ya tengo muchos dolores de cabeza.
    Sera el momento de pensar en JAVA?. Gracias por estar.
    lunes, 30 de marzo de 2009 20:49
  • El archivo de configuración, es un elemento como estilo una aspx, o una clase, lo puedes encontrar al agregar items: http://download.oracle.com/docs/cd/E13924_01/coh.340/e12192/img/coherence07.png.

    El archivo de configuracion, es para cualquier aplicacion sea Windows o Web, y para cualquier lenguaje sea VB o C#, y cualquier versión sea Express o Professional.

    Dentro de ese archivo agregas un elemento appSettings: http://www.odetocode.com/Articles/345.aspx, y lo lees usando la clase ConfigurationManager.AppSettings (tienes que agregar una referencia al configurationManager.dll).

    Acá hay un ejemplo más simple: http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings.aspx.

    saludos,


    Sergio Tarrillo - http://sergiot2.com/blog/
    Si la respuesta ha sido de utilidad marca la como respuesta correcta.
    • Propuesto como respuesta sergio.tarrillo martes, 31 de marzo de 2009 0:16
    martes, 31 de marzo de 2009 0:16
  • Te cuento que en la version Express no existe dicho elemento,asi que no lo tengo.

    martes, 31 de marzo de 2009 16:40
  • ya entonces, agrega un archivo de texto, y lo renombras a: app.config. Copias la estrucutar de un archivo config (que no es otra cosa que un formato XML), y lo pegas ahi, y ya tienes tu archivo app.config.

    Saludos,
    Sergio Tarrillo - http://sergiot2.com/blog/
    Si la respuesta ha sido de utilidad marca la como respuesta correcta.
    martes, 31 de marzo de 2009 19:20
  • No tengo ni idea cual es la estructura del app.config que deberia copiar en mi nuevo archivo de texto, me fije en esos links que me pasas pero no se que tendria que poner en mi caso,ademas cuanto instalo mi aplicacion en el cliente solo esta el sistema solo(el .exe) y nada mas, como busco para cambiar la ruta de mis reportes o donde la busco.Gracias de nuevo. 
    miércoles, 1 de abril de 2009 16:37
  • En este artículo:, te dan una estructura:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <appSettings>
        <add key="pathFolder" value="C:\Reportes\tal\" />
      </appSettings>
    </configuration>

    Cuando instalas compilas tu aplicación, tambien se debe generar el archivo .config, junto con el ejecutable. Y tienes que copiar/llevar los dos.

    Saludos,
    Sergio Tarrillo - http://sergiot2.com/blog/
    Si la respuesta ha sido de utilidad marca la como respuesta correcta.
    jueves, 2 de abril de 2009 5:27
  • El error que tengo ahora es el que pongo aqui abajo y viendo por ahi, encontra una supuesta solucion en: http://msdn.microsoft.com/es-es/library/cc807380.aspx

    Ahi dice entre otras cosas que: "Esta excepción se produce cuando un componente de sincronización no administrado, como Synchronization.dll, no está en la instalación. Esto puede ocurrir cuando se ha desinstalado Sync Framework o cuando la instalación no se completó correctamente.
    Solución:Vuelva a instalar Sync Framework. Sync Framework se puede descargar desde este sitio web de Microsoft."

    Busque dicho archivo en mi pc y la verdad que esta tanto ese(Synchronization.dll) como otro que se llama "Microsoft.Synchronization.dll", lo que hice fue agregar este ultimo desde referencias a mi proyecto, ya que "Synchronization.dll" no me permite agregarlo porque me dice "No se puede agregar una referencia.......etc."


    System.InvalidOperationException: Error al crear el formulario. Consulte Exception.InnerException para obtener más detalles.
    Error: Error al recuperar un generador de clases COM para el componente con CLSID {D260B86E-0D8C-4008-B87B-3E6D6BA69A9F}
    debido al siguiente error: 80040154. ---> System.Runtime.InteropServices.COMException (0x80040154):
    Error al recuperar un generador de clases COM para el componente con CLSID {D260B86E-0D8C-4008-B87B-3E6D6BA69A9F}
    debido al siguiente error: 80040154.
       en Construccion.FrCrystal..ctor()
       --- Fin del seguimiento de la pila de la excepción interna ---
       en Construccion.My.MyProject.MyForms.Create__Instance__[T](T Instance)
       en Construccion.My.MyProject.MyForms.get_FrCrystal()
       en Construccion.FrEstadoCli.btnImprimir_Click(Object sender, EventArgs e)
       en System.Windows.Forms.Control.OnClick(EventArgs e)
       en DevComponents.DotNetBar.ButtonX.OnClick(EventArgs e)
       en DevComponents.DotNetBar.ButtonX.OnMouseUp(MouseEventArgs e)
       en System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       en System.Windows.Forms.Control.WndProc(Message& m)
       en DevComponents.DotNetBar.ButtonX.WndProc(Message& m)
       en System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       en System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       en System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    jueves, 2 de abril de 2009 19:55
  • Claro esta, me falto decir que no solucione ese error o sea que me sigue apareciendo el mismo error que puse aqui arriba. Viendo las primeras lineas en donde me tira el error, se puede ver que el error esta en el constructor del formulario(FrCrystal) "Construccion.FrCrystal..ctor()", pero la verdad no se donde esta ese constructor solo tengo estos archivos del formulario FrCrystal(FrCystal.vb,FrCrystal.Designer.vb,FrCrystal.resx) y viendo los mismos no hay nada donde se cree el constructor, igualmente si esta no tiene codigo en si. Donde mas prodria seguir el error que me tira e ir verificando?. Ya probe tambien creando un nuevo form donde le vuelvo a tirar un nuevo control "Crystal ActiveX Report Viewer Control 11.5" pero me sigue tirando el mismo error.
    jueves, 2 de abril de 2009 20:15