Crear un reporte en reporting services y ligarlo con un proyecto de Windows en .Net (Parte2)


En la parte 1 vimos como crear un proyecto de Reporting Services con un reporte básico. Ahora veremos como hacer que en una ventana de windowsForm se visualice el reporte creado.

Inicialmente agregamos un proyecto de windowsApplications a nuestra solución actual.

image

image

Ponemos el diseñador del formulario que aparece en forma predeterminada en la solución y agregamos en el:

1 ReporViewer de nombre rpwReporte,

1 Botón con la etiqueta “Actualiza” de nombre btnActualiza,

2 Label de nombre lblServer y lblReporte,

2 TextBox de nombre txtServer y txtReporte.

image

En el evento clic del botón que creamos con nombre btnActualiza agregamos el siguiente código.

image

Con esto, de manera de código configuramos nuestro formulario para que se presente un reporte dependiendo de las direcciones que ingresemos en las cajas de texto.

Ahora bien, qué ponemos en las cajas de texto???

El nombre del server, debe ser la dirección web de donde se ha publicado el reporte, que puede ser “http://localhost/reporteserver” y en reporte “/MisReportes/MiReporte”, siendo “MiReporte” el nombre del mismo.

Pero esto es una forma, lo que se puede también hacer es poner estos valores en el archivo app.config de la aplicación de la siguiente manera.

image

Luego nuestro código cambiaría así:

image

Bueno, esto es todo en esta segunda parte, creo que me ha faltado algo… mmmmmmmmm, sí, nunca publicamos el reporte en ser servidor de Reporting Services. En la tercera parte veremos eso y espero que les sirva.

Nos vemos.

Cómo publicar una aplicación web (1)


Primero vamos a verlo como sistema de archivos.

Damos clic derecho al archivo de proyecto de nuestra aplicación web

clip_image001

Damos clic en publicar y nos saldrá la siguiente ventana.

clip_image002

Le damos un nombre debajo de “perfil de publicación”, le voy a poner “local2”

Luego de las opciones que hay en la sección “publicar” escogemos la de “sistema de archivos”

clip_image003

clip_image004

En ubicación de destino especificamos la dirección física de dónde queremos guardar el sitio web compilado.

clip_image005

Luego elegimos si queremos reemplazar los archivos existentes o de plano eliminar lo que existe en esa carpeta y publicamos. Como resultado veremos nuestras carpetas del sitio web, nuestros archivos aspx y las dll generadas de nuestro código. Es decir, que nooooo veremos el código fuente.

clip_image007

Y en la carpeta “bin” las dll.

clip_image009

Como último, después de publicar, tenemos algo interesante, en la parte superior, en “perfil de publicación” la caja de text se cambió automáticamente por un combo donde se almacenan los perfiles que hemos hecho de publicación. Esto es para que en futuro podamos publicar haciendo referencia solo con el nombre de perfil.

clip_image010

Espero les sirva.

Crear un reporte en reporting services y ligarlo con un proyecto de Windows en .Net (Parte1)


Primero creamos un proyecto Windows con un form, luego a la solución creada le damos clic derecho a agregar nuevo proyecto de Business Intelligence

clip_image002

clip_image004

Luego agregamos un origen de datos

clip_image006

Lo configuramos con la base de datos que nos vamos a conectar, es nuestro caso SQL Server.

clip_image008

Agregamos un nuevo elemento de informe.

clip_image010

clip_image012

Damos en agregar y se crea un informe en blanco en el proyecto.

Ahora, vamos a crear un origen de datos que será específicamente del reporte. Anteriormente habíamos ya configurado un origen de datos, pero este es a nivel de proyecto, este nuevo será a nivel de reporte el cual hará referencia al de proyecto.

Esto es así porque uno puede crear orígenes de datos compartidos o específicos para un reporte, sin embargo, en este caso se crea un reporte y se configura para que utilice la configuración del origen de datos compartido. Espero se entienda, sino lo veremos en las gráficas como va.

Del lado derecho de la pantalla podemos ver la ventana de “Datos de informe”, en el cual creamos el origen de datos vinculando con el compartido que creamos al inicio.

clip_image014

clip_image016

Luego creamos el DataSet (conjunto de datos) que emplearemos en el reporte.

clip_image018

Y veremos del lado derecho un conjunto de datos para incluir en el reporte.

clip_image020

Luego utilizaremos un control de Tabla y lo arrastramos dentro del reporte.

clip_image022

Luego arrastramos los campos a la tabla.

clip_image024

Y damos clic en vista previa.

clip_image026

Con esto terminamos un reporte que solo consulta un “select”

 

Ir a Parte 2

Tomar valores del archivo .config en .Net


 

Para tomar valores del archivos .config de la aplicación .net que estemos desarrollando necesitamos antes crear estos valores de la siguiente forma:

 

image

Primero está la sección de las conexiones a la base de datos, acá se puede almacenar N conexiones dependiendo de lo que necesitemos. Además tenemos la sección de las variables de la aplicación “appSettings”.

 

Luego de configurar en archivo .config, para leerlo desde nuestra aplicación solo necesitamos de las siguientes líneas.

image

 

No olvidar antes tener referenciado el componente System.configuration en su aplicación y hacer un “using System.Configuration;” en la parte inicial de la página de código.

Espero les haya servido.

.Net Usuarios con Active Directory


Siempre encuentro gente que pregunta como puedo validar un usuario contra active directory, y para esto hay diferentes formas. Acá dejo algo que puede servir para el caso o para sacar otra información.

image

El método anterior llama a este método que le retorna un String con el cual se realiza la búsqueda en la base de datos.

image

Espero les sirva.

Los Predicate de .Net


 

No terminé de entender esto hasta que me tocó “obligatoriamente” utilizar esto en unos desarrollos que estaba haciendo.

Como hacer para que en una lista de objetos me busque uno específico con el método Find(), pues bueno, acá te pongo un escenario:

 

Tengo una clase del típico persona…

public class Persona
    {
        public Decimal IdPersona { get; set; }
        public String Nombre { get; set; }
        public String Apellido { get; set; }
        public Decimal Edad { get; set; }
        public String EstadoCivil { get; set; }
     }

Ahora, desde mi programa principal creo una lista y de mi clase Persona.

List<Persona> lisPersona = new List<Persona>();

Haremos de cuenta que tenemos un método que llena mi lista de personas o mejor creamos un for de 5:

for (Int16 i = 10; i <= 14; i++)
                {
                    Persona persona = new Persona();
                    persona.IdPersona = i;
                    persona.Nombre = “Nombre ” + i;
                    persona.Apellido = “Apellido ” + i;
                    persona.Edad = i + 15;
                    lisPersona.Add(persona);
                }

Luego creamos 2 métodos “predicate”

private Boolean BuscaPersona(Persona objPersona)
        {
            if (objPersona.Edad == 26)
                return true;
            else
                return false;
        }

private Boolean BuscaAlgunasPersona(Persona objPersona)
        {
            if (objPersona.Edad > 26)
                return true;
            else
                return false;
        }

 

y lo usamos así

Persona newPersona = lisPersona.Find(BuscaPersona);

Si el resultado de Predicate es verdadero devolverá un objeto de persona, el primero que encuentre, pero si se usa el objeto FindAll(), devolverá los objetos que cumplan con la condición.

List<Persona> newListPersona =  lisPersona.FindAll(BuscaAlgunasPersona);

Espero que esta información les sirva.

Saludos.