| Artículos | 01 SEP 2000

Microsoft Access 2000

Tags: Histórico
Trucos del mes
Jesús Alonso.
Cuando un usuario se sienta por primera vez ante un ordenador se encuentra frente a a una enorme cantidad de cosas nuevas que aprender. Los estudios sobre usuarios de ordenadores reflejan que, por término medio, no se utiliza más del 15% de las posibilidades de las aplicaciones. Desde PC World queremos solucionar este problema y, por ello, en esta sección encontrará cada mes una pequeña selección de los mejores y más interesantes trucos para distintas aplicaciones, pequeños detalles que no ofrecen nuevas características revolucionarias, pero facilitan el trabajo al poder realizar más fácilmente las tareas cotidianas.

1- Cambiar de registro en un formulario seleccionando un valor de un cuadro combinado
En determinados formularios es interesante ofrecer un cuadro combinado que facilite cambiar a un registro concreto. Por ejemplo, un formulario de Clientes donde el cuadro combinado facilita el acceso a la ficha del cliente seleccionado.
Para conseguir este propósito, en primer lugar crearemos un cuadro combinado independiente (dejando en blanco el Origen del control), cuyo origen de la fila utilice el mismo conjunto de registros que el formulario. A continuación, le añadiremos el siguiente código al evento Al cambiar:

Me!RecordsetClone.FindFirst “[NombreCampo] = “ & Me![NombreCuadroCombinado]
Me.Bookmark = Me.RecordsetClone.Bookmark

NombreCampo ha de ser un campo que identifique a cada registro y debe estar en el origen de datos del formulario, aunque no necesariamente añadido como control. Además, debe ser la columna dependiente del cuadro combinado.
Si en el formulario se permite el cambio de registro con el teclado o con los botones de la barra de navegación, habrá que controlar que el cuadro combinado se actualice consecuentemente. Para ello debemos introducir el siguiente código asociado al evento del formulario Al activar registro:

Me![NombreCuadroCombinado] = Me![NombreCampo]

2 - 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, conseguir 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.


3- Vincular una tabla de sólo lectura
En ocasiones podemos necesitar definir una serie de consultas o informes en Access relativos a datos externos. No queremos importar los datos porque deseamos su actualización al variar los datos originales, pero tampoco queremos que accidentalmente puedan producirse modificaciones en los valores. ¿Qué hacer entonces?
La cuestión es que Access no ofrece la posibilidad vincular de sólo lectura. Sin embargo, existe una solución que ofrece el mismo resultado. Veamos cómo hacerlo:
1- Empezaremos vinculando la tabla de datos externos.
2- A continuación, crearemos una consulta en base a la tabla, que incluirá todos sus campos.
3- En la pantalla de propiedades de la consulta, cambiaremos la propiedad Tipo Recordset de Dynaset a Archivo Snapshot. De este modo, ni desde la consulta ni desde los formularios que la usen como origen de datos podrá modificarse su contenido.
4- Para terminar, podemos ocultar la tabla original de la ventana de base de datos. Para hacerlo, seleccionaremos la tabla y, usando el menú de contexto, accederemos a sus propiedades, donde podremos activar el atributo Oculto. Al aceptar, ya no vemos la tabla en la ventana de base de datos. Si posteriormente deseamos visualizar otra vez la tabla, usaremos la opción de menú HerramientasOpcionesVerMostrar Objetos ocultos. De este modo, volveremos a ver el objeto en la ventana de base de datos y, por tanto, podremos desactivar el atributo de Oculto.

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

5- Informe que muestra sólo los registros seleccionados en un cuadro de lista de un formulario
Para conseguir este propósito, debemos crear en el formulario un cuadro de lista con los valores que se podrán seleccionar. Debemos modificar la propiedad Selección múltiple de Ninguna a Simple (podrán seleccionarse diversos valores con clics sucesivos) o a Extendida (podrá usarse May+clic para seleccionar una lista, y Ctrl+clic para añadir valores). Por último, se crea un botón que muestre el informe asociándole el siguiente código al evento Al hacer clic:

Dim Criterio As String
Dim Elemento As Variant
Criterio = “[NombreCampo] In(“
For Each Elemento In Me![NombreCuadroLista].ItemsSelected
Criterio = Criterio & “’” & Me![ NombreCuadroLista].ItemData(Elemento) & “’,”
Next Elemento
Criterio = Left(Criterio, Len(Criterio) - 1) & “)”
DoCmd.OpenReport “NombreInforme”, acViewPreview, , Criterio

La idea de este módulo es utilizar el cuarto argumento del método OpenReport. Éste permite definir una sentencia tipo WHERE de SQL para filtrar los registros del origen de datos del informe. Como nos basamos en una selección múltiple, podemos utilizar la función En(). Sin embargo, ésta ha de estar escrita con su sintaxis inglesa, siendo su nombre In y el separador de parámetros la coma.
En la variable Criterio se va almacenando la expresión. Para ello, se inicializa con el nombre del campo sobre el que se quiere filtrar. A con

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información