How To: Utilizar dll`s en nuestros informes.
Como agregar funcionalidad a nuestro informe desde una dll aparte es muy sencillo. Tan solo tenemos que seguir tres pasos, crear nuestra dll, insertarla en el servidor de informes y llamarla desde nuestro informe.
El como crear la dll me lo voy a saltar porque puede haber muchos tipos de clases y maneras de implementarlo. Tan solo decir que puedes estar escrita en cualquier lenguaje de .NET. Voy a dejar un trozito del ejemplo que yo realizé para que se comprenda luego mejor al llamarla.
namespace
Informes_Funciones
{
public class Funciones
{
public string FormateaFecha(string Fecha)
{
return Fecha.Substring(6, 2) + "/" +
Fecha.Substring(4, 2) + "/" + Fecha.Substring(0, 4);
}
}
}
A esta funcion se le pasa una fecha en string del tipo “20070710” y nos la devuelve formateada(o volteada, que es lo mismo en este caso).
Ahora compilamos la dll y la copiamos. Esta deberemos de copiarla en el servidor de informes y en visual studio si estamos probando los informes desde la vista previa de este. Para la aplicación final, tan solo tendremos que meterla en el servidor de informes ya que no le mostraremos el informe desde visual studio a nuestro cliente y si desde nuestra aplicación, desde el browser u otros.
Las rutas son las siguientes:
SQL Server 2005 y Visual Studio 2005:
Unidad:\Archivos de programa(o su equivalente en inglés)\ Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin
Unidad:\ Archivos de programa(o su equivalente en inglés)\ Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies
SQL Server 2000:
Unidad:\ Archivos de programa(o su equivalente en inglés)\Microsoft SQL Server\80\Tools\Report Designer
Unidad:\ Archivos de programa(o su equivalente en inglés)\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin
Ya tenemos nuestra dll en el servidor de informes (en Visual Studio si utilizamos su vista previa). Ahora tan solo tenemos que decirle al informe que tiene una dll que vamos a utilizar.
Dentro del diseñador del informe (no en vista previa, que sino no sale este menú), nos vamos al menú Informe, Propiedades de Informe y seleccionamos la pestaña Referencias. En esta pestaña tenemos dos opciones, hacer referenciar al ensamblado o acceder a través de una instancia.
¿Qué diferencia hay entre las dos?
Pues si hacemos una Referencia, el método al que llamemos de la dll introducida debe de ser estático (shared en vb.net y static en c#) tan solo tenemos que pulsar el boton que tiene dos puntos (..) y seleccionar nuestra dll del directorio del servidor(Unidad:\Archivos de programa(o su equivalente en inglés)\ Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin), agregarlo y aceptar.
Si por lo contrario decidimos que no, que no vamos a poner los métodos estáticos y vamos a instanciar, hacemos lo anterior y abajo en Clases ponemos el Namespace seguido de un punto y el nombre de la clase en Nombre de clase y un nombre al que llamaremos nosotros en Nombre de la Instancia.
¿Cómo llamamos a nuestra funcionalidad?
Pues de dos maneras también, depende de cómo lo agregamos y como hicimos nuestra dll.
- Por Referencia
- Namespace.NombreClase.MiMetodo. Ejemplo: Informes_Funciones.Funciones.FormateaFecha(Fields!MiCampo.Value)
- Por Clases
- Code.NombreInstancia.Método Ejemplo: Code.NombreInstancia.FormateaFecha(Fields!MiCampo.Value)
No os preocupéis si os sale un rayita roja debajo del código al escribirlo en el diseñador, el informe no os generará error por eso y funcionará correctamente.
Espero que os sirva,
Un Saludo