Agradezco tus comentarios

Me encantaría conocer tus impresiones acerca de los distintos ejemplos o artículos de este blog, si te es posible deja un comentario en mi libro de visitas. En cambio para preguntas o problemas con alguno de los ejemplos, te ruego me las formules en el foro de Access en grupos Emagister o en en el foro de Access y VBA.

miércoles, 11 de noviembre de 2009

Los contactos de Google desde Access

Hoy 15 de Noviembre de 2009 actualizo este ejemplo, dado que el original presentaba diversos problemas, si ya te lo habías bajado, para compensarte en este incluyo una gestión total de contactos. Obtener todos los contactos de Google, obtenerlos de Outlook, pasarlos de un gestor al otro, copiar, eliminar, crear...etc



En este caso para que puedas probarlo rápidamente he creado una cuenta GMail llamada probandocontactos@gmail.com, para trabajar con tus propios contactos, lo único que debes hacer es cambiar en la tabla Cuentas, este correo y su contraseña por las tuyas.

Si ya conoces alguno de los ejemplos de este blog que utilizan los servicios web de Google, habrás comprobado que para ello utilizo el control msinet.ocx para poder interactuar con el servidor, pero da algunos problemas de registro en ocasiones, por tanto he decidido no utilizarlo más.

En este ejemplo utilizaremos el objeto MSXML2.XMLHTTP, no lo había hecho antes porque no lo conocía, he aprovechado este ejemplo para comprender un poco este objeto y lo cierto es que me ha sorprendido muy gratamente por su relativa sencillez de uso.

Empezamos por declararlo, si activamos la referencia a Microsoft XML, vX, podemos declararlo como objeto MSXML2, en caso contrario podemos hacerlo como Object, pongámonos en este caso, le voy a llamar objHttp por tanto lo declaramos así.
Dim objHttp As Object
Necesitamos crear el objeto, para ello utilizamos:
Set objHttp = CreateObject("MSXML2.XMLHTTP")

Ya podemos acceder a sus métodos y propiedades,podemos utilizar "GET", "POST", "PUT", "DELETE" para enviar nuestras instrucciones al servidor de Google.

Podemos utilizar setRequestHeader para enviar las cabeceras, responsetext, responsebody, responsestream, responsexml para obtener la respuesta del servidor, también podemos utilizar status y statustext para saber si la respuesta es correcta o no.

De una forma básica para obtener la autorización a utilizar los servicios de Google lo haríamos de esta forma:

A la variable de texto strformdata le asignamos, nuestro EMail, nuestro Password, el origen, que puede ser cualquier nombre que deseemos y el servicio al que queremos acceder, en el caso de los contactos "cp".

strformdata = "Email=" & myEmail & "&Passwd=" & myPassword & "&source=" & mySource & "&service=cp"

Establecemos en la variable strUrl la dirección a la que tenemos que conectar para la autentificación.

strURL = "https://www.google.com/accounts/ClientLogin"

Establecemos el método, en este caso "POST" y abrimos el objeto con la url deseada, el parámetro True o False determina si la conexión va ser asíncrona o no.
objHttp.Open "POST", strURL, False

Establecemos las cabeceras que vamos a enviar (este tema viene bien explicado en la API)

objHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objHttp.setRequestHeader "GData-Version", "3.0"

Y por fin enviamos con el contenido de nuestra solicitud de conexión

objHttp.Send (strformdata)

Si en responsetext encontramos BadAuthentication es que la contraseña no vale, en caso contrario podríamos continuar enviando peticiones.

If InStr(objHttp.responsetext, "BadAuthentication") Then
MsgBox "Google ha rechazado la contraseña. Confirma el e-mail y el password y prueba otra vez.", vbCritical, "Error"
Exit Sub
End If

Con pequeñas variaciones este es el método que utiliza el ejemplo que adjunto para crear, modificar o eliminar contactos de Google.

El enlace al ejemplo aquí

domingo, 1 de noviembre de 2009

Buscar en el grupo de Microsoft Access de Google

De un tiempo a esta parte, al buscar en el grupo de Microsoft Access de Google vemos que no nos encuentra practicamente nada.


Posiblemente ha cambiado su política en materia de búsquedas en los grupos y ahora solo devuelve datos recientes, no obstante, por fortuna, los datos siguen existiendo, pero para ello la búsqueda hay que hacerla desde la página principal de Grupos e indicando en la cadena de búsqueda el grupo para el que queremos obtener resultados.

Un poco complicado, cuando además casi siempre necesitamos hacer variaciones de la cadena de búsqueda para poder encontrar los datos deseados.

La idea de este ejemplo es hacernos nuestro propio formulario de búsqueda de tal forma que escribiendo solo lo que deseamos buscar, la aplicación se encarge de componer la cadena de forma adecuada.

Pero claro, tener que buscar el archivo Access que tenemos para buscar en Google, abrirlo...etc...es casi tan laborioso como lo anterior.

Lo ideal por tanto sería tener este formulario como complemento de Access, de tal forma que lo tengamos disponible desde cualquier base de datos en la que estemos trabajando, pues casi siempre es en ese momento cuando necesitamos buscar algo en el grupo de noticias.

En el ejemplo que adjunto, incluyo dos mdb, una con el archivo que he estado comentando en formato mdb, para ver como está construido. La segunda es un magnífico ejemplo de Paco García Aguado (el Buho) que posibilita instalar fácilmente como complemento una versión de dicho archivo en formato MDE (que ya está incorporado en una tabla como campo OLE). Lo único que he tocado de la aplicación de Paco ha sido adaptarlo para que funcione también para Access 2007 (Paco lo tenía de la versión 2000 a la 2003).

Después de instalarlo lo tendremos disponible desde cualquier base de datos con la que estemos trabajando con solo acudir al Administrador de Complementos.

Espero que te guste este ejemplo.

El enlace al ejemplo aquí