post icon

Como crear reportes en Reporting Services y asignar credenciales de autenticación

Otra herramienta para crear reportes que disponemos es Reporting Services de la mano de Microsoft, la mimsa tiene apologistas y  detractores de dicha tecnología cosa que no discutiremos en éste momento.

Una de las ventajas que nos ofrece es que los reportes pueden ser almacenado en un servidor único y ser consumidos desde el lado cliente, ventaja para alivianar la carga del desarrollo de las aplicaciones.

El ejemplo que veremos ahora es crear dentro de nuestro servidor de Reportes un reporte simple y plano, en el cual no me enfocaré demasiado en la apariencia final que tendrá la misma, sino más bien en los pasos y lugares que interactúan para su funcionamiento, además de crear un credenciales por código para poder visualizar los reportes desde clientes que no estén en la red local y automáticamente se autentiquen a través de un dominio de red.Suponiendo que ya tenemos instalado correctamente nuestro servidor de reportes con SQL Server 2008, iniciaremos abriendo el Visual Studio y crearemos un nuevo proyecto del tipo Business Intelligence y seleccionamos la plantilla de Servidor de Impresiones.

Ahora necesitamos crear el Data Source o la fuente de datos que alimentará a nuestros reportes, aquí podemos crear varios y administrarlos de manera independiente e incluso conectarlos a distintos servidores, pero para éste caso crearemos uno sólo y será compartido con todos los reportes que creen más adelante.

En la siguiente pantalla agregaremos el query que alimentará al reporte, de momento no recibirá parámetros (esto lo veremos en otra entrada), en mi caso sólo he agregado el siguiente query sql:

SELECT * FROM EMPLEADOS;

También pueden optar por crear el query con el asistente que trae si lo desean.

Una vez hecho ésto el asistente nos ofrece seleccionar un tipo de informe pre hecho de tipo Tabular (Sólo Columnas) y Matriz con (Columnas y Filas) escogeremos el tabular de momento.

Ahora podemos elegir el diseño que tendrá

En el siguiente paso le podremos asignar una apariencia prediseñada que al final podemos cambiarla a nuestro parece y gusto.

Ya casi terminando los pasos nos queda poner el nombre del reporte, y luego el servidor donde vamos a deployar los reportes.

Ahora ya veremos en el Visual Studio el diseño del mismo, y podemos editarlo a gusto, pero como venía diciendo no retocaremos el mismo aún. Si presionamos F5 veremos una vista previa del mismo y debería quedar algo así.


Ahora sólo queda implementar en el servidor de producción, para ello daremos clic derecho sobre el proyecto y elegimos dicha opción

Al revisar si ha sido correctamente deployado podemos acceder a la siguiente ruto: http://servidor/Reports, hacemos clic en el reporte que verán como un link.

Finalmente nos queda sólo ver el reporte desde nuestra aplicación ASP.Net, para la cual creamos otro proyecto de tipo aplicación Web.

Lo único que arrastraremos en la página para el ejemplo será un WebControl ReportViewver el cual se encargará de mostrarnos lo que acabamos de crear.

Ahora si queremos acceder desde cualquier lugar que no esté dentro del Dominio de Windows necesitamos autenticarnos para ver los reportes, asi que crearemos manualmente las credenciales para ello desde C# en el evento Load de la página.

1
2
3
4
5
6
ReportViewer1.ShowCredentialPrompts = false;
ReportViewer1.ServerReport.ReportServerCredentials = new CredencialesReporting("Usuario", "*********", "");
ReportViewer1.ProcessingMode = Microsoft.Reporting.WebForms.ProcessingMode.Remote;
ReportViewer1.ServerReport.ReportServerUrl = new System.Uri("http://192.168.1.97/ReportServer");
ReportViewer1.ServerReport.ReportPath = "/ReportingDevtroce/ReporteDeEmpleados";
ReportViewer1.ServerReport.Refresh();

Para usar el código anterior necesitamos crear una subclase dentro de nuestra clase principal, y es como sigue:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 public class CredencialesReporting : Microsoft.Reporting.WebForms.IReportServerCredentials
{
	string _usuario, _password, _dominio;
	public CredencialesReporting(string userName, string password, string domain)
	{
		_usuario = userName;
		_password = password;
		_dominio = domain;
	}
 
	public System.Security.Principal.WindowsIdentity ImpersonationUser
	{
		get
		{
			return null;
		}
	}
 
	public System.Net.ICredentials NetworkCredentials
	{
		get
		{
			return new System.Net.NetworkCredential(_usuario, _password, _dominio);
		}
	}
 
	public bool GetFormsCredentials(out System.Net.Cookie authCoki, out string userName, out string password, out string authority)
	{
		userName = _usuario;
		password = _password;
		authority = _dominio;
		authCoki = new System.Net.Cookie(".ASPXAUTH", ".ASPXAUTH", "/", "Domain");
		return true;
	}
}

Comentarios desde Facebook:

  1. avatar
    Jorge ECUADOR Google Chrome Windows
    10 abril 2014 at 12:18 #

    Saludos… puedo hacer casi lo mismo con la diferencia de que mi aplicación esta en HTML5 y llamar al reporte?

  2. avatar
    Luis Rodríiguez MEXICO Google Chrome Windows
    30 agosto 2013 at 11:53 #

    Hola, como estas?
    Tengo la siguiente pregunta en este artículo:
    http://www.devtroce.com/2010/10/25/como-crear-reportes-en-reporting-services-y-asignar-credenciales-de-autenticacion/

    Las credenciales que le pasas como parámetros (usuario y contraseña), cuáles son?, ¿con las que inicio sesión en el servidor donde esta reporting services?
    Espero me puedas ayudar, disculpa la pregunta, pero apenas empiezo con acceso remoto de reporting services en ASP.NET.

    De antemano, muchas gracias!
    Saludos.

  3. avatar
    Marina ARGENTINA Google Chrome Windows
    3 mayo 2012 at 11:16 #

    Buen día necesito hacer la siguiente consulta: Invoco al Reporte de Reporting Services con JQuery y JsonResult (Modo Remoto), ingresando la url del reporte dentro de un iframe y necesito poder enviar las credenciales de autenticación como puedo hacerlo?

Trackbacks/Pingbacks

  1. Como crear reportes con Crystal Report en ASP.Net y SQL Server | DevTroce.com WordPress - 2 noviembre 2010

    […] pocos hemos visto como crear reportes con Reporting Services y como hacerlo con Crystal Reports en WinForms, pero hoy veremos como crear un simple reporte con […]

Responder a Marina