Publicado por lcflores en Abril 5th 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 seguir los siguientes pasos:
1) Cerrar todas las aplicaciones Access.
2) En la linea de comando, teclear “msaccess.exe /decompile”
3) Access se abrirá. Abrir la base de datos que deseamos limpiar. Dependiendo de la versión de Access puede aparecer un mensaje sobre el código VBA, sí aparece simplemente ignorarlo.
4) Abrir cualquier modulo. En el menú “Depuración” seleccionar la opción de “compilar …“
5) Guardar los cambios.
6) Cerrar la base de datos y el programa Access.
7) Abrir Access de la forma normal (sin usar el comando de línea) y realizar una reparación y compactación de la base de datos.
El tamaño de la base de datos se habrá reducido y los extraños errores deberían haber desaparecido
Compártelo
Publicado en Access, Trucos | 2 Comentarios »
Publicado por lcflores en Abril 4th 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
‘==========================================
Compártelo
Publicado en Access, Excel, Trucos | 3 Comentarios »
Publicado por lcflores en Abril 3rd 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:
‘==========================================
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 = 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
‘==========================================
4) Guardamos los cambios.
5) Ahora ya podemos ejecutar la Macro para copiar los datos de una tabla o consulta Access en Excel. Abrimos la ventana de Macros en el Menú Herramientas > Macro > Macros (o pulsar ALT+F8).
6) Seleccionamos la Macro que hemos creado “Copiar_Tabla_Access” y pulsamos el botón “ejecutar“.
7) La Macro nos pedirá:
a) La ruta y el nombre del fichero Access, por ejemplo “c:\temp\miAccess.mdb”.
b) El nombre de la tabla o consulta, por ejemplo “miTabla”.
Ya hemos terminado.
Compártelo
Publicado en Access, Excel, Trucos | 16 Comentarios »
Publicado por klave en Marzo 27th 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)
Lea el resto de esta entrada »
Compártelo
Publicado en Access, Trucos | 3 Comentarios »