viernes, 24 de junio de 2011

Vincular una lista de SharePoint con una tabla de SQL

Vincular una lista de SharePoint con una tabla de SQL fué un reto la primera vez que me lo sugieron. Normalmente no me gusta mezclar las cosas, sí las tablas estan en SQL pues que se queden todas ahi y las sacamos a través de reportes, sí son listas de SharePoint entonces que se queden ahi y las sacamos con vistas o exportamos a Excel.

Antes de comenzar tengo que aclarar que en este post no estoy poniendo instrucciones paso a paso para que hagas este ejercicio, estoy simplemente resumiendo el trabajo que hice. Si en tu caso te urge mas info y quieres ponerte en contacto conmigo mandame correo-e a fabian.munozag@gmail.com

El caso fúe el siguiente: Tengo una base de datos en SQL Server 2005, quiero relacionar un registro de una de esas tablas a un registro en una lista de SharePoint.

Porque asi?, porque nuestros usuarios les gustan los formularios de SharePoint además de que es muy comodo crear tus tipos de contenido, ponerlos en una lista y de ahi crear tus registros.

Estos son los pasos que segui:

1.- Crear el tipo de contenido: crear tipos de contenido es muy util porque lo puedes reutilizar, además es heredable a sub-sitios, sí haces cambios o actualizaciones todas las listas que lo usen serán actualizadas, es una forma efectiva de hacer el trabajo de administración de registros. Cuando hagas esto asegurate de que en tu tipo de contenido hayas incluido el campo de ID que va a guardar el ID del registro en tu tabla de SQL.






2.- Agrega tu tipo de contenido a tu lista. Otra de las ventajas de trabajar con tipos de contenido es que puedes vincular varios y de diferentes tipos a tu lista ;-) Mira la imagen abajo y veras que hay el tipo de contenido Hardware y el tipo PC Checklist Base.





3.- Abre su SharePoint Designer y conectate al sitio en cuestión.
4.- Crear una biblioteca para guardar Web Part Pages, esto es importante porque este tipo de contendio son paginas .ASPX ya con las zonas para meter Web Parts. Las vistas de datos que vas a agregar son Web Parts.
5.- Crea una conexión a tu tabla en SQL Server desde SharePoint Designer. En mi post anterior comente como hacer una y las cosas que tienes que cuidar sí no te quieres enfrascar en horas de tedio buscando porque no funciona, aqui esta la liga Crear conexión a SQL desde SPD

6.- Bien aqui llega la parte que mas me gusta. En la paginas, pones a la izquierda el Data View con el detalle de tu registro de la tabla en SQL y a la derecha el detalle de los registros relacionados que estan en la lista de SharePoint. Aqui va la imagen y abajo la explicación.

En el data view que ves a la derecha estoy mostrando unicamente un solo registro, esto con la idea de que los usuarios vean el registro xxxxxx y a su derecha los elementos relacionados. Para que se vea asi, tienes que configurar el data view y cambiar su layout a Repeating form with border, si no me equioco es el cuarto de arriba hacia abajo en la pestaña Layout del cuadro de dialogo Data View Properties. Luego te vas a la pestaña Paging y en Display items in sets of this size: y pones un 1. Ojo hay que configurar las opciones de filtrado para muestre el registro que el usuario seleccionó desde la lista donde aparecen todos los regirstros de la tabla de SQL, el ID de ese registro va a venir en el QueryString ya que ahi lo configuré.

Talvez ya para este punto te tengo todo confindido(a), por favor sigueme leyendo y mas adelante te ire aclarando el punto ;-)

Lo que sigue es crear el otro Data View, solo que este va a conectado a tu lista de registros en SharePoint, el procedimiento es casi igual solo que mucho mas sencillo porque solo tienes que arrastrar la lista de hacia el Web Part Zone y SharePoint Designer hace el resto:



Por ultimo hay que configurar el filtro de este Data View, la idea es que muestre solo aquellos registros relacionados con el Data View de la izquierda (aquel que trae el registro de tu tabla en SQL). Primero selecciona el Data View de tu lista de SharePoint (el que acabas de insertar), luego abre el menu contextual de Common Data View Tasks y da clic en la primera opción: Filters, esto abre otro cuadro de dialogo con las opciones para que configures tu filtro. Te muesto la imagen para que lo veas mas claramente:



En la imagen puedes ver que estoy seleccionando el campo (Field Name) Workstation ID, ese viene del tipo de contenido que creaste en los primeros pasos y por eso es tan importante. Cabe mencionar que ya que el ID en mi tabla de SQL es un campo numerico el tipo de dato de mi campo en la lista de SharePoint también es numerico y con cero decimales, eso es importante.

Regresando al tema del filtro, esta pagina que estamos creando la mando llamdar desde otra pagina. Asi es, perdona si te lo estoy haciedo mas confuso pero la razón es esta. Cuando mis usuarios entran a SharePoint, quieren ver primero que nada una lista con los registros de la tabla de SQL y luego si quieren ver el detalle de un registro cualquiera dan clic y los mando a esta pagina. Cuando los mando a esta página, envio en la URL o QueryString el ID del registro y esto me sirve para filtrar los webparts. El post de donde saque la idea y que viene muy bien redactado esta aqui

Aqui la imagen de los filtros en mis web parts:


Esta imagen muestra el filtro configurado en el Data View de la izquierda, el que muestra un solo registro de la tabla de SQL.


 Este otro es la configuración del parametro que servirá para filtrar el del web part de la derecha, que tiene los registros de la lista de SharePoint.

Basicamente estos son los pasos, nuevamente me disculpo por lo posiblemente confuso de mi explicación, mandame correo electronico y con gusto te ayudo.

1 comentario:

  1. Hola Guti Aste.

    Respecto a si la lista de SharePoint esta realmente ligada a la base de datos, en estricto sentido podría decir que no.

    Sin embargo a través de los filtros de los Data Views puedes mostrar los registros que tienen relación.

    Lo que intento describir aqui es el como traer y mostrar registros de una base de datos fuera de la de SharePoint y luego mostrar aquellos registros de una lista de SharePoint que estan relacionados con los de la BD de SQL.

    En el paso 6, lo que debes hacer:
    a) Tener dos data view webpart, uno para mostrar el registro que viene de la BD de SQL y el otro para mostrar los registros relacionados de la lista de SharePoint.
    b) Vincular los registros a través de un atributo identificador. En el ejemplo el Id viene desde el Query String el cual uso para filtrar ambos webparts.

    Espero poder haberte ayudado.

    ResponderEliminar