Trucos‎ > ‎

Access y Sharepoint 2007

Un patán en Sharepoint

Sharepoint me interesa como usuario de Access 2007 por las posibilidades que tienen ambos de interactuar. Lo acabo de descubrir con esta versión de Access, así que no esperes de mí más que de cualquier novato: estoy aprendiendo y lo que haré en esta página es ir anotando mis tribulaciones y mis descubrimientos. En realidad, hablaré poco de Sharepoint y trataré de hablar más de cómo conectar éste como Back End de Access.

 Enlaces interesantes sobre Access y Sharepoint 2007
 
 
 
URL Notas
DoCmd.TransferSharePointList Method Usando el método TransferSharePointList podemos vincular no sólo listas, como ocurre con desde el menú, sino también Vistas, es decir, consultas sobre esas listas guardadas en Sharepoint.
Integración de bases de datos de Access con SharePoint Interesante artículo de Peter Serzo en Technet traducido al español.
Integrating Access Databases with SharePoint Artículo en TecNet sobre la integración de Access con Sharepoint.
Integrating Workflows into Access 2007 Applications
Introducción para desarrolladores a los flujos de trabajo para Windows SharePoint Services 3.0 y SharePoint Server 2007 Mamotreto en español. Entre otras cosas, compare Sharepoint designer y Visual Studio para crear flujos de trabajo.
Microsoft Office Live Small Business Developer Guide Artículos de MSDN dedicados expresamente a Office Live Small Business.
SharePoint y Microsoft Office Access 2007 (I)! Primero de una serie de artículos de Juan Carlos Gonzalez Martín sobre Access y Sharepoint.
The data of the primary key column is not in the Data View of a list in Windows SharePoint Services 3.0 when you export a table in Access 2007 Describe cómo al exportar a Sharepoint una tabla, se crea un nuevo ID y los datos de la anterior clave primaria se copian a un campo oculto (que podemos añadir a la vista) llamado _ID.
Workflows Roadmap

Página de Microsoft con muchos enlaces acerca de los Workflow de Sharepoint. Nos interesa especialmente el apartado: "Design custom workflows in Office SharePoint Designer 2007".

Materiales seminario Santander 22/01/09

publicado a la‎(s)‎ 12 feb. 2012 11:40 por José Bengoechea Ibaceta   [ actualizado el 11 mar. 2012 14:28 ]

Materiales seminario Santander 22/01/09

27/01/2009


Como muchos sabéis, el 22 de enero celebramos en Santander un seminario sobre "Mejora de aplicacíones Access usando SQL Server y Sharepoint".

Los materiales de las presentaciones ya se pueden descargar desde la página de SUGES: http://www.suges.es

Por otro lado, ya están disponibles las grabaciones del evento que se hicieron con Live Meeting, tanto para verlas online como para descarga:

Parte I: http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032402125&Culture=es-ES

Parte II: http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032402128&Culture=es-ES

La parte II es la que trata específicamente sobre Access y Sharepoint.

Debéis ser indulgentes con mi intervención: las cosas se me torcieron provocando un retraso de media hora, de manera que cuando empecé estaba tan agobiado que no daba pie con bola.

Vincular Vistas de Sharepoint desde Access 2007

publicado a la‎(s)‎ 12 feb. 2012 11:39 por José Bengoechea Ibaceta   [ actualizado el 12 feb. 2012 11:39 ]

Vincular Vistas de Sharepoint desde Access 2007

Si desde Access 2007, en vez de vincular una Lista de Sharepoint, vinculamos una Vista de ésta, obenemos claras ventajas, la más evidente limitar el tráfico de datos por la red a los que realmente queremos, pero también otras bastante interesantes, como restringir los datos a los del usuario registrado en el sitio Sharepoint. Sin embargo, los asistente de Access sólo facilitan vincular Listas, debiendo recurrir al método TransferSharePointList para poder conseguirlo.

La misma ayuda de Access sobre TransferSharePointList nos informa de cómo obtener algunos de los paramátros necesarios:

Para obtener el identificador GUID de una lista o una vista del sitio de SharePoint puede utilizar el procedimiento siguiente:

  1. Abra la lista de Windows SharePoint Services.
  2. Si no se muestra la vista que desea, haga clic en la flecha desplegable Ver y, a continuación, seleccione la vista deseada.
  3. Haga clic en la flecha desplegable Ver y, a continuación, seleccione Modificar esta vista.

    La dirección de la barra de dirección del explorador contiene los identificadores tanto de la lista como de la vista. El identificador GUID de la lista sigue a List=, y el de la vista sigue a View=. Sin embargo, en la dirección, cada carácter { (abrir llave) se representa mediante la cadena %7B, cada carácter - (guión) mediante la cadena %2D, y cada carácter } (cerrar llave) mediante la cadena %7D. Por ejemplo:

    http://MySite12/_layouts/ViewEdit.aspx?List=%7B2A . . . 7D&View=%7B357B4FE6 . . . 1579B%7D

    Para poder utilizar los identificadores GUID de la dirección como argumentos de esta acción de macro, primero debe reemplazar cada cadena %7B por el carácter {, cada cadena %2D por el carácter - y cada cadena %7D por el carácter }. No incluya el carácter & (y comercial) que sigue a la cadena %7D en el identificador GUID de la lista.

(Me he permitido recortar la URL que la ayuda usa de ejemplo para que me quepa mejor y porque, en el mismo ejemplo de la ayuda, ya la URL está truncada al final)

Le faltan unas imágenes que ayuden un poco ¿no? Pues se las ponemos:

Seguir las instrucciones “a mano alzada”, cortando y pegando con el ratón y editando una cadena tan larga, se hace aguantando la respiración y, al final, casi seguro que sale mal (a mí nunca me ha salido bien). Pero para seguir instrucciones al pie de la letra está la programación y en Access contamos con VBA, así que me he hecho el siguiente procedimiento que sólo necesita que copiemos la URL y se la pasemos como cadena de texto:

'---------------------------------------------------------------------------------------
' Procedure : VincularVistaWSS
' DateTime  : 30/12/08 20:36
' Author    : Chea
' Purpose   : Vincula una Vista de Sharepoint a partir de una URL
'             Para vincular una Vista de Sharepoint, debemos, en primer lugar, ir al
'             sitio de Sharepoint, a la página de configuración de dicha vista y copiar
'             la URL completa: Esa URL, delimitada por comillas, es el argumento que
'             debemos pasar a esta función en el parámetro CadenaURL
'---------------------------------------------------------------------------------------
'
Public Sub VincularVistaWSS(CadenaURL As String, Optional NombreTabla)

Dim GUIDList As String
Dim GUIDView As String
Dim strSite As String
Dim v As Variant, V2 As Variant, V3 As Variant, i As Integer
Dim stTmp As String

' "Traducimos" caracteres de la cadena URL
CadenaURL = Replace(CadenaURL, "%7b", "{")
CadenaURL = Replace(CadenaURL, "%7d", "}")
CadenaURL = Replace(CadenaURL, "%252E", ".")
CadenaURL = Replace(CadenaURL, "%252F", "/")
CadenaURL = Replace(CadenaURL, "%253A", ":")
CadenaURL = Replace(CadenaURL, "%2D", "-")

' Obtenemos la segund parte de la URL, desde el aspx?
v = Split(CadenaURL, "aspx?")
stTmp = v(1)

'Obtenemos las distintas secciones, que van separadas por "&"
v = Split(stTmp, "&")
For i = 0 To UBound(v)
    V2 = Split(v(i), "=")
    If Trim(V2(0)) = "List" Then
        GUIDList = V2(1)
    End If
    If Trim(V2(0)) = "View" Then
        GUIDView = V2(1)
    End If
    If Trim(V2(0)) = "Source" Then
        strSite = V2(1)
        V3 = Split(strSite, "/Lists/")
        strSite = V3(0)
    End If
Next i

' Vinculamos la vista
DoCmd.TransferSharePointList acLinkSharePointList, strSite, GUIDList, GUIDView, NombreTabla

Donde dije digo...

publicado a la‎(s)‎ 12 feb. 2012 11:38 por José Bengoechea Ibaceta   [ actualizado el 12 feb. 2012 11:38 ]

Donde dije digo..

Sí. Sí hay que usar relaciones entre tablas antes de moverlas a Sharepoint

Javi Terán, a base de buenas prácticas, demuestra cómo se debe hacer la exportación a Sharepoint: http://javiteran.web.officelive.com/default.aspx

Después de un sabroso hilo en las news de Access, llega a la conclusión de que estableciendo todas las relaciones y con la pesataña de búsqueda completada, al mover toda la base de datos a la vez, se renumeran los índices pero también se actualizan en cascada las claves externas vinculadas.

Seguro que Javi pondrá un detallado artículo en su blog y fácil que yo haga algo más detallado en este mismo, pero ahora urgía poner esta nota para corregir mi anterior apunte en el que decía que había que borrar las relaciones.

Problemas al mover la aplicación a Sharepoint

Antes, yo tenía el problema de que no conseguía mover la base de datos entera y lo apañaba intentando hacerlo por partes, con la cantidad de problemas que eso me suponía. Precisamente para conseguir un escenario similar al de Javi, a base de intentos lo conseguí y tomé algunas notas:

- Si hay alguna tabla vinculada, parece que no se puede subir la aplicación

- Una tabla que se resistía a copiarse (y bloqueaba toda la subida) dejó de hacerlo cuando suprimí un campo de datos adjuntos. Sin embargo, después otras con datos adjuntos que contenían datos, subieron sin problema. La diferencia es que en la primera conteían música (varios megas cada adjunto) y en la segunda, la que subía sin problemas, sólo había unas pocas imágenes con poco peso.

- Una tabla que también se resistía no tenía datos adjuntos, ni nada raro en su estructura, pero eran unos 14.000 registros.

Parece que el peso de las tablas es un obstáculo importante a la hora de mover la aplicación de una vez a Office Live Small Business.

Primeros ensayos

publicado a la‎(s)‎ 12 feb. 2012 11:37 por José Bengoechea Ibaceta   [ actualizado el 12 feb. 2012 11:37 ]

Primeros ensayos


Ya estoy listo para intentarlo con un aplicación real, pero antes contaré un poco de cómo me han ido mis ensayos para utilizar Office Live Small Business como Back End de una aplicación desarrollada en Access 2007.

Elegir la aplicación

El primer ensayo fue del todo frustrante. Probé con una aplicación compleja, con datos no excesivos pero bastantantes, abundantes tablas, con uso profuso de subformularios, cuadros combinados, etc. y la subí de un tirón. Aquello no había manera de moverlo y, encima, los datos eran incoherentes. Estaba claro que se habían cambiado todos los campos clave, que faltaban índices y que había que replantear la aplicación buscando estrategias para disminuir el tráfico de red.

Los últimos ensayos los he realizado con una aplicación pequeñita, sencilla y con pocos registros y me ha ido mucho mejor. Suena a trampa usar una aplicación así, pero ese tipo de aplicación existe y es frecuente en Access, de hecho, la aplicación está en uso. Además, si queremos iniciarnos en albañilería de software, debemos empezar por reformar la cocina, no por el Escorial, ya tendremos tiempo, con un poco de experiencia, de ver el alcance de nuestras posibilidades.

Elimina las relaciones antes de subir las tablas

Algo que vas a perder definitivamente con Sharepoint son la integridad referencial y la eliminación en cascada, entonces ¿para qué queremos las relaciones? Sharepoint es "tan listo" que cuando ve una relación es capaz de crear un campo de búsqueda en la tabla que subimos, pero es "tan tonto" que sube una copia de la tabla de búsqueda por cada una de las tablas que tengan una relación a ella como clave externa. Cierto que cuando he comprobado este fallo ha sido subiendo las tablas una a una, porque me fallaba la opción de subirlas todas a la vez, pero con una vez que pase ya es suficiente para librarnos de las relaciones.

No es necesario subir todas las tablas

¿Qué pinta la tabla SwitchBoardItems en el servidor de Sharepoint? Lo mismo pasa con las provincias, meses… Otros datos, como los países, tipos de iva, etc. cambian de tarde en tarde, pero para eso podríamos tener un sistema de doble copia, en el servidor y en local ,y mantener una tabla de versiones que se comprobaría al iniciar la aplicación y copiaría a local los datos del servidor en caso de ser una versión distinta. De momento, como estamos en pruebas, dejemos esas tablas en local y ya encontraremos una solución más andelante, antes de que el mapamundi cambie de nuevo.

Tranquilo, no se pierden los valores de los campos clave

¡Aaarrrg! Has subido y vinculado tu tabla y compruebas con horror que tu campo IDMitabla ha sido sustituido por un simple ID renumerado desde cero, de manera que ya no coincide con tu numeración, que tenía sus huecos. Tus valores no aparecen por ningún lado ¿Cómo vas a poder relacionar así? No hagas como hice yo, que el teclado no tiene la culpa para tratarlo así. ´

Abre la tabla vinculada, sitúate sobre la fila de nombres de campos y, con el botón derecho del ratón, selecciona "Mostrar columnas…" y elige el campo _ID, con guión bajo delante. Ahí están los datos originales. Sin indexar, pero ahí están.

Ahora toca la parte pesada: ir tabla por tabla, buscando qué claves externas hacen referencia a esa y cambiarle los datos. Podemos usar una serie de consultas de este tipo:

UPDATE LaOtraTabla LEFT JOIN Mitabla ON laOtraTabla.id_Mitabla = Mitabla.[_ID] SET LaOtraTabla.id_Mitabla = [Mitabla].[ID];

Seguramente, podremos hacernos unos procedimientos para evitar tener que ir diseñando la consulta tabla por tabla y clave externa por clave externa, pero, como se supone que estamos probando con una aplicación sencillita, de momento, no nos vamos a entretener en ello.

Añade índices a las listas

En Sharepoint no se va a notar mucho, pues vemos las listas planas, pero en Access vamos a relacionar unas tablas con otras y que los campos claves estén indizados se va a notar mucho en velocidad.

Los índices deben añadirse en el sitio Sharepoint, pero podemos ir al formulario de modificación directamente desde Access. Pinchando con el botón derecho del ratón sobre la tabla vinculada, podemos elegir "Opcione de Lista de Sharepoint" y ahí "Modificar columnas y configuración"

Empieza a probar y no desesperes

Si todo parece salir bien a la primera, seguro que estás equivodo

Ya nos iremos contando nuestras tribulaciones.

1-4 of 4

Comments