Pasa Programación, apuntes y soluciones con Access
Página principal Mis apuntes de Access Mis utilidades Mis ejemplos Mis agradecimientos Enlaces a otras Webs

Referenciar controles

  1. Índice.
  2. Controles entre formularios.
  3. Controles entre subformularios.
  4. Bibliografía.

Controles entre formularios

Cuando necesitamos mostrar en un control de un formulario, en un campo de una consulta, en un informe, o dentro de una macro o un código VBA, el valor que tiene otro control de otro formulario, la solución es bastante sencilla:

= Forms!NombreDelFormulario!NombreDelControl

Donde lo que hacemos es:

  1. Forms: Estamos indicando que queremos acceder a la colección de formularios abiertos. Esta palabra identifica a un objeto de Access, que almacena los formularios abiertos de la base de datos.
  2. NombreDelFormulario: Aquí escribimos el nombre del formulario al que queremos acceder, tal y como lo hemos escrito al guardarlo en la base de datos.
  3. NombreDelControl: Aquí escribimos el nombre del control del formulario al que queremos acceder; el nombre que pondremos será el mismo que el que hemos dado a ese control en su propiedad Nombre.

Así, si tenemos un formulario que se llama MiFormulario, y en él tenemos un control que se llama MiControl, la sentencia será similar a la siguiente:

= Forms!MiFormulario!MiControl

Hasta aquí vamos bien, pero debemos tener en cuenta un par de cositas:

  • Se ha omitido la propiedad Item de la colección Forms. Esta propiedad es el valor por defecto de la colección, y no es necesaria indicarla.
  • Hemos obviado la colección Controls. Esta colección almacena todos los controles de un formulario. Pero como es la propiedad por defecto de los formularios, no precisamos indicarla en la sentencia.
  • También hemos omitido la propiedad Value de los controles. En este caso, la propiedad Value es la propiedad por defecto de los controles y, por tanto, tampoco necesitamos indicarla.

Así, la sentencia anterior quedaría de la seguiente forma indicando todo:

= Forms.Item("MiFormulario").Controls("MiControl").Value

Pero queda un poco más enrevesado, ¿verdad? Y como el resultado es el mismo, ¿para qué complicarnos la vida? Pues realmente, no es necesario complicarnos tanto, pero nos sirve de ejemplo para tener en cuenta que podemos acceder a otras propiedades. Por ejemplo, con la siguiente expresión podemos acceder a la propiedad Nombre del control. Sí, no sirve de mucho, pero ten en cuenta que es sólo un ejemplo.

= Forms!MiFormulario!MiControl.Name

¿Y podemos acceder a más propiedades? La respuesta es sí, siempre y cuando tengamos en cuenta que algunas propiedades nos lanzarán un error en determinadas circunstancias. Por ejemplo, la propiedad Text de los cuadros de texto sólo es accesible cuando ese control tiene el foco, ya que esta propiedad es la que muestra el valor, y necesita tener el foco para saber cómo se va a mostrar.

También hay que tener en cuenta otra cosa: la colección Forms sirve para acceder a los formularios abiertos, incluidos aquellos que no estén visibles, o estén abiertos en modo Diseño. Pero si el formulario está cerrado, no podemos acceder a él a través de esta colección. Debemos abrirlo antes, o recibiremos un mensaje de error, veremos la palabrita #nombre o Access nos pedirá el parámetro, dependiendo de donde estamos intentando acceder.

2008 Patxi Sanz
Libro de visitas
Hosted by www.Geocities.ws

1