Professional Documents
Culture Documents
Vistame en http://neckkito.siliconproject.com.ar
formulario nos har de panel de control para que el usuario tenga acceso a todas las
opciones de la aplicacin.
Por ahora dejamos el formulario as creado. Volveremos a l
un poco ms tarde.
Ahora nos creamos otro formulario en blanco, que
guardaremos como FInicio. No hace falta que hagamos, por
ahora, ninguna operacin con el formulario. Simplemente
tened en cuenta que debemos configurar Access para que,
al abrirse, nos cargue este formulario (si no sabemos cmo
se hace esto podis echar un vistazo a este artculo).
2
3
Para asignar un nombre a un control lo que debemos hacer es sacar las propiedades de ese control e irnos a la Pestaa Otras
Nombre. Ah escribimos el nombre que queramos.
Para generar cdigo debemos sacar las propiedades del control Pestaa Eventos, y nos situamos en la parte blanca a la
derecha del evento que queremos programar. Veremos un pequeo botn de puntos suspensivos. Si hacemos click sobre l nos
aparecer una ventana que nos pedir qu operacin deseamos realizar. Le indicamos que queremos generar cdigo.
Vistame en http://neckkito.siliconproject.com.ar
Private Sub cmdCerrar_Click()
'Cerramos el formulario actual
DoCmd.Close acForm, Me.Name
'Abrimos FMenu
DoCmd.OpenForm "FMenu"
End Sub
Vistame en http://neckkito.siliconproject.com.ar
Me.LapsoPreaviso.SetFocus
End Sub
Finalmente vamos a controlar si la tarea es indefinida o no. Para ello sacamos las propiedades
del campo [Indefinida] y en el evento Despus de actualizar le generamos el siguiente
cdigo:
Y listo. No os preocupis ahora por el tema de pero si no existe la consulta que da origen a
4
Vistame en http://neckkito.siliconproject.com.ar
los datos! (porque, en teora, la hemos borrado). Eso lo arreglaremos un poco ms adelante.
Y asunto finiquitado.
Vistame en http://neckkito.siliconproject.com.ar
Para ello vamos a situar FInicio en vista diseo, sacaremos las propiedades del formulario y
nos vamos a Pestaa Otras, y situamos en S las propiedades Emergente y Modal
Ahora nos vamos a Pestaa Eventos Intervalo de cronmetro, y le escribimos ah el valor
2000.
Tened en cuenta que 1000 = 1 segundo; lgicamente, 2000
demasiado tiempo lo podemos bajar, o si es demasiado poco y
segundos, pues escribiramos 6000 (eso se hara eterno!). Slo
lapso es muy corto no os va a dar tiempo a cortar el cdigo,
molesto... je, je...
Qu hace este cdigo? Pues como vamos a emplear un slo formulario tambin vamos a
economizar en cdigo. Veremos cmo nos construiremos, a continuacin, un mdulo con un
procedimiento llamado origenFInfo, donde, como argumentos, le pasaremos el nombre del
formulario (Me.Name) y un identificador propio (es decir, que nos hemos inventado nosotros
mismos), que nos indicar el tipo de consulta que queremos hacer.
En este caso, el 1 ser la consulta referida a las tareas ya vencidas o que ya nos caen dentro
del lapso de preaviso.
Como vamos a necesitar saber si el cdigo es llamado desde FInicio o desde FMenu le pasamos
el tercer argumento (que veremos que es opcional en el mdulo), dicindole que es true, lo
que implica que el cdigo es llamado desde FInicio.
Vistame en http://neckkito.siliconproject.com.ar
Para registrar una referencia debemos irnos, en el editor de VB, a Men Herramientas Referencias... Se nos abrir una
ventana mostrndonos todas las referencias disponibles. Buscamos la que nos interese, marcamos su check y aceptamos.
Vistame en http://neckkito.siliconproject.com.ar
Vistame en http://neckkito.siliconproject.com.ar
Private Sub cmdCVencidas_Click()
Call origenFInfo(Me.Name, 1)
End Sub
que
llamaremos
Ahora el segundo argumento es 2 porque queremos que se ejecute la SQL del CASE 2, que
es la que nos da las tareas no completadas e indefinidas.
4.- Aadir un botn de comando, que llamaremos cmdCCompletadas, con el siguiente cdigo:
Ahora creo que ya entendis porque pasamos como ltimo argumento el 3, verdad?
5.- Aadimos un cuadro de texto, al que pondremos de nombre txtFecha. Sacamos sus
propiedades y nos vamos a la pestaa Formato Formato, y le establecemos un formato de
fecha corta.
De esta manera ser el propio Access quien nos controle si el valor introducido es vlido o no.
Ahora, para ese textbox, en su evento Despus de actualizar, generamos el cdigo:
Vistame en http://neckkito.siliconproject.com.ar
Fijaos que, al tener un elemento ms, que es la fecha que
nos va a hacer de filtro, la llamada a la funcin utiliza los
dos parmetros obligatorios, debemos indicar que el primer
parmetros opcional no lo indicamos (de ah el espacio
entre comas), y que el segundo parmetros opcional s lo
pasamos, y que viene representado por el valor recogido en
la variable laFecha.
Y con esto podemos dar por finalizado la programacin de
nuestra aplicacin.
UNOS COMENTARIOS
Qu pasara si quisiera aadir ms campos a FInfo? Si hemos entendido la mecnica de
funcionamiento de la aplicacin no deberamos tener muchos problemas para poder conseguir
nuestro propsito. Sin embargo, para clarificar ideas, os indico lo que deberamos hacer, en
general:
1.- Aadir ese nuevo campo a nuestra consulta molde, si an no tenemos creado FInfo
2.- Si ya tenemos creado FInfo, aadirle el nuevo campo a travs de la opcin Campos
Disponibles (para Access 2003 habra que sacar la tabla origen del formulario a travs del
botn correspondiente de la barra de botones).
3.- En el cdigo del mdulo deberamos aadir ese nuevo campo en la SQL, en la parte del
cdigo donde se indica que creamos el inicio de la consulta.
Por ejemplo, si creramos un campo llamado [Importante], en el cdigo escribiramos, por
ejemplo:
Es muy importante que la SQL finalice con esa coma al final. Ojo!
Qu pasara si quisiramos aadir una nueva consulta utilizando el nuevo campo? Pues el
proceso sera:
1.- Como es una nueva consulta debemos asignarle un identificador de consulta. Como
tenemos hasta el 4 el nuevo sera el 5.
2.- Creamos un nuevo CASE en el cdigo del mdulo aadiendo el resto de la SQL de la
consulta. Evidentemente siempre antes del END SELECT.
3.- En el botn que nos llama a la nueva consulta pasarle correctamente los argumentos
obligatorios.
Por ejemplo, si queremos filtrar por ese nuevo campo [Importante], y que las tareas no estn
completadas, aadiramos el siguiente CASE:
Case 5
'Acabamos de construir la SQL con las tareas no completadas
'e importantes
10
Vistame en http://neckkito.siliconproject.com.ar
miSql = miSql _
& " TEventos.Obs FROM TEventos WHERE TEventos.Completada=FALSE AND" _
& " Teventos.Importante=TRUE"
Y la llamada del botn de comando sera:
Call origenFInfo(Me.Name, 5)
PARA FINALIZAR
Ahora s... Ya tenemos nuestra agenda de tareas, que adems nos avisa de vencimientos con
preavisos, y todo ello economizando recursos utilizando un slo formulario para recoger
todas las consultas que podamos hacer.
Espero que este ejemplo os pueda ser til. Un saludo, y...
suerte!
11
Vistame en http://neckkito.siliconproject.com.ar