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

End Sub
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: