CMS modules by everest poker.

Formularios (III)

Imprimir
Valoración del Usuario:  / 3
MaloBueno 
Categoría: Teórico-práctico
Escrito por Neckkito

Si queréis bajaros este artículo en pdf pulsad aquí.

 

Índice de contenidoFormularios3


LOS ÚLTIMOS FLECOS DE LOS FORMULARIOS    
TIPO: VISTA HOJA DE DATOS
TIPO: VISTA TABLA DINÁMICA
TIPO: VISTA GRÁFICO DINÁMICO
MODIFICAR UNA TABLA A TRAVÉS DE UNA CONSULTA A TRAVÉS DE UN FORMULARIO
EL FORMULARIO MODAL DE ACCESS 2007
Y ESO ES TODO…

LOS ÚLTIMOS FLECOS DE LOS FORMULARIOS
Bueno… Ya estamos en el tercer y último artículo sobre formularios. En este artículo vamos a realizar un “vuelo rasante” sobre el resto de vistas de formulario que aún no hemos explicado, explicaré a través de un ejemplo cómo podemos relacionar consultas, formularios y tablas y aprenderemos algunas cosillas más de código VBA que espero os sean de aplicación en alguna cosilla de vuestras BD’s.


Vamos a continuar con la aplicación de ejemplo que utilizamos para el artículo Formularios (II). No repetiré nada de lo que ya se ha dicho en ese artículo, por lo que si necesitáis refrescar alguna cosa os invito a echarle un vistazo.


La mini aplicación con todo lo que se explicará en estas líneas la podéis descargar aquí.


¡Vámonos!


TIPO: VISTA HOJA DE DATOS
No me entretendré en explicar este tipo de vista, pues el que por defecto vemos cuando abrimos una tabla con datos. Sólo la aprovecharé para explicaros algo de código VBA.


Imaginemos que tenemos una lista en papel de autores que tenemos que introducir en nuestra BD, y queremos darnos “prisa” en esa introducción. Evidentemente podemos utilizar el formulario que hemos creado al efecto, pero pensamos nos es más práctico introducirlos en vista hoja de datos. ¿Cómo lo hacemos?


Nos vamos a nuestro FMenu y lo abrimos en vista diseño. Añadimos un botón de comando, al que llamaremos “cmdAltaAutoresEnSerie”. A ese botón le generamos el siguiente código:


---
Private Sub cmdAltaAutoresEnSerie_Click()
    DoCmd.OpenForm "FAutores", acFormDS
End Sub
---


La línea DoCmd.OpenForm… ahora tiene un nuevo argumento, que es acFormDS. Ese argumento fuerza a abrir el formulario FAutores en vista hoja de datos. Si colocamos FMenu en vista formulario y hacemos click sobre nuestro nuevo botón podremos ver el efecto.


En este caso no hemos cerrado previamente FMenu porque como el usuario no podrá “manipular” el formulario por el tipo de vista en la que está, y sólo podrá salir del mismo a través del botón cerrar del cuadro de control (la X de arriba a la derecha) no hace falta “complicarse la vida” realizando programaciones complicadas.


TIPO: VISTA TABLA DINÁMICA
Imaginemos que queremos controlar lo que nos hemos gastado en libros por mes. Lo vamos a realizar a través de una tabla dinámica.


Copiamos el formulario FCompras y lo pegamos como FTablaDinamica. Copiamos FCompras porque es el formulario donde aparecen los campos principales que nos interesan, que son el importe y la fecha (que nos dará el mes) de compra.


Ahora vamos a “manipular” un poquito este formulario.


1.- Abrimos el formulario en vista diseño. Sacamos sus propiedades y nos vamos a la pestaña Formato. En la propiedad “Permitir vista TablaDinamica” le decimos que SÍ.
2.- Guardamos los cambios
3.- Ahora nos vamos al botón Ver (del grupo VISTAS de la cinta de opciones) y veremos que podemos abrirla como tabla dinámica. La abrimos en esta vista y nos aparece el formulario con un aspecto “extraño”. Debemos configurar nuestra tabla dinámica.
4.- Como sólo queremos información de dos campos la configuración de la tabla dinámica será muy sencilla. Vemos que tenemos una nueva ventana, que se denomina “Lista de campos de tabla dinámica” (si no la vemos nos tenemos que ir a la cinta de opciones, al grupo “Mostrar u Ocultar”, y seleccionamos la opción “Lista de campos”), y vemos que, al haber un campo fecha, ya nos permite, por defecto, ver esa fecha agrupada por semanas o por meses.
5.- Arrastramos el campo “FechaC por mes” al espacio donde nos indica “Coloque los campos de fila aquí”. Vemos que automáticamente se nos crean distintos “niveles de agrupamiento”. Nos muestra inicialmente el año, y si hacemos click sobre el signo más nos lo muestra por trimestres, y, lógicamente, haciendo click sobre el signo más de cada trimestre veremos nuestras compras por meses (y, más allá, por días).
6.- Arrastramos el campo [Imp] al espacio central, donde nos indica “Coloque los campos de totales o los campos detallados aquí”..
7.- Vemos que nos ha aparecido una “columna” que pone “Imp”, con los importes. Como evidentemente nos interesa ver los totales (ahora aparecen sin calcular) nos situamos sobre el nombre de la columna y hacemos click con el botón derecho del ratón.
8.- En el menú que nos sale seleccionamos la opción “Autocalcular” y, de las subopciones que nos aparecen, seleccionamos “Suma”


Y ya tenemos nuestra tabla dinámica configurada. Os apunto aquí, como curiosidad, que si quisiéramos saber qué nos hemos gastado por géneros, por ejemplo, bastaría arrastrar el campo [Gen] al espacio donde nos indica “Coloque los campos de filtro aquí” (podemos poner varios campos de filtro).


Truco: si nos hemos pasado un buen ratito configurando nuestra tabla dinámica es interesante copiar el formulario y guardarlo como backup, entre otras cosas porque las modificaciones sobre la tabla dinámica que podamos hacer en posteriores consultas (reducir niveles, filtrar, etc.) quedan “guardadas”, de manera que al abrir el formulario de nuevo no se nos muestra la configuración original, sino la última “manipulada” por el usuario. Si la tabla es muy complicada es un “rollazo” volverla a dejar como en su día se hizo. La solución es borrar el formulario y hacer un copy-paste de nuestro formulario de copia de seguridad.


Ahora sólo nos queda guardar el formulario y abrir, en vista diseño, nuestro FMenu. En él añadimos un botón de comando, que tendrá por nombre cmdAbreTD, y al hacer click le ponemos el siguiente código:


---
Private Sub cmdAbreTD_Click()
    DoCmd.OpenForm "FTablaDinamica", acFormPivotTable
End Sub
---


Os animo a probar diferentes distribuciones de datos para nuestra tabla dinámica, para ver así las cosas que pueden hacerse con este tipo de vista.


TIPO: VISTA GRÁFICO DINÁMICO
Visto el epígrafe anterior, la mecánica para crear un gráfico dinámico es la misma que para crear una tabla dinámica. Comentamos algunas características muy brevemente:


1.- Copiamos FTablaDinamica y lo pegamos como FGrafDinamico.
2.- Abrimos FGrafDinamico en vista diseño, sacamos sus propiedades y, en la pestaña Formato, establecemos en SÍ la propiedad “Permitir vista GráficoDinámico”.
3.- Guardamos los cambios.
4.- Volvemos a abrir nuestro formulario, pero esta vez en vista Gráfico Dinámico. Podremos ver nuestro súper-gráfico.


Evidentemente ahora podemos manipular a nuestro antojo todas las propiedades del gráfico. Os recomiendo “jugar” un poquito para “destrozar” nuestro gráfico.


Volvemos, como siempre, a nuestro formulario FMenu, insertamos un botón de comando para abrir nuestro gráfico dinámico, al que llamaremos “cmdAbreGD”, y al hacer click le asignamos el siguiente código:


---
Private Sub cmdAbreGD_Click()
    DoCmd.OpenForm "FGrafDinamico", acFormPivotChart
End Sub
---


Y eso es todo. Muy fácil, ¿verdad?


Ojo: por motivos didácticos hemos creado dos formularios, uno para tabla dinámica y otro para gráfico dinámico. Evidentemente, si nuestras preferencias hacen que coincida la configuración de ambos lo lógico sería crear un solo formulario, por ejemplo FDatosDinamicos, y abrirlo en una vista u otra a través de los botones FMenu. Ya hemos visto que sólo hay que añadir a la acción de abrir el formulario el argumento acFormPivotChart o el argumento acFormPivotTable.


MODIFICAR UNA TABLA A TRAVÉS DE UNA CONSULTA A TRAVÉS DE UN FORMULARIO
Vamos a ver cómo podemos cambiar el valor de un campo a través de un formulario que llama a una consulta. Sé que parece un trabalenguas, pero es más fácil de lo que parece.
Imaginemos que se nos estropean algunos libros, o que los dejamos a un amigo sabiendo que “nunca volverán”. Queremos pues dar de baja estos libros.


Vamos a abrir la tabla TCompras en vista diseño y vamos a añadirle un campo. El campo lo llamaremos simplemente [Baja] y su tipo será Sí/No. En las propiedades del campo, en la propiedad “valor predeterminado”, escribiremos FALSO.


Como curiosidad os diré que el valor predeterminado cero (0) se corresponde a FALSO, mientras que a VERDADERO le corresponde el valor “menos uno” (-1).


Vamos a crear una consulta, a la que llamaremos CBaja. Añadimos la tabla TCompras y, en el grid de la consulta, añadimos los siguientes campos:


[Id]
[Tit]
[Baja]


En la línea de criterios filtramos el campo [Baja] poniendo FALSO (para que no nos muestre los que ya están de baja).


Ahora vamos a crear un formulario basado en esa consulta. Guardamos ese formulario como FBaja. Lo configuramos para que el usuario no pueda intentar navegar por los registros (porque cuando lo “pongamos en marcha” sólo debería haber uno, a no ser que tengamos títulos repetidos, cosa que no consideramos en este ejemplo), y, en definitiva, para que el formulario quede a nuestro gusto (os recuerdo que todo esto está explicado en el artículo Formularios (I)).


Para que el usuario no “cambie” involuntariamente el título sacamos las propiedades de [Id] y de  [Tit] y, para cada uno de ellos, en la pestaña Otras->Punto de tabulación: NO, y en la Pestaña Datos->Bloqueado: SÍ


Añadimos un botón en el encabezado del formulario al que llamaremos cmdCerrar y le asignamos el código que ya nos es de sobras conocido:


---
Private Sub cmdCerrar_Click()
    DoCmd.Close acForm, Me.Name
End Sub
---


Con esto hemos acabado con el formulario basado en una consulta. Vamos a ver cómo lo llamamos desde el menú principal.


Abrimos FMenu en vista diseño e insertamos un botón de comando. Le llamamos cmdBaja. Aprovecharemos el combo que ya tenemos para seleccionar el título, que, recordemos, le pusimos de nombre cboTitulo.


Sacamos las propiedades de cmdBaja y al hacer click le escribimos el siguiente código:


---
Private Sub cmdBaja_Click()
    Dim vTit As Variant
    vTit = Me.cboTitulo.Value
    If IsNull(vTit) Then
        MsgBox "Debe seleccionar un título", vbInformation, "AVISO"
        Exit Sub
    End If
   
    DoCmd.OpenForm "FBaja", , , "[Id] =" & vTit
End Sub
---


Nota: recordad que si una tabla tiene clave principal el valor que almacena por defecto el combo es esa clave principal, a no ser que nosotros, manualmente, la cambiemos. De ahí que el código compare el campo [Id] con el título.


Si ahora ponemos FMenu en vista formulario y seleccionamos un título lo podremos dar de baja con el sistema que acabamos de crear.


Nota: aunque no lo vamos a ver aquí porque se sale del ámbito del artículo deberíamos tomar en consideración, para el resto de la BD, que la inclusión de libros con la condición de estar de baja tiene repercusión sobre el resto de nuestros objetos. Es decir, ahora el gráfico dinámico, por ejemplo, no nos mostrará información “real” porque toma como datos de origien todos los libros, independientemente de si están de baja o no. Deberíamos “reprogramar” nuestros formularios teniendo en cuenta la posibilidad de que haya libros de baja.


Simplemente os lo apunto para que, cuando programéis vuestras BD’s, contempléis cada “cosa” que hacéis no como un tema individual, sino que toméis en consideración todas las repercusiones que pueden tener sobre la totalidad de vuestra BD.


EL FORMULARIO MODAL DE ACCESS 2007
Access 2007 lleva incorporado, entre la tipología de formularios que se pueden crear “pulsando un botón”, un formulario que denomina “Cuadro de diálogo modal”. Como ya hemos comentado en anteriores artículos, un cuadro de diálogo modal aparece como un pop-up y espera una acción por parte del usuario.


Vamos a crear un formulario modal a través de esta opción de Access, pero antes nos prepararemos el terreno para poder llevar a cabo las acciones que queremos asignar a ese formulario.


Creamos, sobre la tabla compras, un informe, que guardaremos con el nombre de RCompras. No importa cómo quede el informe porque ya hablaremos de ellos en futuros artículos. Lo importante es que haya un informe RCompras.


Ahora situamos FMenu en vista diseño. Añadimos un botón de comando, al que llamaremos cmdInforme, y al hacer click le generamos el siguiente evento:


---
Private Sub cmdInforme_Click()
    DoCmd.OpenForm "FPeticion"
End Sub
---


Ahora sí vamos a centrarnos en nuestro cuadro de diálogo modal.


Nos situamos en menú Crear->Grupo de opciones: Formularios->Botón: Más formularios->Seleccionamos Cuadro de diálogo modal.


Veremos que se nos abre lo que en principio parece un formulario normal, en vista diseño, pero que en el pie tiene incorporados dos botones: SÍ y NO. Guardamos este formulario como FPeticion.


Creamos una etiqueta, y en ella escribimos simplemente: ¿Desea ver el informe? Redimensionamos el formulario para que nos quede más pequeño (deberemos mover antes esos dos botones para que nos deje cambiar el tamaño de la sección Detalle).


Vamos a echar un vistazo al botón CANCELAR, que ya viene preprogramado con una macro incrustada. Sacamos sus propiedades y nos vamos a la pestaña Eventos->Al hacer click->Click sobre el botón de puntos suspensivos. Así editaremos la macro.


Vemos que la macro simplemente nos dice que si el usuario cancela se cierra el formulario. En principio, para este botón, no necesitamos realizar ninguna “gestión” más.


Editamos ahora la macro del botón ACEPTAR y, ¡sorpresa! Nos encontramos con que está la misma macro programada, con la acción cerrar. Evidentemente esta macro la tenemos que cambiar. Vamos a ver cómo:


Vamos a añadir otra línea de acción a la macro. Debajo de “Cerrar”, en lo que sería “la segunda línea”, seleccionamos la acción “AbrirInforme”. Configuramos los argumentos de la acción de la siguiente manera:
    · Nombre del informe: RCompras
    · Vista: vista preliminar


Ojo: si nos ponemos encima de las líneas de los argumentos de la acción, además de la ayuda que nos sale a la derecha de la pantalla, si pulsamos F1 obtendremos más información sobre el argumento en cuestión.


Ahora ya podemos guardar la macro con los cambios. Para poder comprobar los efectos de nuestro nuevo formulario abrimos FMenu, pulsamos sobre cmdInforme y… a rezar.


Y ESO ES TODO…
Bueno. Creo que con estos tres artículos le hemos pegado un buen “repasón” a casi todo lo que tiene relación con los formularios y que puede sernos de utilidad práctica. Evidentemente hay muchas otras cosas pero, como comentaba en la introducción del artículo Formularios (I), nos hemos centrado en lo que, personalmente, creía que iba a tener una mayor utilidad práctica para nosotros.


Espero sinceramente que, de todo lo explicado, hayáis podido extraer algunas cosas útiles para vuestras BD’s.


¡Suerte!


---FIN DEL ARTÍCULO TERCERO---

 

Saturday the 19th. Joomla 2.5 Templates. Neckkito's baby 2012 --- Hosted by: www.siliconproject.com.ar
Copyright 2012

©