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.

sábado 26 de diciembre de 2009

¡¡¡¡¡Feliz Navidad!!!!!!


¡Muchas gracias por tu visita!

De todo corazón te deseo unas felices fiestas y un fantástico año 2010.

domingo 13 de diciembre de 2009

Calendario Access - Flash - XML

En esencia lo que vas a encontrar en este ejemplo es:

Un calendario flash, en un formulario de Access, que escribe los datos en una tabla, que luego crea un archivo xml para que lo lea el archivo flash....un lío ¿no?.



Además como escribimos el archivo xml dinámicamente, también podemos subirlo a Internet de la misma forma y como el calendario base es en flash y lee de ese xml....¿Quiero decir que el calendario puede funcionar online?. Pues.....si, eso mismo.

También incluyo un control de las citas. Al abrir la aplicación, una macro lee la tabla de las citas y si hay alguna en la fecha actual o posterior abre un formulario para mostrarlas, en caso contrario abre directamente el calendario.

Un poquito más despacio...un esquema del ejemplo sería el siguiente:


En este caso he creado una cuenta en un servidor gratuito con la dirección http://www.calendario.net84.net, el ejemplo está configurado con los datos ftp de esa dirección, para trabajar actualizando los datos en el calendario online, basta con que pulses el botón configurar FTP y marcas la opción de trabajar online.

Si miras en Diciembre de 2009 verás una copia real de mis asuntos para ese mes...como verás vaya mesecito me espera...bufffff.

Seguro que con el ejemplo lo entiendes perfectamente.

El enlace al ejemplo aquí

jueves 3 de diciembre de 2009

Flash y Access en comunicación

En este ejemplo, utilizamos un menú basado en una película flash. Esto es principio es sencillo, marcamos la referencia a Shockwawe Flash, insertamos un control ActiveX de mismo nombre en nuestro formulario y le asignamos a su propiedad Movie la ruta donde tenemos guardada la película.
Pero...queremos que los botones del menú funcionen en VBA.

La primera parte se tiene que hacer en el archivo flash , vamos a utilizar la función fscommand(), tiene dos parámetros: comando y argumentos. Pero nosotros nos vamos a apañar con que nos envíe solamente el nombre, ya que si cada botón nos envía un comando, con un nombre distinto, nosotros desde VBA podemos diferenciarlos fácilmente con un simple Select Case. Por ejemplo, desde Flash, nos vamos a Acciones y en el evento al soltar del botón Empleados, ponemos:

on (release) {
fscommand("Empleados");
}

En VBA vamos a recibir ese comando que podemos interceptar con el evento FSCommand del Shockwawe Flash.
A cada botón le asignaremos un nombre de comando diferente que se corresponda con el título de su botón, para que nos sea más fácil de identificar y una vez se envíe, nosotros decidiremos, que acción vamos a realizar en VBA, dependiendo del nombre del comando.
Creo que en el código está clarísimo. Recuerda que para saltarte las restricciones de inicio puedes abrir el ejemplo con la tecla shift presionada.
Para hacerlo un poco más interesante voy a cargar los formularios a los que llamo desde los botones flash, en un mismo subformulario, cambiandole su propiedad SourceObject por código.
Incorporo también la posibilidad de ocultar la ventana de Access, pero usando transparencia, lo cual evita muchos de los problemas de la Api de Ocultar que obliga a los objetos a ser modales. (Sacado de un ejemplo de byronlcl en el foro de Access y VBA del Buho - Gracias por la magnífica aportación byronlcl)
Si eres un manitas en Flash, seguramente puedes hacer cosas chulísimas.
En el archivo rar que adjunto, incluyo la base de datos de ejemplo y el archivo swf con el menú, para que funcione, ambos archivos deben estar en la misma carpeta. Adjunto también el archivo fuente de flash, por si te apetece modificar el menú.

El enlace al ejemplo aquí

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í

viernes 23 de octubre de 2009

Controlando el Calendario Google desde Access

Muchos me preguntabaís si además de poder enviar eventos al calendario de Google que ya veíamos en un post anterior, también era posible eliminarlos.



Desde este ejemplo vamos a ver como se pueden efectivamente eliminar eventos desde Access, pero vamos a ir un poco más allá y vamos a ver también como recuperar eventos, todos, algunos, filtrado por un texto, entre fechas...
También vamos a ver como modificar un evento ya enviado.

Si alguno de vosotros habéis intentado sin éxito conseguir estos resultados o después de ver este ejemplo sigue sin quedaros claro, os diré que los únicos problemas con que me he encontrado son el tema de lectura/escritura que explico en el código del ejemplo y algunas diferencias en la forma de devolver los datos por parte de Google.

Este ejemplo no está excesivamente probado, por lo que si te encuentras con incovenientes me gustaría conocerlos.

Como otros de mis ejemplos utiliza el control msinet.ocx, si te ocasiona problemas, prueba a instalarlo desde aquí. Instala msinet.ocx

El enlace al ejemplo aquí

domingo 18 de octubre de 2009

Utilizar la API de Bing desde Access

La verdad es que con Bing estaba yo un poco despistado, José Bengoechea (no te pierdas su web) me puso sobre la pista de este tema (Gracias Chea).

Con la Api de Bing se puede acceder a varios servicios web de Microsoft. Puedes encontrar la información detallada en http://www.bing.com/developers .

Con este ejemplo vamos a intentar asignar a un control Picture normal y corriente, una imagen de Internet, con el valor añadido de seleccionar las imagenes obtenidas a partir de una palabra clave desde un formulario.

El efecto sería el mismo que si la seleccionaramos desde nuestro disco duro.

El enlace al ejemplo aquí