Вы находитесь на странице: 1из 7

Como solucionar la impresin en LightSwitch de manera sencilla

Antes de seguir, si no tienes idea de que se trata Microsoft LightSwitch, te recomiendo leer un post que hizo Fernando Machado (un amigo de la casa y excelente profesional) que detalla claramente qu es y cmo se trabaja con LightSwitch. Por otra parte, si ya estuviste jugando con la Beta 1, te cuento que el 15 de Marzo sali la beta 2 del mismo. Si quieres conocer la lista de novedades que incorpora, te recomiendo leer la lista aqu. Un elemento que no incorpora (ninguna de las dos betas), y que no es menor, es la capacidad de hacer reportes.

La solucin que planteamos es invocar a un reporte generado y publicado en Reporting Services instalado en SQL Server 2008 R2 Express

En lo que resta del post trataremos de explicarles como hicimos nosotros para resolverlo.

Manos a la obra
1) El primer paso es crear un botn en la barra de herramientas del formulario

desde donde queremos imprimir nuestro reporte. 2) Luego debemos asignarle un nombre y si as lo deseamos un cono. En nuestro caso el botn se llamar ImprimirPresupuestoCompleto

3) A continuacin estando posicionados en la opcin de men, presionamos el botn derecho del ratn y seleccionamos del men contextual la opcin Edit Execute Code

4) Pegar el siguiente cdigo en el mtodo Execute del botn


partial void ImprimirPresupuestoTotal_Execute() { if (this.Presupuestos.SelectedItem != null) { EjecutarWebBrowser(string.Format(@"http://localhost:80/ReportServer_S QLEXPRESS/Pages/ReportViewer.aspx?%2fReporteDePresupuesto&rs:Command=Render&Id={0}", this.Presupuestos.SelectedItem.Id.ToString())); } }

5) Agregamos el siguiente mtodo al cdigo de la ventana


public static void EjecutarWebBrowser(string url) { if (System.Windows.Deployment.Current.Dispatcher.CheckAccess()) throw new InvalidOperationException(); Exception error = null; var uri = new Uri(url, UriKind.Absolute); var wait = new System.Threading.ManualResetEvent(false); System.Windows.Deployment.Current.Dispatcher.BeginInvoke(delegate() { try { if (AutomationFactory.IsAvailable) { var shell = AutomationFactory.CreateObject("Shell.Application"); shell.ShellExecute(uri.ToString()); } else if (!System.Windows.Application.Current.IsRunningOutOfBrowser) { System.Windows.Browser.HtmlPage.Window.Navigate(uri, "_blank"); } else { throw new InvalidOperationException(); } } catch (Exception ex) { error = ex; } finally { wait.Set(); } }); wait.WaitOne(); wait.Close(); if (error != null) { throw error; } }

Bsicamente lo que hacemos en el punto 4 es abrir un web browser con la direccin del servidor de reportes de SQL ms el reporte que queremos imprimir y el parmetro ID utilizado para imprimir el presupuesto seleccionado. Para ello se utiliza un mtodo helper que se especifica en el punto 5, y que tiene como elemento destacable que funciona tanto para aplicaciones Desktop como Web

6) A continuacin mostramos el reporte publicado en Reporting Services que viene de paquete con SQL Server 2008 R2 Express (Creado con el Report Builder)

7) Finalmente mostramos cmo queda el reporte en conjunto con la aplicacin.

Pueden encontrar ms informacin acerca del tema en:


http://msdn.microsoft.com/en-us/lightswitch/ff796201.aspx http://msdn.microsoft.com/en-us/library/ff851953.aspx http://social.msdn.microsoft.com/Forums/en-US/lightswitchgeneral/threads http://lightswitch.adefwebserver.com/Blog/tabid/61/EntryId/3/Printing-WithLightSwitch.aspx http://lightswitch.adefwebserver.com/Blog/tabid/61/EntryId/11/Printing-Sql-Server-Reportsrdlc-With-LightSwitch.aspx Herramientas utilizadas http://www.microsoft.com/visualstudio/en-us/ http://www.microsoft.com/visualstudio/en-us/lightswitch http://www.microsoft.com/express/Database/ http://www.microsoft.com/downloads/en/details.aspx?FamilyID=d3173a87-7c0d-40cc-a4083d1a43ae4e33&displaylang=en

Comunidad de Usuarios Microsoft Uruguay

2011 L&A SISTEMAS www.lyasistemas.com 25137613

Вам также может понравиться