trucos access: Ejecutar programas externos desde un formulario

Crear un boton en el formulario con la herramienta al efecto y, justo en el momento de aparecer la primera pantalla del asistente, cancelar el proceso. De esta forma, el boton queda creado aunque sin codigo asociado. Acceder a las propiedades del boton y, dentro del evento Al hacer clic, insertar esta linea de codigo:

Shell ('Ruta\Programa.exe Parametros')

donde Ruta\ es la ruta de acceso al programa a ejecutar, Programa.exe es el nombre del ejecutable con su extension y Parametros se refiere a los posible parametros que lleva aparejados el programa ejecutado, siendo por tanto opcional. Si hay mas de un parametro, se separan con un espacio. Si, por ejemplo, se quisiera hacer una copia comprimida con el programa compresor Winzip de una base de datos, una forma seria asi:

Shell ('c:\winzip\winzip32.exe -a c:\destino\copia c:\personal\access\database.mdb')

Aqui se puede ver que Winzip (cuya ruta de acceso en este caso seria C:\WINZIP y su ejecutable es WINZIP32.EXE) emplea 3 parametros: -a para indicar que debe comprimir, luego viene la ruta de destino con su nombre final de archivo y en tercer lugar la ruta de origen con el nombre de la base de datos a comprimir. Si las rutas o los archivos tienen nombre largo, lo aconsejable es emplear en esta situacion siempre el nombre corto, cuestion que se debe comprobar previamente accediendo a una sesion MS-DOS para listar directorios y archivos.

El ejemplo anterior haria que se comprimiera una base de datos llamada DATABASE.MDB ubicada en C:\PERSONAL\ACCESS en la carpeta C:\DESTINO y bajo el nombre COPIA.ZIP.

Por supuesto, esta linea de codigo se puede asociar a cualquier otro tipo de evento y a otro tipo de control. Por ejemplo, se podria ejecutar algo al cargar el formulario o al actualizar un determinado campo.

Otro caso que se puede dar es el de ejecutar comandos internos del DOS, como COPY. Imaginemos que se desea ejecutar la orden COPY ARCh1 C:\TEMP. En estos casos hay que hacerlo de la siguiente manera:

Shell (Environ('comspec') & ' /c copy arch1 c:\temp', 1)

Esto es asi porque hay que ejecutar el procesador de comandos del DOS (COMMAND.COM), el cual esta definido por la variable de entorno comspec.

Algunos comandos internos del DOS estan emulados con ordenes directas de Access. Tal es el caso de RMDIR, CHDIR, MKDIR y DIR(). Este ultimo se diferencia del comando del DOS en que no devuelve carpetas, sino solamente nombres de archivo y tampoco lista los que tengan atributos de oculto y de sistema.






y escribenos para mejorar.
Contactar