Web Toolbar by Wibiya October 2006 - Artículos - Fran Diaz

Fran Diaz

Reporting Services, .NET, tecnologías Microsoft y otros

Email Notifications

Recent Posts

Tags

News

Community

Comunidades

  • OnobaNET
  • Grupo de usua
  • INETA
  • Culminis
  • Zona de Grupos de Usuarios Online
  • Foro MSDN Español: Colaborador

Webs Amigas

Archives

October 2006 - Artículos

¿Qué instalamos cuando queremos que nuestros clientes vean un informe desde un reportviewer ?

Cuando creamos informes de Reporting Services y los ejecutamos en un equipo local o remoto y luego lo probamos en nuestra máquina con el visor que trae .NET Framework, todo va bien. Pero, ¿qué pasaría si lo instalamos en un cliente o un pc donde no está el Framework 2.0?, pues que necesitamos tener instalado primero y fundamentalmente el .NET Framework 2.0, pero además una librería que no trae el Framework 2.0.

Para solucionarlo debemos instalar un paquete que nos proporciona las dll adicionales para que se pueda ejectuar el visor correctamente. Este lo podemos descargar desde aquí y ver los detalles para su instalación. El archivo se llama ReportViewer(¿intuitivo verdad?), está en español y ocupa 1.8 MB

Un Saludo

MSDN_Media_Center = NewSección("MSDN TV")

Pues eso, que al gran trabajo que están realizando los chic@s de MSDN Latam en recabar información de cara al usuario, añaden ahora una serie de videos de corta duración en una nueva sección llamada MSDN TV.

Para empezar tenemos los dos videos siguientes que podemos descargar en tres resoluciones:  baja, media y alta.

MSDN TV - Episodio 1

Segmento 1: Conexión Tecnológica: Las novedades de Visual Studio .NET 2005 (Primera Parte)
En esta primera entrega de una serie de tres, Roy Morillo, MCP, DCE y miembro speaker de la comunidad de desarrolladores .NET NetaWeb, de República Dominicana, nos brinda información sobre las novedades de esta versión de VS.NET. Roy es entrevistado en esta oportunidad por Daniel Reynaldo, MVP, MCP, y productor de .NET Shows para Radio y TV.

Segmento 2: TechEd 2006 - Parte 1:
Escenas del TechEd 2006 y una entrevista a Javier Loria, Director de Servicios BI, de Solid Quality Learning. Presentado por Adolfo Wiernik de Solid Quality Learning.

Podéis descargarlos desde aquí.


 

Posted: 31/10/2006 16:21 por Fran Díaz | con no comments
Archivado en:
Artículo para optimizar Ajax de DanySoft.

Hoy recibí el news de danysoft correspondiente a este mes en el que me llamó la antención al ver que ponía en el título ajax y decidí verlo. El artículo está en inglés, pero es muy básico, os dejo aquí la url de descarga.

URL: http://www.danysoft.com/free/AJAXandSpread.zip

No llega a los 600kb y creo que aunque puede ser poco, muchos granitos de arena hacen el castillo.

Un Saludo

Posted: 23/10/2006 22:44 por Fran Díaz | con 1 comment(s)
Archivado en: ,,
Exportando un informe desde Reporting Services

Hola,

Pues si, de eso se trata, de exportar, jejeje. Verás cuando vamos a crear un informe utilizamos tres formas diferentes de crearlo, desde código, desde el Visual Studio.NET y desde Report Builder, podéis ver más información aquí. Hasta aquí todo bien, lo subimos al servidor y listo, pero... ¿que pasa si queremos personalizar nuestra aplicación controlando lo que hace nuestro usuario y como se lo permitimos?.

Pues bien, MS SQL Server Reporting Services nos provee de unas API´s que se encargan de manejar toda las interfaces con las que nosotros interactuamos para hacer nuestros Informes.

Estas API`s son tres servicios web que se alojan en la máquina cuando se instala Reporting Services y son los siguientes: ReportExecution2005, ReportingServices, y ReportService2005. Con ellos podemos montar toda la interfaz para crear, implementar y manejar nuestros reportes. Aunque hacer todo esto es podría resultar pesado (según por donde se mire), tenemos la ventaja de que por otro lado podemos controlar como lo hace, seguridad, implementación y paso de parámetros a través de otros controles propios. Todo esto iré explicandolo en mi blog a medida que vaya viéndolo, por ahora vamos solo vamos a hacer este ejemplito simple.

Para crear exportar un informe desde código vamos a añadir un proyecto nuevo de tipo Windows Forms y a continuación vamos a añadirle el control ReportViewer, dos botones y un combobox para elegir el formato a guardar., uno para ver el informe y otro para guardar el informe. La pantalla quedaría una cosa así:

A continuación editamos las propiedades del control ReportViewer, le especificaremos que el tipo de informe es de servidor (Reporting Services), a continuación especificaremos la ruta a nuestro servidor de informes, por defecto es: http://localhost/reportserver en una máquina local y si tenemos el servidor de informes en otra máquina con la configuración del nombre por defecto sólo tendríamos que cambiar localhost por el nombre de la máquina o dirección IP de la misma [:D].

Nota: si la dirección de nuestro servidor de informes está en otra máquina tendríamos que configurar en esa máquina los permisos para un usuario en concreto. O darle permisos desde nuestro código para que entrase con una cuenta predefinida. Este tema lo podría ser un posterior post, quien sabe.

A continuación en “Ruta de acceso del Informe” colocaremos el informe que queremos visualizar. Si nuestro informe está dentro de subcarpetas los pondremos tal que así: Carpeta1/Carpeta2/…/NuestroInforme. No hace falta volver a indicar la ruta de nuestro servidor de informes con nuestro informe como podréis comprobar.

Para ejecutar el informe, dentro del evento Click del botón “ver informe” escribiremos la siguiente línea:

reportViewer1.RefreshReport();

Si queremos introducir la dirección de nuestro report y servidor desde código lo haremos de esta forma:

      reportViewer1.ServerReport.ReportPath = "/MiCarpeta/MiInforme";       Uri url = new Uri("http://localhost/reportserver/");      this.reportViewer1.ServerReport.ReportServerUrl = url;      this.reportViewer1.RefreshReport();

A continuación para guardar el informe en un formato de los que nos provee la API de Reporting Services vamos a agregar un nuevo control SaveFileDialog para guardar dichas extensiones. Vamos a comentarlas un poco cuales son y que hacen.

· XML. Crea una estructura de datos en XML que la forma las tablas, filas y conjuntos de los mismos.

· CSV. Genera un archivo con los datos de las columnas que intervienen en el informe y los datos que lleva separados por comas.

· Image. Guarda los datos que tal como están en pantalla en el momento de guardar en formato Tiff.

· PDF. Crea un archivo Tiff que luego guarda en formato PDF.

· EXCEL. Crea un archivo completo del informe mostrado y con los datos actuales. Este informe te permite modificar todos su datos y da igual que todos los nodos estén colapsados, este te permite abrirlos para una posterior edición.

· MHTML. Convierte un archivo para verlo en el web.

A este control le vamos a agregar a la propiedad filter los parámetros por los que queremos que nos guarde, que son las extensiones que anteriormente he explicado que serían las siguientes:

  • PDF = "PDF file (*.pdf)|*.pdf".
  • IMAGE = "Tiff file (*.tif)|*.tif".
  • MHTML = "Página Web (*.mhtml)|*.mhtml".
  • EXCEL = "Microsoft Excel Workbook (*.xls)|*.xls".
  • CSV = "CSV (*.csv)|*.csv".
  • XML = "XML (*.xml)|*.xml".

¿Cómo se lo agregamos?, pues lo haremos de la siguiente forma, cada vez que pulse en guardar informe, comprobaremos lo que hay en el combobox y llamaremos a un función que dependiendo del parámetro que le pasemos (que será el que haya en el combobox) nos pasará un string para asignar a la propiedad filter. Evidentemente a este combobox deberemos pasarles las extensiones que queramos que nos muestre como ítems del mismo y la función nos devolverá las que hemos explicado anteriormente.

Lo siguiente que haremos es importar el servicio Web que instala SQL Server Reporting Services 2005. Esto lo haremos haciendo botón derecho sobre el proyecto y pulsando sobre Agregar Referencia Web. De la pantalla que nos muestra seleccionaremos el link Servicios Web del Equipo Local y a continuación ReportExecution2005. Nos saldrá esta ventana:

Esta ventana nos muestra una serie de valores:

· Dirección URL. Indica la dirección donde está alojado nuestro servicio Web. En este caso es en nuestra máquina pero podría ser en otro servidor. Si fuese otro servidor tendríamos que estar como usuario del mismo y al conectarnos, este nos pedirá el nombre de usuario y contraseña.

· Nombre de referencia Web. Este es el nombre de la referencia Web que nosotros vamos a asignarle para llamarlo desde nuestro proyecto. Esto no indicia que haya que poner ahí el nombre del Servicio Web, sino uno con el que nosotros recordemos que es lo que hacía.

· Descripción del servicio. Este es el cuadro principal que sale al cargar la pantalla. Este muestra la Documentación donde incluye que hace el servicio Web. Por otro lado, muestra los métodos y parámetros que contiene el servicio Web

Una vez añadido el servicio Web, editaremos el evento click del botón “Guardar Informe”, al cual le añadiremos el siguiente código:

// Asignamos el filtrado.
this.saveFileDialog1.Filter = this.DameCadenaFilter();
if (this.saveFileDialog1.ShowDialog() == DialogResult.OK){
// Creo una variable que contendrá el nombre y ruta del archivo.
string archivo = this.saveFileDialog1.FileName;
// Creo una variable que contendrá el formato.
string formato = null;string history = null;
// Creo una instancia del Servicio web de ejcución.RSExecution2005.ReportExecutionService RSGuardar = new WApp_FormatoRS.RSExecution2005.ReportExecutionService();      
// Asigno el formato.      formato = this.comboBox1.Text;                     
// Asigno las credenciales.RSGuardar.Credentials = System.Net.CredentialCache.DefaultCredentials;      
// Cargo el report.
RSGuardar.LoadReport(this.reportViewer1.ServerReport.ReportPath, history); 
// Si el formato trae algo(significa que seleccionó algo del combobox) lo guardo.      if (formato != null)     
{      
     string deviceInfo                   = String.Empty;      
     string Extension                    = formato;      
     Byte [] Resultados                  = null;      
     string Codificacion                 = String.Empty;      
     string mimeType                     = String.Empty;      
     RSExecution2005.Warning[] warnings  = null;      
     string[] streamsIDs                 = null;       
     // Paso los resultados de renderizar a un conjunto de bytes.      
     Resultados = RSGuardar.Render(formato, deviceInfo, out Extension, out Codificacion,out mimeType, out warnings, out streamsIDs);                         
     // Escribo el conjunto de bytes en un archivo con su extensión.     
     using (FileStream stream = File.OpenWrite(archivo))     
     {  stream.Write(Resultados, 0, Resultados.Length);}  
}}

Este lo que hace básicamente es cargar un report a través de su path, lo que significa que no haría falta cargar primero el informe y luego guardarlo, sino que podemos pasarle el report, este lo carga y a continuación crea un array de bytes que serán almacenados como un archivo en disco.

La función que me traerá la extensión que agregaremos al filter y a la que le pasaremos el valor que hay en el combobox es la siguiente:

private string DameCadenaFilter()       
{           
  switch (this.comboBox1.Text)           
  {                
     case "MHTML":  return "Page, single file (*.mhtml)|*.mhtml";               
     case "PDF":    return "PDF *.pdf|*.pdf";               
     case "IMAGE":  return "Tiff file (*.tif)|*.tif";               
     case "EXCEL":  return "Microsoft Excel Workbook (*.xls)|*.xls";               
     case "XML":    return "XML (*.xml)|*.xml";               
     case "CSV":    return "CSV (*.csv)|*.csv";                   
     default:       return null;           
  }       
}

Bueno, espero que os haya sido de utilidad, otro día más, jejeje.

Un Saludo

Fran Díaz

dotNetMania 30 viene cargadita este mes

Si si, tal como le leeis, este mes dotnetmania viene pisando fuerte para todo lo que se nos avecina. Ya se están preparando el siguiente cuaderno técnico que corresponde al número 5 y que tratará de Optimización de aplicaciones ASP.NET. También se revela los dos siguientes, que tratarán de  WPF y Sharepoint 2007, pero esto no es todo, estos tres cuadernos serán gratuitos gracias en parte a MSDN España y que esperemos estén pronto en nuestras casas Big Smile(¿podremos esperar?).

Entre los articulos que podréis leer, cabe mencionar entre otros al aniversario de el Guille que tan sonado ha sido en estos dias, desde aquí la gente de OnobaNET le felicitamos.

Más info en www.dotnetmania.com

Fran Díaz

Posted: 16/10/2006 0:04 por Fran Díaz | con 3 comment(s)
Archivado en: