none
Reportes ruta RRS feed

  • Pregunta

  • Si la conexion se trabaja por App.config para no tener que modificar todo cuando instales en mas de 3 equipos como seria el caso de las rutas de los reportes? como se maneja ruta para no hardcodear?
    • Editado AcuTau jueves, 12 de mayo de 2016 13:38
    jueves, 12 de mayo de 2016 13:38

Respuestas

  • No veo porque quieres hacer esto, si dejas todos tus reportes dentro de una carpeta a un lado del ejecutable de tu aplicación y si en tiempo de diseño defines el origen del reporte usando esta opcion tu aplicación debe de ser capas de resolver la ruta de ubicación sin intervención de nadie, esto se hace de manera automática siempre y cuando no modifiques el nombre de la carpeta contenedora todo debe de funcionar de la misma forma.

    Saludos desde Monterrey, Nuevo León, México!!!

    • Marcado como respuesta AcuTau viernes, 13 de mayo de 2016 2:41
    jueves, 12 de mayo de 2016 22:39

Todas las respuestas

  • No esta muy clara tú pregunta, pero mira ver si te sirve esto:

    Application.StartupPath()

    Esto te devuelve el directorio donde esta ejecutándose la aplicación.

    • Propuesto como respuesta PGF_MSDN jueves, 12 de mayo de 2016 14:34
    jueves, 12 de mayo de 2016 14:19
  • es decir puedo usar ese codigo sin tener que usar 

    Me.ReportViewer1.LocalReport.ReportPath = "D:\Documents\Programacion\2016\Combustible\Control de Combustible v1 - 2016\Control de Combustible v1 - 2016\ReporteCombu.rdlc"

    algo asi? entonces lo que mencionas probare y lo marco, Gracias

    Es que mi pregunta es si tengo rutas de reporte en la carpeta donde tengo el codigo si esta aplicacion la usara en otros equipos entonces tendria que ingresar al codigo cambiar las ruta de todos los reportes y volver a generar la aplicacion y hacer un exe, entonces asi como en la BD se usa el App.config y solo se cambia desde alli sin tener que modificar mas, la pregunta es como seria en el caso de los reportes. 

    Creo que encontre algo de lo que decias pero no te entendia:

    https://social.msdn.microsoft.com/Forums/es-ES/31302826-78ff-4088-9014-6e4200364f39/obtener-path-de-ubicacin-de-un-rdlc?forum=vcses

    Pero igual no entiendo como se hace eso.


    • Editado AcuTau jueves, 12 de mayo de 2016 14:33
    jueves, 12 de mayo de 2016 14:26
  • Efectivamente, para lo que quieres hacer te sirve lo que te indique anteriormente. Ya me cuentas. Un saludo.
    jueves, 12 de mayo de 2016 14:34
  • Pero no.entiendo como se usa en el app.config tienes algun ejemplo? Lo.del.otro.foro.no entiendo
    jueves, 12 de mayo de 2016 17:07
  • Hola JackJJ:

     En su momento tuve la misma necesidad que tu, solo que la forma de trabajo que usaba es diferente a la que estas usando tu, mi proyecto estaba dividido en capas cada capa son su respectiva responsabilidad, para el caso de la pregunta a la que te refieres yo tenia un proyecto especifico para mis reportes llamda "Reportes" aqui tenia todos los RDLCs y los formularios, por eso cuando use esa linea me funciono perfectamente:

    _reportViewer1.LocalReport.ReportEmbeddedResource = "NombreProyectoLibreriaClases.NombreReporte.rdlc";

    En tu caso, no creo que tengas que hacer todo un proyecto especial para tus reportes para lograr obtener la ruta de ubicación de estos, si tienes una carpeta con todos los archivos rpt dentro entonces bastara con que uses la propiedad ApplicationStartupPath para obtener la ruta de ejecución de tu aplicación, posteriormente concatenar el nombre de la carpeta y el nombre el reporte, mas o menos así:

    Dim rutaAplicacion AS String
    rutaAplicacion = ApplicationStartupPath
    Dim rutaReporte As String
    rutaReportes = System.IO.Path.Combine(rutaAplicacion, "NombreCarpetaContenedoraDeTusRpt", "NombreReporte")
    
    _reportViewer1.LocalReport.ReportEmbeddedResource = rutaReporte 

    Mas o menos trabajarías de esa forma y no tendrías que cambiar nada mas ni usar el App.Config (que también es posible que guardes en el la cadena de ubicación de tus rpts pero creo que no es necesario)

    Espero te haya quedado un poco mas claro el asunto.


    Saludos desde Monterrey, Nuevo León, México!!!


    jueves, 12 de mayo de 2016 17:12
  • Ese codigo que me propones es un modulo publico ? o es parte del formulario de reporte, lo que pones es para no tener que hard-codear el codigo? yo tengo mis reportes en una misma carpeta donde esta la aplicacion, pero mm segun una guia para hacer exe con el instalshield he visto que en la guia incluyen estos reportes entonces tambien estarian dentro de la carpeta,

    Entonces en el formulario de reporte solo tendria que cambiar mi linea por tu linea y adaptador ?

    Gracias

    En esta linea:  rutaAplicacion = ApplicationStartupPath

    Sale que no esta declarado


    • Editado AcuTau jueves, 12 de mayo de 2016 18:43
    jueves, 12 de mayo de 2016 18:41
  • Hola:

     Ese código te permite definir el reporte que gustes a un ReportViewer, pero para responderte donde es que va, me gustaría saber cual es le objetivo de definir por código el origen del rpt?, piensas reutilizar un solo reportViewer?


    Saludos desde Monterrey, Nuevo León, México!!!

    jueves, 12 de mayo de 2016 19:34
  • al inicio pensaba usar un solo report usando select case pero se me complico era 1 report y 3 rdlc. al final hice 3 form con su reportviewer y asi puedo usar los 3 rldc informes, entonces del codigo que describi arriba es como lo estado poniendo cada uno con su respectivo normal y la misma ubicacion.

    Entonces para el caso del codigo que me propones como seria

    jueves, 12 de mayo de 2016 21:02
  • Hola JackJJ,

    Un archivo de configuración te puede servir incluso para guardar rutas, pero es innecesario. Lo que debes de hacer -y los aportes anteriores apuntan a eso- es definir una ruta relativa, ¿relativa respecto a que? pues relativa a la ubicación del ejecutable, lo que quiere decir que la ruta de reportes se "moverá" según se encuentre la aplicación.

    La idea es que la ruta sea la siguiente:

    Cualquier Ruta\MisReportes\Ventas.rdcl

    Cualquier Ruta\MisReportes\Compras.rdcl

    La ruta fija (la que quieres hardcodear) lo retorna  ApplicationStartupPath()

    jueves, 12 de mayo de 2016 21:11
  • Hola:

    al inicio pensaba usar un solo report usando select case pero se me complico era 1 report y 3 rdlc. al final hice 3 form con su reportviewer y asi puedo usar los 3 rldc informes, entonces del codigo que describi arriba es como lo estado poniendo cada uno con su respectivo normal y la misma ubicacion.

    Entonces para el caso del codigo que me propones como seria

     La verdad no entendí la situación.

     si tienes tres Forms con sus respectivos ReportViewer y tienes tres archivos rdlc, entonces para que deseas pasar la ruta de ejecución?, no seria mas sencillo si a cada ReportViewer le defines en el diseñador el reporte que debe cargar?, de esa manera te olvidas pasar por código la ruta de ubicación de los reportes...Insisto si mejoras un poco la descripción de tu problema quizás podamos dar una mejor solución a tu problema real.


    Saludos desde Monterrey, Nuevo León, México!!!

    jueves, 12 de mayo de 2016 21:29
  • hOLA,

    Supongamos que la aplicacion la quiera pasar a otra maquina  la ruta del reporte no sea la misa y va salir error xk capaz no lo encontrara a menos que cuando se añaden los reportes al exce lo haga pero si esta app la llevo fuera a otro lugar la condiguracion esta con mi computadora y si lo ejecuto alla no va correr,

    jueves, 12 de mayo de 2016 22:07
  • AAAh se movera segun encuentre la aplicacion, entonces cuando se hace el exe con el install shield agrego los rdlc pero de una carpeta dentro del exe, entonces al momento de instalarlo en otra estos se moveran juntos a la aplicacion verdad?

    jueves, 12 de mayo de 2016 22:10
  • No veo porque quieres hacer esto, si dejas todos tus reportes dentro de una carpeta a un lado del ejecutable de tu aplicación y si en tiempo de diseño defines el origen del reporte usando esta opcion tu aplicación debe de ser capas de resolver la ruta de ubicación sin intervención de nadie, esto se hace de manera automática siempre y cuando no modifiques el nombre de la carpeta contenedora todo debe de funcionar de la misma forma.

    Saludos desde Monterrey, Nuevo León, México!!!

    • Marcado como respuesta AcuTau viernes, 13 de mayo de 2016 2:41
    jueves, 12 de mayo de 2016 22:39
  • Estuve pensando y recordando que hace una año hice una aplicacion la cual ejecute y no tome encuenta los reportes sin embargo, estoy si se mostraban sin error entonces segun lo que me comentan los reportes van donde la aplicacion.

    Es que me quede pensando respecto al tema de la base de datos si esk no mueves a muchos lares(lugares) hay k meterse al codigo y modificar entonces con app.config solo modificas desde alli y solucionado. Entonces dije y los reportes? Pero ya veo que no .

    Gracias a todos x su respuesta.

    Solo era ese tema ya he terminado la aplicacion. Mi proximo proyecto es control de asistencia con huella y/o con tarjeta cob codigo de barras.

    Algo nuevo para aprender en el uso de huella y codigo de barras. Tendre k conseguir el de huellas y el lector de tarjetas.

    Gracias.


    • Editado AcuTau viernes, 13 de mayo de 2016 2:44
    viernes, 13 de mayo de 2016 2:41