"Decompilando" una base de datos Access para mejorar el rendimiento

abril 5, 2007

Con el tiempo, la parte de la base de datos de Access que almacena el código VBA de tus módulos puede estar almacenado de forma incorrecta y en algunos casos generar extraños e inexplicables errores.

Al mismo tiempo que compilas y ejecutas el código VBA quedan residentes antiguos estados que ya no serán necesarios en el futuro. Con frecuencia las operaciones de Reparación y Compactación de una base de datos Access no libera el espacio ocupado por el código antiguo.

Para solucionar este problema usaremos el comando de linea “decompile” que indica a Access que debe descartar todo el código compilado previamente, sólo permanecerá el código fuente.

Para decompilar una base de datos Access debemos …


——————————————————–
Nos hemos mudado a www.xperimentos.com, puedes continuar leyendo este post en este enlace.
——————————————————–


Mejorando la Macro de copiar tablas de Access a Excel

abril 4, 2007

En un post anterior os mostramos como copiar tablas de Access a Excel de forma rapida, evitando los problemas de usar copiar y pegar.

La Macro funcionaba bien, pero puede mejorarse de forma relativamente sencilla para que sea mas reutilizable.

1) La primera mejora es añadir la Macro al libro de Macros Personal, para que este disponible siempre que utilicemos Excel. Sino sabéis como realizarlo os recomiendo que veáis este post del blog de JDL Excel.

2) Reemplazar la entrada manual de la ruta y el nombre Access, mediante una ventana de selección de ficheros. Reemplazamos la instrucción

InputBox(“¿Ruta y nombre del fichero Access?”)

por

Application.GetOpenFilename(“Access (*.mdb), *.mdb”, , “Seleccionar fichero Access”)

3) Reemplazar la entrada manual del nombre de la tabla o consulta por un selector que obtenga un listado de tablas y consultas disponibles. Esto implica la creación de un pequeño formulario y crear una lista de selección. Dada su complejidad y para no complicar este post, este punto lo trataremos en breve en otro post, cuando este publicado incluiremos un enlace.

*) El resultado final a falta de incorporar las mejoras del punto 3. El siguiente código dentro del libro de Personal:

‘==========================================
Public Sub Copiar_Tabla_Access()
  Dim oConexion As ADODB.Connection
  Dim rsTabla As ADODB.Recordset
  Dim sNombreTabla As String
  Dim sNombreAccess As String
  Dim i As Integer

  sNombreAccess = Application.GetOpenFilename( _
    “Access (*.mdb), *.mdb”, , “Seleccionar fichero Access”)

  sNombreAccess = InputBox(“¿Ruta y nombre del fichero Access?”)
  If sNombreAccess <> “” Then
    sNombreTabla = InputBox(“¿nombre de la tabla/consulta?”)
    Set oConexion = New ADODB.Connection
    oConexion.CursorLocation = adUseClient
    oConexion.Open “PROVIDER=Microsoft.Jet.OLEDB.4.0;” & _
                                “Data Source=” & sNombreAccess & “;”
    Set rsTabla = New ADODB.Recordset
    rsTabla.Open “Select * From [” & sNombreTabla & “]”, _
                         oConexion, _
                         adOpenStatic
    ActiveSheet.Cells.CopyFromRecordset rsTabla
    ActiveSheet.Rows(“1:1”).Insert Shift:=xlDown
    For i = 0 To rsTabla.Fields.Count – 1
      ActiveSheet.Cells(1, i + 1).Value = rsTabla.Fields(i).Name
    Next
    rsTabla.Close
    oConexion.Close
    Set rsTabla = Nothing
    Set oConexion = Nothing
  End If
End Sub
‘==========================================


Copiar datos de Access a Excel de forma rápida

abril 3, 2007

Muchas veces tenemos la necesidad de copiar datos de una tabla o consulta Access a una hoja Excel. Este paso es sencillo, simplemente copiar y pegar. Copiamos los datos en Access y los pegamos en Excel, pero si el tamaño/cantidad de datos es grande esta operación puede dejar literalmente “tostado” nuestro ordenador durante varios minutos. Los minutos en los que se queda “tostado” variaran dependiendo de la cantidad de datos y la memoria RAM que tenga nuestro ordenador.

Afortunadamente existe una mejor solución para copiar datos de una tabla o consulta Access a Excel, es un poco más compleja, pero no mucho más. Vamos a crear una Macro y usar la función de VBA “Cells.CopyFromRecordset” para copiar tablas y consultas de Access en segundos.

Pasos:

1) Abrir Excel

2) Abrir el editor de Macros (Pulsar ALT+F11)

3) Copiar y pegar la siguiente Macro:


——————————————————–
Nos hemos mudado a www.xperimentos.com, puedes continuar leyendo el post en este enlace.
——————————————————–


Selección de registros aleatorios en Access

marzo 27, 2007

Vamos a intentar explicar que pasos tenemos que seguir para seleccionar una muestra aleatoria de una base de datos access. Para ello lo primero que tenemos que hacer es crear un campo que contenga dicha aleatoriedad.

En mi caso siempre creo la aleatoriedad de la misma forma, un sistema un poco largo pero así se asegura la aleatoriedad (por mi trabajo es bastante importante que la muestra sea lo más aleatoria posible)

  • Creo un campo autonumérico que será la semilla del número aleatorio y un campo Aleat Vacío (al que hemos llamado aut).
  • …………..

 

——————————————————–
Nos hemos mudado a www.xperimentos.com, puedes continuar leyendo este post en este enlace.
——————————————————–