11/10/07

Formularios InfoPath con SharePoint (2 de 3)

Creación de un formulario con nuestro diseñador de InfoPath
En este capitulo vamos a crear un formulario con InfoPath. Para agilizar el curso y no tener que crear todos los controles lo que voy a hacer es coger una plantilla ya implementada de las que me proporciona la herramienta. Vosotros podeis crearos una o utilizar una ya hecha, conforme os venga mejor. La finalidad de este post es que veais un poco por encima el entorno de desarrollo.
Lo primero que nos aparece cuando arrancamos el InfoPath es el asistente que nos solicita si queremos crear un formulario nuevo o a partir de una plantilla.

Una vez seleccionada la plantilla nos sale algo así:

En la derecha de la pantalla vemos las diferentes secciones con las que podemos trabajar:

Layout:
nos permitirá definir la estructura de nuestro informe:

Controls:
Nos permitirá añadir controles a nuestro formulario. Como podreis apreciar no son controles extremadamente avanzados pero son suficientes para la implementación de estos formularios.

Data Source:
Nos permitirá configurarnos origenes de datos para cargar información en el formulario. Los veremos más adelante.
Las conexiones a origenes de datos que nos podremos crear son conexiones para RECIBIR datos o para ENVIAR datos (tambien conocidas estas ultimas como SUBMIT CONNECTIONS). Las conexiones para recibir datos nos van a permitir consultar un origen de datos, obtener la informacion que queramos, y cargar esos datos en un control, como podria ser un Combo. Podemos recibir informacion de un XML, de una lista de sharepoint, de un Web Service o de una base de datos SQL. Si la base de datos fuera Oracle deberiamos cargarnos nuestros datos a partir de un servicio web que accediera a la Base de Datos.

Views: Diferentes vistas para nuestro formulario

Design Checker:
Nos ayudará a validar si nuestro formulario será 100% compatible cuendo lo hayamos integrado en SharePoint.

Publish From Template:
Asistente de publicación. Será el ultimo paso una vez tengamos nuestro informe creado.

Como ejemplo de origenes de datos vamos a cargarnos los datos de una lista en un combo de nuestro formulario. Me he creado una lista donde tengo insertados diferentes años:
Lo que vamos a hacer es crearnos un combo en el formulario y añadirle estos años para que el usuario pueda seleccionarlos. Insertaremos el control en el formulario. Para ello nos vamos a la seccion "Controls" de InfoPath

hemos insertado el control y se llama 'fechas'. Ahora tenemos que crearnos el origen de datos. Pinchamos en la Seccion "Data sources" (Tools --> Data connections) y nos creamos una conexion nueva. La conexion que hay por defecto es la de submit para guardar el formulario y viene creada por defecto en la plantilla que estoy utilizando. Si el formulario se empieza desde cero esta conexion tendremos que crearnosla.

Pulsamos en "Añadir". Le indicaremos que queremos una conexion para recibir datos, ya que queremos cargar informacion en nuestro combo:

Le indicamos cual va a ser nuestro origen de datos. En este caso será una lista de Sharepoint:

Ahora tenemos que localizar nuestra lista. Para ello le indicamos en qué Site se encuentra. Le pongo la URL de mi Site:


Si la ruta es correcta me mostrará un listado con todas las listas, librerias, etc, que posee mi site y que pueden servirme de origen de datos. Como podreis apreciar sale mi lista de fechas pero tambien mi libreria de formularios:



Seleccionamos la lista de fechas y automaticamente me pide que le indique que columna/s van a ser mi origen de datos. Para este ejemplo los años los tenia en la columna 'Title' y como a priori no voy a necesitar mas columnas seleccionaré solo esa:




En esta ultima sección nos aparece un Checkbox crucial. Se trata de una opción con la que determinaré si los datos los voy a coger del origen de datos cada vez que cargue el formulario o por el contrario los voy a cargar la primera vez y luegolos almacenaré en mi plantilla. Es fundamental saber qué tipo de datos vamos a almacenar porque si estos datos no vana variar en el tiempo conviene guardarlos en la plantilla ya que nuestro formulario se nos cargará más rápido. Si los cambios tienden a variar en el tiempo lo que debemos hacer es no marcar esta opción, de esta forma, cada vez que el formulario se cargue cogerá los datos del origen correspondiente, con lo que siempre estarán actualizados. Para este ejemplo, por ser años y saber que no vana a cambiar lo que haré será guardarlos en la plantilla. Dejaré marcada la opción:


Pulsamos siguiente y ya tenemos nuestro origen de datos creado:


Ahora solo tenemos que asociarselo a nuestro combo. Seleccionamos el combo, boton derecho --> Propiedades del combo. En las propiedades nos saldrá una pantalla como esta:


En la seccion de "List box entries" podemos insertar los valores del combo manualmente, coger datos de otros controles de nuestro formulario o indicarle qué origen de datos queremos. Para el ejemplo seleccionaremos la tercera opción:

Como origen de datos nos marcará nuestro origen recien creado, ya que es el unico que tenemos. Lo marcamos y ahora tenemos que decir cual de los campos que contiene ese origen de datos que el que nos interesa:

Una vez seleccionado aplicamos los cambios y previsualizamos nuestro formulario. Podremos ver que él combo carga los datos correctamente:


Una vez creado el formulario (habrá una sección específica de como utilizar los diferentes controles) y teniendo ya creada nuestra libreria de formularios unicamente nos flatará publicar. (ver capitulo 3)

7 comentarios:

carlos dijo...

hola
oye ya he intentado crear la conecxion y al parecer m sale todo bien pero el problema que tengo es cuando ejecuto la vista preliminar me dice "No se puede conectar al origen de datos. Acceso Denegado" quisiera saber como se puede solucionar este problema.

de ante mano gracias esta muy bien explicado como hecer la conecxion pero ese es el unico detalle que tengo.

Juan Alcalá dijo...

Comprueba los permisos en la lista de la que quieres obtener los datos. A veces la lista está con restricciones para los usuarios.
Debería funcionar a la primera. PAra asegurarte de que el fallo no está en la lista puedes modificarte la cadena de conexión para intentar obtener los datos de otra lista, para ver si te funciona.

saludos,
Juan Alcalá

Rober dijo...

Hola Juan, primeramente decir que soy principiante de sharepoint y que este blog me esta ayudando a dar mis primeros pasos para conocer un poco este sistema, he seguido los paso y al final he insertado en formulario de infopath en sharepoint, lo unico que me he saltado el paso 2 casi al completo ya que en conexiones de datos de infopath cuando le doy a agregar simplemente es como si no hiciese nada tanto si le doy a agregar como a modificar, tal vez me pudieras decir cual pueda ser mi fallo para asi al final recoger los datos de la lista.

Un saludo,

Roberto

Juan Alcalá dijo...

Hola Rober:

me alegro de que el blog sirva porque la verdad es que cuesta bastante ir manteniendolo (aunque me gustaria mantenerlo más y mejor pero ultimamente no dispongo de mucho tiempo).

Bueno, a lo que ibamos. Para coger datos de una lista debes tenerlo inicialmente en una lista de SharePoint. Imagino que eso ya lo tendrás. Una vez que tienes la lista tienes que irte al Infopath, y en el asistente pinchar en la sección de conexiones. En esta sección te saldrá un asistente en el que tendrás que indicarle donde está la lista (http://nombre_servidor:puerto/xxx/[nombre de la lista]). Cuando encuentre la lista el te preguntará de qué columna quieres que se carguen los datos. El asistente es muy sencillo y no necesitas publicar el formulario para probar que la conexion funciona. Con la vista previa puede funcionar.

Espero que te ayude.
Si necesitas algo más no dudes en escribir.

Rober dijo...

Muchas gracias por tu respuesta tan rapida, lo cierto es que desde la conexion de datos no me abre la ventana del asistente y lo peor es que tampoco me da ningun error.

Saludos

Juan Alcalá dijo...

Uff, pues ahí si que me pillas. Debería salirte el asistente de conexión a Listas, XML, SQL Server, etc. Tienes dos formas de llegar a ese asistente, bien desde el menu contextual de la derecha, bien desde la barra de herramientas. Prueba ambas para ver si funciona.

Marco Lucero dijo...

Para solucionar el problema que plantea Carlos, de "Acceso Denegado" hay que ir a:
Opciones de Internet >
Seguridad >
Personalizar>
Misceláneas>
y Habilitar la opción "Tener acceso a origen de datos entre dominios"

Fuente: http://casosresueltos.blogspot.com/2008/11/guardar-registros-en-access-desde.html, en los comentarios