Trucos en Access

ACCESS 97-2000



Métodos abreviados: Es muy probable que al rellenar formularios o tablas haya que introducir el mismo valor de campo para varios registros consecutivos, como, por ejemplo, introducir nombres de fechas, provincias, poblaciones, etc. Con la combinación de teclado CTRL + ' esta operación se realiza de forma automática. Otras combinaciones útiles son:
CTRL + + Añade un registro nuevo
CTRL + : Inserta la fecha actual
CTRL + - Elimina el registro actual
CTRL + ; Inserta la hora actual
CTRL + ALT + ESPACIO Inerta el valor predeterminado de un campo
CTRL + INTRO Inserta una nueva línea en un campo
MAYUS + INTRO Combinación que guarda los cambios realizados en el registro actual






Las bases de datos y el Efecto 2000: Al igual que Excel, Access es sensible al cambio de milenio. Conviene trabajar con fechas de cuatro dígitos para controlar en todo momento el correcto uso de los datos. Para corregir esto, abrir el menú HerramientasàOpciones y seleccionar la solapa General. Activar una de las dos casillas en el apartado "Usar formato de años de cuatro dígitos".




Centrar títulos en Access: Si somos usuarios de esta base de datos de Microsoft, habremos notado, lo tediosa que es la tarea de centrar títulos ya que el centrado que Access integra es dentro del control. Para solucionar esto, solo hay que aplicar este pequeño truco, que consiste en hacer igual de ancho el control y el informe, situando la esquina superior izquierda del control en el margen izquierdo del informe y ampliar el tamaño del control hasta el extremo contrario. A continuación escribiremos el título y centraremos con las herramientas de alineación incluidas en la barra Formato.




Corregir bases de datos corruptas: En ocasiones, cuando se intenta convertir una base de datos de Access 97 al formato de Access 2000 aparece un mensaje anunciando que la base de datos está corrupta. Este error se produce porque no está correctamente compilada o se produjo alguna corrupción antes de la conversión. Para corregir este problema es necesario abrir la base con su aplicación original (Access 97). Si no es posible acceder a otro ordenador se puede instalar en el mismo donde está Office 2000, pero en otro directorio, y seguiremos el siguiente proceso:
Abrir la base de datos en Access 97. Abrir cualquier módulo en modo Vista Diseño. Abrir el menú Debug, seleccionar Compilar y elegir la opción Guardar todos los módulos. Después cerramos la base de datos. En el menú Herramientas, buscar las utilidades y elegir Compactar base de datos y volver a convertir el proyecto a Access 2000.




Cómo controlar líneas en blanco en etiquetas de direcciones: Las direcciones no son todas iguales y esto puede causar problemas en el diseño de las etiquetas. Por ejemplo, muchas direcciones requieren una línea para el nombre de la calle y otras requieren dos. Además, como normalmente se tienen varios campos, cuando hacemos las etiquetas se crean líneas en blanco entre los campos de la dirección porque muchas direcciones no tienen rellenos todos sus datos. Para omitir fácilmente estas líneas en blanco se establece la propiedad Autocomprimible a Si en cada control. Para hacer esto, abrir el informe en modo diseño, seleccionar el control y poner la propiedad Autocomprimible a Si. Hay que tener en cuenta que si el control tiene una etiqueta asociada esta propiedad no tienen efecto y que el espacio entre controles se seguirá mostrando. Así, para conseguir el mejor efecto lo mejor es no dejar espacios entre los controles y evitar las etiquetas asociadas a los controles.




Macros personalizadas: Al igual que el resto de programas de la suite, Access 2000 acepta macros. A modo de ejemplo vamos a ver una macro para obtener la letra del NIF a partir del documento nacional de identidad:
Public Function LetraNIF(dni As Long) As String
Dim tmp As Long
tmp = dni - (Int(dni /23) * 23)
Select Case tmp
Case 0, 23: LetraNIF = "T"
Case 1: LetraNIF = "R"
Case 2: LetraNIF = "W"
Case 3: LetraNIF = "A"
Case 4: LetraNIF = "G"
Case 5: LetraNIF = "M"
Case 6: LetraNIF = "Y"
Case 7: LetraNIF = "F"
Case 8: LetraNIF = "P"
Case 9: LetraNIF = "D"
Case 10: LetraNIF = "X"
Case 11: LetraNIF = "B"
Case 12: LetraNIF = "N"
Case 13: LetraNIF = "J"
Case 14: LetraNIF = "Z"
Case 15: LetraNIF = "S"
Case 16: LetraNIF = "Q"
Case 17: LetraNIF = "V"
Case 18: LetraNIF = "H"
Case 19: LetraNIF = "L"
Case 20: LetraNIF = "C"
Case 21: LetraNIF = "K"
Case 22: LetraNIF = "E"
Case Else: LetraNIF = "Error"
End Select
End Function




Documentar sus programas Access: Access proporciona un entorno visual de desarrollo con el que se pueden generar potentes aplicaciones. El problema surge cuando el desarrollo realizado adquiere un volumen considerable. ¿Cómo controlar y gestionar la cantidad de formularios, informes, macros, etc., que se han ido generando? Una opción muy interesante y poco conocida de Access es el documentador. En el menú Herramientas, opción Analizar, se puede acceder al documentador, que permite obtener información completa y organizada de los objetos que constituyen la base de datos, de manera que se genera un inventario de todos y cada uno de los componentes y sus propiedades.




Acelerar las consultas: Cuando sea posible, restrinja sus consultas a campos indexados. El dispositivo Rushmore de Access los maneja 50 ó 60 veces más rápido que los campos sin indexar. Además, cuando realiza una comparación con el operador Como, no utilice una expresión que empiece por *, porque Rushmore optimizará Como G*., pero no Como *G.P. Y recuerde que aunque Access soporta hasta 32 índices por tabla, los índices que añaden o editan datos en un campo pueden ralentizar las operaciones.




Cómo colorear un botón de comando: No se puede cambiar el color de un botón, pero sí se puede hacer una simulación que parezca que se ha cambiado de color realizando los siguientes pasos:
1 - Agregar un botón de comandos al formulario.
2 - Establecer la propiedad Transparente a Sí.
3 - Crear un rectángulo del mismo color que el botón y utilizar la herramienta Color de fondo o Relleno para elegir el color deseado.
4 - Establecer la propiedad Efecto Especial a "Con Relieve".
5 - Arrastrar el botón de comando sobre el rectángulo.
Tener un rectángulo bajo el botón de comando no afecta a su funcionamiento. Al poner el botón transparente desaparece cualquier nombre que se haya puesto, pero esto se puede corregir incluyendo un control de etiqueta sobre el botón.




Numerar nuevos campos consecutivamente: Si planea hacer una réplica de su base de datos, necesitará usar un campo contador como clave primaria de la tabla. He aquí cómo crear un campo que numere consecutivamente cada nuevo registro que añada a la tabla.




  1. En la ventana de Diseño de Tabla seleccione Autonumérico de la lista desplegable Tipo de dato.
  2. Bajo Propiedades del campo, seleccione Entero largo de la lista desplegable Tamaño del campo.
  3. Teclee Incrementalmente en la línea Nuevos valores.
  4. Proporcione un nombre, como ID de empleado, para la línea Título y teclee (sin duplicados) en la línea Indexado




Editar el estampado de la hora: Después de crear un informe con el Asistente para informes, vaya a la ventana de Diseño del informe, haga clic con el botón derecho en la sentencia "=ahora()" en el pie de la página; éste es el comando que coloca la hora en su informe. Entonces, en la hoja de propiedades del pie de la página, teclee su hora personalizada y texto en la línea contraria Formato y cierre la hoja de propiedades.




Abrir formularios con macros: Este método abreviado consiste en crear una macro que abre un formulario, informe, consulta, tabla, etc.




  1. En la ventana de la base datos, haga clic en la ficha de Macro y seleccione Nuevo.
  2. En el menú Ventana, escoja Mosaico.
  3. Haga clic en la ficha Informes de la ventana de la base de datos y arrastre el informe que quiere que la macro abra hasta una fila de la columna Acción de la ventana Macro.
  4. Cierre la ventana, haga clic en para guardar la macro y asígnele un nombre.




Personaliza Access 97: Si tienes una aplicación que empleas habitualmente, lo más normal es haber creado un acceso directo que apunte a nombre.mdb (o nombre.mde) de nuestra aplicación, simplemente para ahorrarnos abrirla dentro de Access. Mediante las propiedades de inicio de la base de datos, se puede cambiar tanto el título como el icono de la aplicación, obteniendo así una cierta similitud con cualquier otro programa realizado con lenguajes de programación más sofisticados, como sería Visual Basic, Visual C++ o cualquier otro compilador de Windows que se nos ocurra. Asimismo, nos independizamos un poco de lo que sería Access en sí para conseguir un resultado mucho más profesional. No obstante, aún queda un pequeño detalle que nos delata: no es otro que la pantalla de inicio que muestra Access cuando arranca (esa en la que pone Microsoft Access 97). Si queremos que Microsoft Access muestre un dibujo que nosotros hayamos diseñado, con el logo de nuestra empresa o el nombre de nuestra aplicación, por ejemplo, simplemente tenemos que crear un BMP con el mismo nombre que el nombre.mdb y ubicarlo en el mismo directorio. Por otro lado en el acceso directo al (nombre.mdb), tenemos que especificar como directorio, el mismo en el que se encuentre nuestra aplicación. Así, cuando se inicie ese MDB, aparecerá nuestra imagen y, de esta forma, habremos conseguido un resultado mucho más personal y que, aparentemente, no se diferencia de cualquier programa comercial.




Imprimir el registro actual: Imprimir el registro actual no debería resultar pesado. Y no lo será una vez que añada este botón a sus formularios. Ya no tendrá que merodear con el ratón por los menús Editar y Archivo o por la opción Registros seleccionados en el cuadro de diálogo Imprimir.




  1. Abra el formulario y escoja Diseño del formulario del menú Ver. Asegúrese de presionar el botón de control de asistentes en la caja de herramientas.
  2. Haga clic sobre el botón Comando en la caja de herramientas.
  3. Cuando haga clic en el lugar en el que quiere el nuevo botón, el asistente del botón de comando le guiará. En la lista Categorías, haga clic sobre Operaciones con registros.
  4. En la lista Acción, haga clic sobre Imprimir registro.
  5. Pulse el botón Siguiente y añada texto o una imagen al botón.
  6. Haga clic sobre Finalizar y después escoja Formulario del menú Ver.
  7. Pruebe ahora el nuevo botón.




Numeración correlativa automática sin campo autonumérico: Supongamos una tabla llamada Clientes con varios campos, de los cuales uno es numérico entero largo llamado NumCliente, estableciendo que el campo sea indexado sin duplicados o bien clave principal.
En el evento Al activar registro del formulario de entrada de datos para esa tabla, insertar el siguiente código:

On Error GoTo err_Form_Current
If [NumCliente] < 1 Then
[NumCliente] = DMax("NumCliente", "Clientes") + 1
End If
exit_Form_Current:
Exit Sub
err_Form_Current:

If Err = 94 Then 'Uso no válido de Null

Resume Next
Else
MsgBox Error$
Resume exit_Form_Current

End If
En la propiedad Punto de tabulación del campo NumCliente, dentro de formulario, establecer su valor a No, ya que será un campo que no hay que rellenar manualmente.
Ha sido absolutamente necesario incluir las líneas que hacen referencia al error nº 94 (uso no válido de Null) debido a que la primera vez que se accede al formulario para introducir datos, se producirá dicho error al no existir registros. Con esas líneas de código se evita que aparezca dicho error, ya que la línea On error goto... envía el flujo de la ejecución a la parte del código donde se detecta y se envía de nuevo el flujo de ejecución a la línea siguiente, excepto en el caso de producirse un error diferente, en cuyo caso se mostraría el error producido gracias a las líneas que siguen a Else.




Calcular la edad exacta:




edad:ent(Ahora()-[FECHA NACIMIENTO]/365)




Crear una suma continua en un formulario: Para crear una suma continua en un formulario, la tabla sobre la que está basada debe contener al menos un campo autonumérico (en las versiones 1.x o 2.0, un campo contador). Si la tabla no contiene ese campo, se puede abrir la tabla en modo diseño y crear el campo.
El siguiente ejemplo utiliza una tabla que contiene tres campos: Contador (Campo Autonumérico), Cantidad (Campo numérico) y Total (Campo Numérico). La tabla se llama Prueba.
Crear un formulario nuevo basado en la tabla Prueba.
Formulario: Formulario1
OrigendelRegistro: Prueba
Cuadro de Texto: Contador
Origen del Control: Contador
Cuadro de Texto: Cantidad
Origen del Control: Cantidad
Cuadro de Texto: Total
Origen del control: =Dsum("[Cantidad]";"Prueba";"[Contador]<=Forms![Formulario1]![Contador]")
La función Dsum calcula la suma del campo Cantidad en todos los registros que tengan el contador menor o igual que el registro activo. Esta es la razón por la que se necesita un campo autonumérico.




Cuadro combinado que añade el valor Todos a una lista: Cuando se prepara un formulario con un cuadro combinado cuyo valor luego se usa como criterio en una consulta, es posible que convenga añadir a los valores de la lista el texto Todos, en cuyo caso la consulta no tendrá criterio. Conseguir este propósito requiere resolver dos problemas; por un lado, lograr que el cuadro combinado muestre también la palabra Todos y, por otro, que la consulte funcione correctamente. Para el primer problema partimos de que el tipo de origen de fila del cuadro combinado es Tabla.Consulta, ya que si fuera Lista de valores sólo tendríamos que añadir dicho valor. Necesitamos crear una consulta de unión que nos permita asociar a los elementos de la tabla el texto deseado. Este tipo de consulta sólo se puede crear en la pantalla de SQL y su sintaxis sería:




SELECT Campo FROM Tabla UNION SELECT '(Todos)' FROM Tabla




Aunque '(Todos)' es una constante, necesita un origen de datos, pero puede usarse sin problemas la misma tabla.
Veamos ahora cómo solucionar el tema de la consulta. Para que el criterio funcione bien usaremos la siguiente expresión con la función SiImp:

SiImp(Formularios![NombreFormulario]![NombreCuadroCombinado] = '(Todos)';
[NombreCampo];
Formularios![NombreFormulario]![NombreCuadroCombinado])

Con esta sintaxis se consigue que al seleccionar Todos el criterio sea el propio nombre del campo, lo cual da como resultado todos los registros.




Demasiados campos en una tabla: Un problema bastante inusual, pero que puede provocar problemas al diseñar una tabla, es que Access muestre el mensaje de que hay demasiados campos, impidiendo entonces grabar el diseño. De hecho, Access permite que una tabla pueda tener un máximo de 255 campos, aunque este tope es más que suficiente, en algunos casos, normalmente al modificar una estructura de tabla, podemos encontrarnos con el mensaje de error mencionado, aunque no hayamos llegado al límite descrito. El motivo es que Access tiene un contador interno del número de campos que llevamos en la tabla. Al añadir, mover o copiar campos se va incrementando. Sin embargo, cuando borramos campos el contador no disminuye. Si el contador llega a 255 aparece el error y no podemos guardar los cambios en la estructura. Para resolverlo lo único que hay que hacer es compactar la base de datos mediante Herramientas-Utilidades de la base de datos-Compactar y reparar la base de datos, ya que la compactación actualiza, entre otros temas, ese contador interno relativo al número de campos.




Organizar los objetos de la base de datos por temas: La ventana de la base de datos de Access organiza los objetos por tipos. Sin embargo, es posible que en aplicaciones grandes convenga organizar los objetos por temas. Este problema se resuelve en Access 2000 mediante el uso de la barra Grupos, que aparece en la zona izquierda de la ventana de la base de datos. Puede crearse un grupo mediante el menú de contexto sobre cualquier objeto y luego crear accesos directos a los objetos deseados. Basta con seleccionar el objeto y, en el menú de contexto, seleccionar la opción Agregar al grupo e indicar el grupo apropiado.




Numeración correlativa sin campo Autonumérico:




if me.codigocliente < 1 then
me.codigocliente=DMax("codigocliente","Nombretabla")+1
end if




Trabajar con campos autonuméricos: Dos de las necesidades más típicas con campos autonuméricos son: volver a empezar en 1 después de ciertas pruebas o bien conseguir que empiecen a numerar por un valor determinado. En el primer caso basta con borrar todos los registros de la tabla y compactar la base de datos mediante Herramientas-Utilidades de la base de datos-Compactar y reparar la base de datos. El segundo tema es un poco más complicado. Supongamos que ya tenemos la tabla con el campo autonumérico creada. A continuación creamos una tabla auxiliar con un campo de tipo Numérico Entero largo, a la que añadiremos un registro con el valor por el que deseamos empezar a numerar menos uno. Seguidamente crearemos una consulta de datos anexados con la tabla auxiliar y añadiremos el registro a la tabla que tiene el campo autonumérico. Tras ejecutar la consulta podemos borrarla, igual que la tabla auxiliar. Ya sólo queda eliminar el registro auxiliar de la tabla, con lo que los registros siguientes continuarán la autonumeración a partir del valor anterior.




Cambiar el color de un control cuando tiene el foco: Ponemos como color del fondo del control el que quieras que te salga al recibir el enfoque y luego poner como estilo del fondo invisible. Al recibir el foco se verá del color del fondo y si no tiene el foco se verá transparente.




Formato condicional: Con Access 2000 el formato condicional ya no es un problema, ya que pueden definirse reglas de formato para cuadros de texto y otros controles en formularios e informes. Para ello debe usarse el comando Formato condicional del menú Formato, lo cual permite definir el color de la fuente, su tamaño, el color de fondo de los controles y otras propiedades visuales que proporcionan información complementaria a los usuarios.




Añadir un botón a un formulario que permita eliminar el registro activo: A nivel de usuario existe la combinación de teclas Ctrl + - (guión) para eliminar el registro activo en un formulario. Una solución más cómoda es añadir al formulario un botón y asociar el siguiente código al evento Al hacer clic:




If Me.NewRecord Then
Me.Undo
Else
Me.RecordsetClone.Bookmark =
Me.Bookmark
Me.RecordsetClone.Delete
End If




Es necesario establecer una condición, ya que el registro a eliminar puede ser uno que se esté creando en ese momento. La propiedad NewRecord devuelve verdadero si estamos en esta situación, en cuyo caso es suficiente con aplicar el método Undo (deshacer). Sin embargo, si se trata de un registro existente es necesario aplicar el método Delete. El problema es que no se puede aplicar directamente al objeto Me. Por tanto, la solución es aplicárselo a RecordsetClone, una vez situado el registro activo en el mismo que en el formulario.




Cómo mejorar el rendimiento de la base de datos: Una de las mejores maneras de mejorar el rendimiento y la integridad de la base de datos es repararla y compactarla periódicamente. Al compactar una base de datos, se organiza de nuevo el archivo y le permite volver a obtener el espacio de los registros eliminados. La opción Reparar permite reparar una base de datos dañada, lo que ocurre en la mayoría de los casos cuando Access se cierra inesperadamente antes de guardar la base de datos. A veces, una base de datos también se puede dañar sin que Access se dé cuenta. Si la base de datos se comporta de manera extraña, es posible que sea necesario repararla. Cuando repare una base de datos, también debe compactarla después. Para reparar la base de datos actual, seleccione Utilidades de la base de datos/Reparar base de datos en el menú Herramientas. Access supone que usted desea reparar la base de datos abierta actualmente y ejecuta el procedimiento de reparación. Cuando termina, vuelve a la ventana Base de datos. De igual manera, si selecciona la opción para compactar mientras está abierta la base de datos, Access compactará sólo esa base de datos. Si desea compactar otra base de datos o crear una copia de seguridad de la actual, cierre todas las bases de datos y seleccione Compactar base de datos en el menú Utilidades de la base de datos. A continuación, elija la base de datos que desea compactar y, en el cuadro de diálogo Compactar la base de datos en, seleccione una base de datos existente o escriba un nuevo nombre para la compactación.




Campos numéricos decimales que no aparecen cuando su valor es 0:




=iif([NombreCampo]<>0;[NombreCampo]) y en formato: estándar, nº decimales automático




Registrar Controles Active X: Desde el ejecutar del menu INICIO escribir lo siguiente:
regsvr32.exe\windows\system\nombrecontrol.ocx - Para Windows 95
regsvr32.exe\windows\system32\nombrecontrol.ocx - Para NT




Colocar un reloj en un formulario: Se puede hacer de dos maneras, con un campo de texto o con una etiqueta. Vamos a hacerlo con una etiqueta a la que le llamamos lblHora. En el formulario, en la propiedad Al intervalo del cronómetro escribimos 1000. En el código de evento AlCronómetro del formulario escribimos me.lblHora.caption=Time.




Limitar el número de registros en una tabla:




If DCount ("*","Reservas","FechaReserva=Forms!Reservas!Fecha")>50 then
msgbox "Ya hay 50 registros"
end if

Entradas populares