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:
  1. ‘Vamos a crear una tabla [datos] y rellenarla a partir de los datos obtenidos de una consulta a
  2. ’ otra tabla [empleados] de la base de datos
  3.  
  4. Global Const RUTA = “C:\Temp"
  5.  
  6. Public Sub Inicio()
  7.  
  8.   ‘1.- Si existe la tabla, la eliminamos
  9.   If Not IsNull(DLookup(“Name”, “MSYSOBJECTS”, “Name=’datos’”)) Then
  10.       CurrentDb.Execute “DROP TABLE datos”
  11.   End If
  12.  
  13.   ‘2.- Creamos la tabla en la base de datos de Access
  14.   sSQL = “CREATE TABLE datos (codigo INTEGER, nombre CHAR);”
  15.   CurrentDb.Execute sSQL
  16.  
  17.   ‘3.- Solicitamos el departamento para filtrar los empleados
  18.   iDep = InputBox(Prompt:=“Introduzca el Departamento que desea exportar:”)
  19.  
  20.   sSQL = “SELECT [codigo], [nombre] FROM [empleados] WHERE [departamento] LIKE ‘” & iDep & ”’;”
  21.  
  22.   Set rsTMP = New ADODB.Recordset
  23.   With rsTMP
  24.       .Source = sSQL
  25.       .LockType = adLockOptimistic
  26.       .CursorType = adOpenKeyset
  27.       .CursorLocation = adUseClient
  28.       .ActiveConnection = CurrentProject.Connection
  29.       .Open
  30.       If .RecordCount> 0 Then
  31.           .MoveFirst
  32.           ‘Recorremos los resultados insertando los datos en la nueva tabla
  33.           Do Until .EOF
  34.               CurrentDb.Execute “INSERT INTO datos(codigo, nombre) VALUES (‘” & rsTMP!codigo & ”’, ‘” & rsTMP!nombre & ”’);”
  35.               .MoveNext
  36.           Loop
  37.       Else
  38.           MsgBox “El departamento introducido no tiene empleados para exportar.”
  39.       End If
  40.       .Close
  41.   End With
  42.  
  43.  
  44.   ‘4.- Generamos el archivo de log de la operacion
  45.   sArchivo = RUTA & “log.txt”
  46.   If Len(Dir(sArchivo))> 1 Then Kill sArchivo
  47.   Open sArchivo For Output As 1
  48.   Print #1, “ — LOG: “ & date & vbCrLf
  49.   Print #1, “Finalizada con exito la operacion de exportacion.”
  50.   Close #1
  51.  
  52. End Sub

  

deja tu respuesta