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.

viernes, 22 de enero de 2010

Entrevistas y Artículos sobre Access

Aprovechando el nuevo año, inauguro un nuevo espacio, dedicado a Entrevistas y artículos sobre Access en nuestra lengua.

Los grandes opinan sobre este programa. Entrevista al Buho, a Chea, Emilio, Ju@nk, Javier.Mil, Julián-vlc-sp, Taribo, Abraham Valencia y Xavi. ¿cuales son los límites de Access?. ¿Y sus virtudes y defectos?. ¿Ellos utilizan Dao o Ado?. Aprovecha para conocer un poco mejor a las estrellas de los principales foros, si te interesa Access, esto es imprescindible.
Muchas gracias a todos ellos por colaborar en este espacio.
El enlace aquí

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í

domingo, 11 de octubre de 2009

Un traductor en Access

Nota importante: Hoy 23 de Noviembre de 2009 actualizo este ejemplo dado que Google ha cambiado su web de traducción, y posiblemente si te descargarte el ejemplo anteriormente no te funcione.


Aprovechando el motor de traducción de Google, podemos conseguir dotar a nuestras aplicaciones de un potente traductor.

El procedimiento básicamente consiste en descargar en disco una web, a la que previamente le hemos manipulado la cadena de llamada, para obtener de la misma la traducción del texto deseado.
Una vez lo tenemos en disco, buscamos dentro del archivo, el texto ya traducido y lo mostramos en el cuadro de destino.
El resultado es rapidísmo y espectacular
Me he encontrado con algunas dificultades con la codificación utf-8, y aunque supongo que habrá soluciones más completas, lo he arreglado para la mayoría de las traducciones usando Replace para sustituir los caracteres extraños.
Por el momento he incluido traducciones en ambas direcciones al Inglés, Francés, Portugués, Alemán y Holandés. Se pueden añadir más idiomas.

El enlace al ejemplo aquí

domingo, 13 de septiembre de 2009

Un lector de noticias rss en Access

¿Es posible realizar un lector de noticias online en Access?
Yo creo que sí.


Voy a utilizar al periódico El País como fuente. Además vamos a ir un poco más allá y vamos a eliminar la publicidad y todo lo superfluo para poder leer las noticias lo más rápidamente posible. Espero que al País no le importe. ;)
Vamos a utilizar importación xml, escribir y leer de ficheros en disco, el evento timer para actualizar las noticias....
Seguro que encuentras interesante este ejemplo
El enlace al ejemplo aquí

viernes, 11 de septiembre de 2009

Vincular remotamente por VPN con GBridge

Aunque hay muchas herramientas similares para alcanzar el propósito de este artículo, a mi me ha sorprendido la sencillez y versatilidad de GBridge, además de ser una aplicación freeware.
No voy a entrar aquí a explicar todas las posibilidades de este programa...compartir archivos, escritorio remoto, sincronización de carpetas, copia de seguridad...etc, me voy a centrar en como vincular las tablas de un ordenador remoto a nuestro ordenador local para poder trabajar online con nuestra aplicación access favorita.
GBridge utiliza los servidores GTalk de Google por ello para utilizarlo lo único que vamos a necesitar es disponer de una cuenta de Google.
Si ya la tenemos descargamos e instalamos GBridge desde aquí

Vamos a comenzar por instalarlo en el ordenador que va a hacer las funciones de servidor de nuestra aplicación. la instalación es muy sencilla ya que no requiere de nuestra participación.
Al abrir por primera vez nos mostrará esta pantalla 
Lo único que tenemos que hacer es poner el nombre de usuario y password de nuestra cuenta Google, nos apuntamos el nombre de Hostname porque luego lo usaremos desde el cliente.


 


 


 



Hacemos click en Log On y ya estamos dentro.
Vamos a preparar el programa para que acepte llamadas por la VPN desde nuestro ordenador. Solo tenemos que hacer 3 cosas.
1.-Desde la opción SecureShares añadir la carpeta donde estén las tablas.


 


 


 


 



2.-Pulsamos sobre la opción de menú Options y luego sobre Advanced options,
se nos mostrará la siguiente pantalla


 


 


 


 


 


 


marcamos la opción que he señalado en rojo...Windows Share Folder
3.- Hacemos click en la opción de menú DestokpShare y luego en Configure GBridge DestokpShare (VNC)...

Se nos mostrará otra pantalla, seleccionamos la opción Allow after verify DestokpShare password (use built-in VNC server)y ponemos un password en la parte inferior


Ahora nos vamos al ordenador cliente. Instalamos GBridge y una vez instalado ponemos nuestro nombre de usuario y password Google. GBridge se encarga ya de todo lo demás.

Ahora vamos a componer la ruta de nuestras tablas vinculadas, será de la siguiente forma:
Nombre de HostName (lo hemos apuntado antes), Nuestro nombre de usuario Google, Gbridge.Net, el nombre de la carpeta y el del archivo y debe estar de la siguiente forma:
\\pq28.juanfcots.gbridge.net\nombrecarpeta\nombrearchivo.mdb

Abrimos Access y nos vamos a la opción de Vincular tablas...la imagen de Access que muestro es de la versión 2007 pero debería funcionar con cualquier versión. marcamos la opción de Vincular y le ponemos la ruta que acabamos de componer



Aceptamos la vinculación y si todo ha ido bien, tenemos nuestra aplicación online para introducir o modificar registros.
Espero que os sirva tanto como me sirve a mi.