Imprimir con LightSwitch y ActiveReports6 (I)

En esta entrada Joan Miquel Fernandez nos muestra las clave para añadir el Visor (Viewer) SilverLight de ActiveReports6 dentro de aplicaciones LightSwitch. La preparación de esta serie de tutoriales ha sido una labor laboriosa ya que abarca varios ámbitos y etapas del desarrollo. Inicialmente y para no complicar demasiado se ha tomado como punto de inicio la base de datos del ejemplo anterior, el ejemplo no busca la funcionalidad de la aplicación sino el conocimiento y dominio de las diferentes técnicas y puntos de extensión de LightSwitch.

Este primer artículo y How-to sobre la impresión con LS y AR6 contempla la instalación y el desarrollo inicial de la aplicación de test.

También como reflexión inicial hay que pensar que AR6 es un componente de terceros, soy de los que piensa que hay que utilizar siempre que sea posible los controles nativos de la plataforma, en este caso y hasta que LS no tenga reporting propio considero a AR6 como una de las opciones más profesionales, eso sí, con un coste añadido que vale su coste en Oro.

Ir a la página de datadynamics para descargar la versión trial

 

Es muy recomendable revisar los ejemplos de Silverlight Viewer en la parte de Active Reports 6 Professional.
 

Ahora crearemos una aplicación base para el ejemplo.

 


 

 

 

 


 


 

¿Qué viene ahora? – El siguiente tutorial habla de como crear un User Control personalizado para LS.

Los archivos para descarga estarán en la última parte del tutorial…

Sumar columna acumulada SQL Server

Joan Miquel Fernandez nos explica a continuación como obtener una columna acumulada dentro de una consulta. El objetivo de esta query es conseguir el total acumulado de todas las filas hasta la fila actual de una columna.

Como se puede deducir fácilmente es util en programas de control de stocks, contabilidad, etc…

SELECT     idcontador, fecha, idproducto, documento, tipomovimiento, identidad, entrada, salida, (SELECT     SUM(entrada - salida) AS arrastre
                            FROM          temporal_movimientos AS t1
                            WHERE      (idcontador = t.idcontador)) AS Arrastre2
FROM         temporal_movimientos AS t
ORDER BY idcontador

Filtros en LightSwitch (filters in LighSwitch)

En esta entrada vamos a ver cómo se utilizan y para que sirven los filtros en LightSwitch. Como ejemplo voy a tomar una pregunta que me ha sido realizada en el blog, voy a dar aquí mi visión y una posible solución, por supuesto seguro que no es la única pero se agradecen los comentarios y las aportaciones.

El ejemplo trata de unos productos que tienen relacionados unos numeros de serie, más adelante introduciremos una tabla de ventas en las que asociamos que producto vendemos y que número de serie asignamos. fácil. ¿no? 😉

Comenzamos definiendo las tablas de la base de datos, (al final del artículo están los ficheros para descargar :D). La base de datos se podía haber creado desde LS pero yo estoy más cómodo desde SQL SERVER.

Ahora creamos la aplicación LS y le adjuntamos la base de datos que hemos creado:

Elegimos las tablas:

Vemos la relación de productos con los números de serie

Creamos una Screen para introducir un par de productos en nuestra tabla

Creamos otra para las Series, observamos que son independientes

Vemos como va quedando el arbol

Introducción de productos

Introducción de números de series

Ahora vemos el maestro-detalle de productos a numeros de serie

Es el momento de incorporar la tabla de ventas que tiene una relación con productos y otra con números de serie

Refrescamos el data source para que LS recoja los cambios.

Añadimos la tabla de ventas.

Vemos la relación dentro de LS

Creamos una nueva pantalla de Venta

Debemos crear una nueva Screen CreateNewVenta

Para trabajar más cómodos ponemos la Screen de ventas como predeterminada.

En la Screen de ventas hacemos un override del botón new y lo redirigimos a CreateNewVenta

Application.ShowCreateNewVenta();

Ahora podemos ver que se activa la Screen que hemos definido y vemos como no funciona adecuadamente, cuando elegimos los números de serie aparecen todos y no sólo los asociados a ese producto.

En la Screen CreateNewVenta añadimos un nuevo DataItem NumerosSerieCollection

Editamos su query y añadiremos un Filtro (Filter)

Aquí vemos el Where de Productos.ProductoId y el parámetro, éste parametro lo definiremos a continuación

Importantisimo este paso, en las propiedades del ModalWindowPicker (podría ser también un ComboBox) hay que cambiar el choices al nuevo query que hemos creado:

Ahora hay que relacionar el productoId del Query parameters con el Producto de VentaProperty

Ahora en las properties del productoId del Query Parameters establecer el parameters Value

Ahora aparece perfectamente la relación del filtro:

Cuando lo probamos, funciona perfectamente y podemos ver los números de serie asociados a cada producto.

Podemos almacenar las ventas pulsando el boton add en el grid editable

Bueno, con esto queda explicado cómo utilizar los filtros en LighSwitch, la explicación es escueta pero se apoya en bastantes imágenes que he ido guardando mientras lo realizaba.

Desde aquí se puede descargar la base de datos y el proyecto LS.
BBDD filtros lightswitch

PROYECTO filtros LS

Guia de Instalación:Cómo configurar un servidor para aloja una aplicación LightSwitch de 3 Capas

En este post Joan Miquel Fernandez explica los pre-requisitos que son necesarios para que un servidor limpio pueda alojar una aplicación LightSwitch de 3 capas.

Antes de empezar debes de leer esto: LighSwitch en este momento está en licencia Beta, sólo se puede alojar para testeo de su funcionamiento con IIS, no se puede utilizar en producción.

El primer paso y creo que es el más sencillo para empezar es mediante web platform buscar los prerequisitos que son necesarios para instalar en la máquina limpia LightSwitch.

Para este ejemplo parto deuna Maquina «Limpia» con windows 2008 server R2 (una VM de azure).

Al intentar instalar los pre-requisitos vemos que hay una incompatibilidad con el SqlServer 2008 R2 con tools, por lo que lo descargamos manualmente de la web: http://www.microsoft.com/downloads/es-es/details.aspx?displaylang=es&FamilyID=7522a683-4cb2-454e-b908-e805e9bd4e28

Seleccionamos la versión de 64 bits

Al instalar aparece este warning, podemos continuar…

Instalamos el motor y la el management studio


Creamos un inicio de sesión sql server y le damos permisos.

Ahora ya podemos instalar desde le webplatform, pero…

Yo al menos he tenido que cancelar la tarea, ya que una vez ha descargado todo me ha parecido que se colgaba, así que he decidio instalarlo manualmente.

Ahora simplemente he copiado el contenido del paquete de aplicación en el directorio asignado en el IIS,  modificar el web.config y voilà.

Campos calculados con LightSwitch

El uso de campos calculados con LightSwitch es muy sencillo, en el siguiente ejemplo doy por hecho que tenemos una aplicación LightSwitch que contiene una tabla de líneas de facturas en la que hay un campo calculado importe que será igual al campo cantidad de la línea multiplicado por  el precio unitario del servicio. Debe de haber una relación entre las tablas Servicios y FacturasDetalles.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.LightSwitch;
namespace Kuiper
{
 public partial class FacturasDetalles
 {
 partial void Importe_Compute(ref decimal result)
 {
 // Set result to the desired field value
 try
 {
 result = Cantidad*Servicios.PrecioUnitario;
 }
 catch
 {
 result = 0;
 }

 }
 }
}

Espero que os sea útil, si teneís dudas no dudeis en preguntar…

Ejemplo de EventAgregator en SilverLight 4 (I)

El uso de un EventAggregator es muy útil en el diseño de aplicaciones que tienen diversos objetos que producen eventos, esto lo podemos entender facilmente si pensamos en una aplicación en el que haya varios formularios o páginas que necesitan intercambiar información entre los eventos que se producen. En el ejemplo que voy a comentar me baso en una aplicación Silverlight 4 que tiene un MainPage.xaml y dos páginas: Page1.xaml y Page2.xaml, cada una de estas páginas tiene un boton que debe actualizar un label en la MainPage.xaml.

En esta primera parte realizaremos simplemente las interficies sin aplicar la lógica del EventAgreggator que la añadiremos más adelante.

  1. Creamos una aplicación SilverLight en Visual Studio
  2. Creamos los label tal y como están en la imágen y añadimos dos border que contendrán las páginas page1 y page2 que crearemos más adelante.
  3. Creamos la Page1.xaml
     

    Le añadimos un botón

  4. Creamos la Page2.xaml
    Le añadimos un botón
  5. Por último añadimos el siguiente código c#

public MainPage()
 {
InitializeComponent();

border1.Child = new Page1();
border2.Child = new Page2();

 }

Aquí tienes el link de ddscarga: EventAggregatorTest_PartI.rar

Login de inicio al comienzo de la aplicación en business application

Un pequeño cambio en la aplicación por defecto de bussiness application para que nos pida el login al iniciar la aplicación.

private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
LoginRegistrationWindow loginWindow = new LoginRegistrationWindow();
loginWindow.Show();
}

[/sourcecode] 

Aprende WebMatrix en 2 horas…

Si quieres aprender WebMatrix solo necesitarás un par de horas ya que desde Microsoft han creado una serie de tutoriales que te guían en el aprendizaje de la herramienta. En estos tutoriales creas una web desde cero, y construyes un CRUD de un fichero de películas, el tutorial acaba subiendo la aplicación a http://www.cytanium.com/ que aunque dicen que para las versiones beta es gratuita en este momento veo que cuesta 8$ al mes.

Aquí está el enlace del tutorial: http://www.microsoft.com/web/post/Web-Development-101-using-WebMatrix

Microsoft Design toolbox

Si eres un desarrollador y necesitas adquirir conocimientos sobre Microsoft Expression Blend y SilverLight, en .toolbox tienes una gran herramienta para aprender a diseñar, una verdadera escuela para aprender a utilizar las herramientas con eficacia, está dividido en diferentes escenarios en los que aprenderas como diseñar desde una calculadora en 3D hasta escenarios para aplicaciones de negocios, altamente recomendable, y en un futuro creo que escribiré en profundidad de este interesante recurso en la red.

Windows Live Mesh 2011

Lo que puedes hacer en Windows Live Mesh 2011

  • Mantener tus documentos, fotos y otros archivos actualizados en todos los equipos, ya sean PC o Mac.* Al sincronizar una carpeta, tendrás los archivos más recientes a tu alcance aunque trabajes sin conexión en ese momento. También puedes sincronizar carpetas en la ubicación de almacenamiento sincronizado de SkyDrive, de modo que podrás ir al sitio web de Windows Live Dispositivos para tener acceso a las mismas a través de Internet desde cualquier equipo. Para empezar, consulta ¿Cómo sincronizo una carpeta?
  • Conéctate a tus equipos de forma remota. Deja tu PC conectado y ejecutando los programas u obtén acceso a todos sus archivos desde otro equipo. Esto es útil en caso de «emergencias» si te hallas en el trabajo y necesitas un archivo que tienes almacenado en el equipo de casa. Para obtener más información sobre las conexiones remotas, consulta ¿Qué son las conexiones remotas?
  • Sincroniza la configuración de programas entre los equipos. Mantén actualizados tus favoritos de Internet Explorer y la configuración de Microsoft Office en todos tus equipos PC. Para obtener más información y una introducción, consulta ¿Cómo sincronizo la configuración de programas entre varios equipos?

Como podeis ver las capacidades de Mesh 2011 son impresionantes, dispones de 5Gb para sincronizar documentos, ahora editar el mismo documento de word en casa y en el trabajo es bien fácil.

Otra de las utilidades rápidas que he encontrado en sincronizar la copia de seguridad para tenerla en la nube por si mi equipo falla, evidentemente no es un sistema de copia profesional pero en algunas casos puede ser una solución.