47- 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 consulta 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 consultas 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.

48- 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 base de datos, ya que la compactación actualiza, entre otros temas, ese contador interno relativo al número de campos.

49- Organizar los objetos de la base de datos por temas

La ventana de 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 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.

50- 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 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.

51- 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 fuente, su tamaño, el color de fondo de los controles y otras propiedades visuales que proporcionan información complementaria a los usuarios.

En la figura se ve un ejemplo donde el campo activo se resalta asignándole un color de fondo. Además, en función del valor, el color de la fuente cambia.

52- 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.

[email protected]