en Programacion

Trabajando con las macros de Microsoft Access

Últimamente en el trabajo me ha tocado lidiar con Microsoft Access (sin comentarios); y he tenido que tirar de macros para manejar las datos.

Como nunca había necesitado usar las macros de Access, no sabía como realizar las típicas operaciones de recorrer las filas de una tabla,lanzar instrucciones SQL…

Así que para que quede como apunte personal, os pongo un ejemplo con unas operaciones sencillas de un módulo de Access:
[vb]
‘Vamos a crear una tabla [datos] y rellenarla a partir de los datos obtenidos de una consulta a
‘ otra tabla [empleados] de la base de datos

Global Const RUTA = «C:\Temp\»

Public Sub Inicio()

‘1.- Si existe la tabla, la eliminamos
If Not IsNull(DLookup(«Name», «MSYSOBJECTS», «Name=’datos'»)) Then
CurrentDb.Execute «DROP TABLE datos»
End If

‘2.- Creamos la tabla en la base de datos de Access
sSQL = «CREATE TABLE datos (codigo INTEGER, nombre CHAR);»
CurrentDb.Execute sSQL

‘3.- Solicitamos el departamento para filtrar los empleados
iDep = InputBox(Prompt:=»Introduzca el Departamento que desea exportar:»)

sSQL = «SELECT [codigo], [nombre] FROM [empleados] WHERE [departamento] LIKE ‘» & iDep & «‘;»

Set rsTMP = New ADODB.Recordset
With rsTMP
.Source = sSQL
.LockType = adLockOptimistic
.CursorType = adOpenKeyset
.CursorLocation = adUseClient
.ActiveConnection = CurrentProject.Connection
.Open
If .RecordCount > 0 Then
.MoveFirst
‘Recorremos los resultados insertando los datos en la nueva tabla
Do Until .EOF
CurrentDb.Execute «INSERT INTO datos(codigo, nombre) VALUES (‘» & rsTMP!codigo & «‘, ‘» & rsTMP!nombre & «‘);»
.MoveNext
Loop
Else
MsgBox «El departamento introducido no tiene empleados para exportar.»
End If
.Close
End With

‘4.- Generamos el archivo de log de la operacion
sArchivo = RUTA & «log.txt»
If Len(Dir(sArchivo)) > 1 Then Kill sArchivo
Open sArchivo For Output As 1
Print #1, «– LOG: » & date & vbCrLf
Print #1, «Finalizada con exito la operacion de exportacion.»
Close #1

End Sub
[/vb]