21/06Trabajando 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:
Visual Basic:
-
‘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