Академический Документы
Профессиональный Документы
Культура Документы
MIS TABLAS
Vamos a imaginar que debemos procesar la cantidad producida de un producto, y que ese
producto tiene un compuesto base. A su vez, ese compuesto base puede tener una
característica definitoria, como que es tóxico, que es abrasivo, que es inflamable...
Por ejemplo, y dado que no tengo ni idea de productos químicos pues voy a poner un ejemplo
inventado, el registro que vamos a introducir es la producción de 5 unidades de “Matarratas
Complex”, cuyo compuesto base es el “Benciclono”, cuya característica es la toxicidad.
Espero que se entienda la idea. Podría haberlo simplificado, pero si lo hago un poco más
complejo no debería seros difícil conseguir el mismo efecto en un caso, por ejemplo, de que
hablemos de socios que están o bien de “baja”, o bien en situación de “bloqueado”, o bien en
situación de “activo”.
Vamos pues a crear una primera tabla que nos recoja los compuestos base y sus
características. A esa tabla la llamaremos TCompuestos y tendrá la siguiente estructura:
Como estoy en un Access 2013 el tipo de datos es “Texto corto”; recordad que para otras
versiones es simplemente “Texto”.
Ahora vamos a construirnos otra tabla, que llamaremos, por ejemplo, TProduccion, que tendrá
la siguiente estructura:
1
Visítame en http://neckkito.siliconproject.com.ar
CREANDO NUESTRO SUBFORMULARIO CON FORMATO
CONDICIONAL
Creémonos un formulario en vista de formularios continuos (varios elementos) sobre la tabla
TCompuestos. Lo llamaremos subFormCompuestos. Vamos a modificar su diseño para que se
parezca lo máximo posible a una simple lista de valores. Por ejemplo, a mí me ha quedado así:
Vamos a efectuar algunas manipulaciones más. Como nuestro futuro subformulario no debe
comportarse como tal, sino que en realidad nos debe mostrar una lista de valores, lo que
haremos será bloquear la manipulación de registros. Para ello sacamos sus propiedades y
configuramos así las propiedades de la pestaña Datos:
Permitir agregar: NO
Permitir eliminación: NO
Permitir ediciones: NO
Permitir filtros: NO
Guardados los cambios, si lo rellenamos con algunos datos la vista queda así:
2
Visítame en http://neckkito.siliconproject.com.ar
Vemos que manejamos tres características: tóxico, abrasivo
e inflamable. Vamos pues a asignar formato condicional en
base a estos valores.
Yo os lo explicaré sobre un Access 2013, por si alguien no sabe cómo aplicar formato
condicional. Recordad además que para los sufridos usuarios de Access 2003 sólo es posible
aplicar 3 condiciones como máximo.
Con el formulario en vista diseño nos vamos a menú “Formato”. Seleccionamos los dos campos
(utilizando la tecla mayúsculas podemos hacer una selección múltiple) y pulsamos sobre el
botón del ribbon “Formato Condicional”.
3
Visítame en http://neckkito.siliconproject.com.ar
Si os fijáis, aunque no se aprecie mucho en la ilustración, he seleccionado un color marrón
para el tipo de letra.
4
Visítame en http://neckkito.siliconproject.com.ar
De manera que al volver a la pantalla inicial nos hayan quedado definidas estas tres reglas así:
Lo que haremos será, en primer lugar, insertar un subformulario a través del siguiente
5
Visítame en http://neckkito.siliconproject.com.ar
proceso:
• Pestaña Formato → Imagen, y seleccionamos una imagen que nos guste (yo he
seleccionado la llamada “Flecha abajo”).
• Pestaña Otras → Nombre, y ahí escribimos cmdDespliega.
Y como una imagen vale más que mil palabras así me ha quedado a mí:
Lo primero que pensamos es que, por defecto, los combos no aparecen desplegados. Para
conseguir pues que no aparezca “desplegado” vamos a sacar las propiedades del formulario
principal y en el evento “Al activar registro” vamos a generar el siguiente código2
…
Private Sub Form_Current()
2 Para generar código debemos sacar las propiedades del control → Pestaña Eventos, y nos situamos en la parte “blanca” a la
derecha del evento que queremos programar. Veremos un pequeño botón de puntos suspensivos. Si hacemos clic sobre él nos
aparecerá una ventana que nos pedirá qué operación deseamos realizar. Le indicamos que queremos “generar código”.
6
Visítame en http://neckkito.siliconproject.com.ar
Me.subFormCompuestos.Visible = False
End Sub
…
…
Private Sub cmdDespliega_Click()
Me.subFormCompuestos.Visible = True
End Sub
…
Tercera idea: al hacer clic sobre el campo [Compuesto] el combo debería desaparecer de
nuevo. Para ello, en la propiedad “Al recibir el enfoque” de ese campo escribimos este código:
…
Private Sub Compuesto_GotFocus()
Call Form_Current
End Sub
…
Cuarta idea: Al hacer clic sobre uno de los registros del combo (es decir, sobre los registros del
subformulario) ese valor debería pasar al campo del form principal. Necesitamos pues
manipular ambos campos del subformulario.
Para ello vamos a seleccionar el campo [Compuesto] del subformulario (ojo: debe quedar
seleccionado y es el campo del subformulario, no del formulario) y en su evento “Al hacer clic”
generamos el siguiente código:
…
Private Sub Compuesto_Click()
With Me.Parent
.Compuesto.Value = Me.Compuesto.Value
.Compuesto.SetFocus
End With
End Sub
…
…
Private Sub Caracteristica_Click()
Call Compuesto_Click
End Sub
…
Quinta idea: si ahora hiciéramos clic en otro campo el subformulario no desaparecería, como sí
lo haría la lista de un combo. Para ello sacamos las propiedades de la sección detalle de
FProduccion (ojo, de la sección detalle) y generamos en el evento
…
Private Sub Detalle_Click()
Call Form_Current
End Sub
…
7
Visítame en http://neckkito.siliconproject.com.ar
Deberíamos hacer lo mismo para el mismo evento en los campos de que disponemos. Así, para
el campo [Producto] y el campo [Unidades] escribimos:
…
Private Sub Producto_Click()
Call Form_Current
End Sub
Sexta idea: al desplegar el combo nuestro cursor debería verse como una flecha, no como una
barra de edición. Si a vosotros se os ve como una flecha, pues fantástico, pero en Access 2013
el cursor cambia a edición. Para evitar eso lo que podemos hacer es situar
subFormCompuestos en vista diseño, y en la propiedad de formulario “Al cargar” le escribimos
el siguiente código:
…
Private Sub Form_Load()
Screen.MousePointer = 1
End Sub
…
La verdad es que da bastante bien el pego. Cuando abrimos nuestro formulario FProduccion lo
que vemos es
Y cuando hacemos clic sobre la flecha del pseudocombo lo que vemos es:
8
Visítame en http://neckkito.siliconproject.com.ar
¿SE PODRÍA MEJORAR ALGUNA COSA?
Por supuesto que sí. Se podría intentar hacer que al pasar
el mouse sobre los registros estos adquirieran otro color de
fondo. Eso sería muy sencillo si el subformulario no
estuviera en vista de formularios continuos. Sin embargo, al
estar en este tipo de vista la cosa se complica y tendría que
estudiar cómo podría hacerse. Como de entrada he
considerado que esto era un “mal menor” y ya no dispongo
de más tiempo para dedicarle a este ejemplo pues... ahí
queda como idea.
Evidentemente, si alguien se anima y descubre cómo hacerlo seré el primero en escuchar sus
sugerencias.
Un saludo, y....
¡suerte!
9
Visítame en http://neckkito.siliconproject.com.ar