Quantcast
Channel: Experiencias con Access
Viewing all 30 articles
Browse latest View live

Sustitución de tablas con pocos Registros y Campos II: Integración con formularios

$
0
0
En el último post vimos que era posible eliminar una tabla y utilizar en su lugar una lista desplegable creada con el Asistente de búsquedas. Hoy vamos a realizar algo similar, pero a la hora de diseñar el formulario de trabajo.

Recuerda que en el campo Calendario de la tabla Empleados, se guardaba el código correspondiente a cada turno de trabajo, que enlazaba con la tabla Calendario ya eliminada.

Si, con la tabla Empleados señalada en pantalla, vamos a la cinta Crear y pulsamos el botón Formulario, Access nos muestra la siguiente imagen:

En Calendario, no aparece descripción alguna, sólo el código. Nosotros vamos a modificar este diseño para que de más información de una forma más atractiva.

En primer lugar, vámonos a la vista Diseño mediante el primer botón de la cinta. Allí seleccionamos el campo Calendario y lo eliminamos. Al efectuar esta operación, Access subirá la posición del campo Fecha_Contratación.

Ahora, vamos a ampliar la ventana y el área de datos para dejar espacio para el nuevo control que vamos a incorporar.

El control de formulario que nos interesa utilizar, es el marcado en la cinta como XYZ, pero asegúrate de tener activada la varita mágica, antes de pulsarlo:
 

Tras establecer en el área de diseño el tamaño que nos interesa para el control, se iniciará el asistente. En el primer paso, escribiremos el contenido que teníamos en los registros de la tabla Calendario y que ahora ya no necesitamos:

En el segundo paso, podemos escoger o no una opción predeterminada; en nuestro caso, el primero de los turnos. En el tercero, se asignarán los valores internos que se guardarán en el campo de la tabla Empleados y que deberán coincidir con los almacenados en el campo clave de Calendario (1, 2 y 3). En el cuarto, indicamos el campo de Empleados que enlazará con el control; para nuestro ejemplo: Calendario.

Ahora toca elegir diseño. Para la muestra hemos escogido Botones de alternar con Sombreado. Ya sólo queda escribir el título: Turno de trabajo, y Finalizar.

Para ver el resultado final, cambiamos de vista y avanzamos registros para comprobar que el control cambia en función de lo almacenado previamente en Empleados:

Consultas de selección simple

$
0
0
En mi opinión, las consultas es la herramienta más potente que tiene Access, ya que nos permite obtener distintas informaciones más o menos complejas y personalizables.

A lo largo de distintos artículos, iré comentando las posibilidades que la aplicación nos ofrece en este sentido.

Comenzamos por las consultas de selección simples, que son aquéllas en las que nos limitamos a tomar datos que se encuentran ubicados en distintas tablas y a combinarlos entre sí.

Para nuestro ejemplo vamos a utilizar la base de datos librería.mdb, que puedes descargar haciendo clic en el nombre de la misma, y cuyo esquema de relaciones mostramos a continuación.


Si consultamos la tabla Facturas, no veríamos, por ejemplo,  ni el nombre del cliente ni el título o precio del libro que ha comprado. Pues bien, para hacerlo posible, definiremos una consulta simple.

Comenzamos a través de la cinta Crear, pulsando el icono Diseño de consulta, situado a la derecha de la misma. Tras esta operación, Access muestra el cuadro de diálogo Mostrar tabla, donde haremos doble clic en las tablas que tienen los campos que nos interesan, en este caso: Facturas, Clientes y Libros. Luego, pulsamos Cerrar. Si has seguido estos pasos, la pantalla de Access será similar a la siguiente:


En la parte superior de la imagen aparecen las tablas que hemos añadido, y en la inferior tendremos que ubicar los campos que nos interesan. Si, por casualidad, no  tuvieras todas las tablas necesarias, no te preocupes, si miras la parte superior de la pantalla, en la cinta Diseño, tienes el botón Mostrar tabla, con el que podrás solucionar el problema. De manera similar, si has repetido alguna, haz un clic en la barra de título de la tabla y luego en el teclado pulsa Supr.

Para indicar qué campos queremos ver, la forma más fácil es hacer doble clic en cada uno de ellos, entonces se irán añadiendo de izquierda a derecha en la parte inferior de la pantalla. Mira en la imagen, te proponemos que aparezcan el número de la factura, la fecha, el nombre y apellidos del cliente, así como el título y el precio del libro:

Para ver el lista final, pulsa el botón Ejecutar, que puedes encontrar con la imagen de un signo de admiración rojo !, a la izquierda de la cinta Diseño. El resultado debería ser parecido al que ahora te mostramos:


En próximos post veremos cómo podemos mejorar y afinar los resultados, espero no defraudar.

Utilidad de los tipos de campos en Access

$
0
0
Aprovecho este post para repasar los distintos tipos de campos que puedes utilizar a la hora de crear una tabla ya que, a veces, resulta bastante común no emplear el modelo adecuado.

Texto:  
Es el tipo de datos más común, y el que Access propone por defecto. Permite introducir hasta un máximo de 255 caracteres alfanuméricos; es decir, letras, números y caracteres de puntuación.
Se suele utilizar para nombres, apellidos, direcciones, descripciones, títulos…, así como con datos numéricos que no requieren operaciones, por ejemplo: DNI, teléfono, Nº de la Seguridad Social, Código Postal…

Memo:
Vale para almacenar grandes cantidades de texto; por lo tanto es ideal para comentarios, observaciones…

Número:            
Sirve para indicar números enteros y fraccionarios. Por ejemplo: número de páginas, calificaciones, tipos impositivos, descuentos en porcentaje…

Fecha/Hora:     
Para guardar fechas y horas. Por ejemplo, fecha de factura, fecha de nacimiento, hora de realización del pedido…

Moneda:            
Expresa  valores monetarios, es decir, importes del tipo precio, sueldo…

Autonumérico:
Valor numérico que se incrementa de modo automático. El número máximo de registro que puede contener un campo contador es ligeramente superior a dos mil millones.
Resulta de suma utilidad para su utilización como campo clave a la hora de crear códigos o ids, ya que de forma automática irá asignando valores del tipo 1, 2, 3…

Sí/No:  
Campo lógico o booleano. Admite que sólo introduzcamos los valores Sí o No, 1 ó 0, Verdadero o Falso, y Encendido o Apagado, según la modalidad escogida. En consecuencia, es ideal para todo aquello que podamos contestar con las respuestas anteriores.
Por ejemplo, en una tabla de libros podríamos crear el campo Debolsillo, para indicar si es o no de ese tamaño.

Objeto OLE:      
Permite añadir hojas de cálculo, gráficos... o, de manera más simple, la carátula de un libro, la foto de un empleado…

Datos adjuntos:              
Versión mejoradadel  tipo anterior, disponible a partir de la versión 2007.

Hipervínculos:
Para elementos relacionados con Internet, como la URLs de una empresa o el e-mail del cliente o de un trabajador.


Propiedades básicas de tablas I

$
0
0
Cuando estamos creando una tabla en la Vista Diseño, podemos ver cómo a medida que vamos añadiendo nuevos campos, la parte inferior de la pantalla cambia mostrando más o menos elementos.

Estos ítems son propiedades que podemos asociar y modificar y que están disponibles para todos los campos o sólo para algunos, según el tipo de información que asociemos.

Vamos a dedicar entonces algunos post a comentar aquéllas que cualquier persona con una serie de conocimientos mínimos de Access podría modificar sin mayores problemas. Aquí van las primeras!!

Formato
En campos Fecha, permite especificar cómo deseamos que aparezca la fecha o la hora en pantalla; por ejemplo, con el mes en letra, con el día de la semana…
En Número también se utiliza para elegir el aspecto final, como porcentaje, científico, con separador de miles…
También se puede asociar con campos de tipo Texto, indicando incluso formatos personalizados. Por ejemplo, si escribimos simplemente > el contenido aparecerá en mayúsculas, y con <, en minúsculas.

Indexado
Cuando toma el valor , Access crea un índice interno que permitirá acelerar en la tabla las búsquedas que se hagan mediante este campo.

Recuerda que, en el caso de definir un campo como Clave, esta propiedad tomará automáticamente el valor Sí (Sin duplicados), para impedir que existan códigos repetidos.

Requerido
Cuando esta propiedad toma el valor , el campo en cuestión será de obligado cumplimiento, es decir, el usuario no podrá dejarlo en blanco. Lógicamente, deberá tomar este valor para aquellos campos que consideremos esenciales; sin embargo, podríamos establecerlo a No por ejemplo para el email.

Tamaño del campo
En los campos de tipo Texto se emplea para indicar el número máximo de caracteres a escribir, mientras que con los de clase Número, especificaremos el subtipo: byte, entero, entero largo…

Título
Para las tablas, permite modificar el encabezado de las columnas en la vista Hoja de datos; pero además, este título se utilizará en los objetos que se creen a partir de la misma, como consultas, formularios, informes…

Por ejemplo, en la figura anterior podemos ver que el primer campo se denomina numcliente pero al introducir los datos, aparece Código.



Valor predeterminado
Propiedad muy útil cuando existen datos que se repiten con bastante frecuencia; en tales casos, podemos escribir dicha información en esta área, de manera que luego simplemente se acepte o se modifique (si fuera necesario).

Por ejemplo, si sabemos que la mayoría de los empleados tienen como estado civil Casado, escribiremos dicho literal valor por defecto. El resultado puedes verlo en la última fila de la imagen: para los registros nuevos, aparecerá ya escrito ese texto.

Propiedades básicas de una tabla II

$
0
0
Vamos a continuar comentando las distintas propiedades que podemos asociar según los diferentes tipos de campo existentes en una tabla.

Lugares decimales
En campos de carácter numérico, se utiliza para indicar cuántos decimales nos interesa mostrar por pantalla. Por ejemplo, para el campo Precio de la figura, hemos asignado 3 decimales.

Propiedad Lugares decimales

Regla de validación
Permite establecer distintas condiciones para aceptar como bueno el valor que se escriba dentro del campo.
Para el ejemplo, suponemos que en nuestra librería no se venden libros con un valor superior a 50€, por lo que hemos escrito la condición <=50 en el campo Precio; de esta forma, es posible prevenir errores.

Texto de validación
Estrechamente relacionada con la propiedad anterior, se utiliza para indicar el mensaje que aparecerá cuando se escriba un valor que incumpla la Regla de validación. Con el mensaje que puedes ver en la figura anterior, el resultado sería el siguiente:

Propiedad Texto de validación

Alineación del texto
Modifica la alineación horizontal del dato escrito en el campo. Por defecto, los campos de tipo texto son alineados a la izquierda y las fechas, así como los numéricos a la derecha, pero en la imagen inferior del ejemplo, puedes ver cómo la Fecha de la factura aparece centrada, ya que hemos escogido el valor Centro para esta propiedad.

Mostrar el selector de fechas
Si otorgamos el valor Para fechas en esta propiedad, en el modo de Entrada de datos aparecerá un pequeño icono en el campo, que permitirá elegir o seleccionar la fecha directamente en el calendario, en lugar de escribirla como un valor. Mira la captura de la pantalla, para ver el resultado.

Propiedades Alineación del texto y Selector de  fechas

Consultas con criterios I

$
0
0
Anteriormente, hemos visto la forma más básica de consulta que podemos crear en Access, y ahora vamos a avanzar hacia el siguiente nivel, en el que aplicaremos distintos filtros o criterios para afinar más el resultado a conseguir.

Para la explicación seguiremos empleando la base de datos librería.mdb que, como es habitual, puedes descargar haciendo clic en el nombre de la misma, y cuyo esquema de relaciones recordamos:

Relaciones de la base de datos de muestra

Los criterios nos permitirán crear, por ejemplo, una consulta que muestre sólo los Clientes de Sevilla, o las Novelas de Eduardo Mendoza, o los Libros que cuesten menos de 30 euros… Para ello podremos emplear distintos operadores, entre los que puedes encontrar los siguientes a modo de guía:

Criterios disponibles para consultas en Access

Criterios para texto

Suponiendo, como acabamos de comentar que deseamos consultar los datos básicos de los Clientes de Sevilla, comenzamos el proceso de creación partiendo desde cero, añadiendo las tablas Clientes y Ciudades. A continuación trasladamos a la cuadrícula inferior los campos nif, nombre de Clientes, apellidos, teléfono y nombre de Ciudades.

Ahora que tenemos la base dispuesta, es el momento de especificar la condición; para ello, en la fila Criterios del campo nombre de Ciudades, escribiremos el valor correspondiente, que en nuestro caso será Sevilla. Para emplear valores específicos no es necesario utilizar el operador Como o Like; yo tengo la costumbre de pulsar la tecla Tab después de escribir el criterio, y si lo has hecho bien, comprobarás que Access incluirá comillas, almohadillas, mayúsculas… o cambiará el idioma automáticamente.


Si ejecutamos la consulta, el resultado será el siguiente, donde puedes ver que también aparece el nombre de la provincia; pero si no desearas ver los valores repetidos, con sólo desmarcar la casilla de verificación situada justo encima del criterio.


Si quisiéramos ver los Clientes de Sevilla o Cádiz, tenemos varias alternativas a nuestra disposición, que vamos a comentar para que veas las posibilidades que Access nos ofrece. Podemos comenzar, añadiendo en la vista diseño Cádiz debajo de Sevilla, en la fila denominada o, con lo que ahora tendremos 4 registros como consecuencia de la ejecución.

El mismo resultado obtendremos si especificamos cualquiera de estos criterios:
  • "sevilla" O "cádiz"
  • "sevilla" OR "cádiz"
  • In ("sevilla";"cádiz")

Si ahora nos interesara ver todos los clientes de fuera de Sevilla, podríamos emplear cualquiera de estas condiciones:
  • No “sevilla”
  • Not “sevilla”
  • <> “sevilla”


Carácter comodín

En las condiciones relacionadas con campos de tipo texto puede resultar muy interesante aprovechar las oportunidades que nos brinda el carácter comodín * y que se utiliza para sustituir cualquier grupo de caracteres. Mira estos ejemplos y su significado, suponiendo que escribimos el criterio para el campo nombre del cliente:
  • *a – Cualquier nombre que termine en A
  • m* - Cualquier nombre que comience por M
  • *ar* - Cualquier nombre que contenga seguidas las letras AR, sea cual sea su posición


Campos vacíos o llenos

En ocasiones también puede resultar interesante preguntar por campos que estén en blanco. Por ejemplo,  supongamos que quiero comprobar qué clientes no nos han dado su dirección de correo electrónico. Entonces, como criterio del campo email, escribiremos una de estas dos opciones:
  • Es nulo
  • Is null
Y al contrario, si nos interesa detectar aquellos clientes que SI tienen correo electrónico, para enviarles una oferta pongamos por caso, la condición a escribir podrá ser:
  • Es no nulo
  • Is not null


En próximos posts veremos cómo aplicar criterios a campos numéricos o de tipo fecha.


Consultas con criterios II

$
0
0
Retomamos el uso de condicionantes o filtros para las consultas, esta vez aplicados a campos de tipos Número.

Como en ocasiones anteriores vamos a utilizar la base de datos librería.mdb, que aunque no tiene un diseño realmente optimizado, sí resulta útil para nuestras prácticas; en base a lo cual, volvemos a recordar las tablas que la componen y sus relaciones.

Relaciones de la base Libreria

Vamos a comenzar creando una consulta simple, en la que veamos los datos básicos de las facturas generadas. Pongamos por caso el siguiente punto de partida:

Consulta con datos básicos de facturas

En estos casos, se suelen utilizar los operadores lógicos más conocidos: =, <, >, <>, <= o>=.  Por ejemplo, si sólo quisiéramos ver las cinco primeras facturas que hubiéramos emitido, el planteamiento podría ser el siguiente:

Consulta con criterio simple numérico

Si nos interesa mostrar las ventas de libros cuyo precio oscile entre 10 y 20 euros, podríamos optar por dos posibles alternativas, la primera más “clásica” y la segunda aprovechando las funciones propias de Access:
  • >=10 y <=20
  • Entre 10 y 20

 Por supuesto, en ambos casos el resultado final sería el mismo:

Resultado de consulta con intervalo

A tener en cuenta para textos

El último criterio utilizado Entre … Y … también puede ser empleado con campos de tipo texto, pero en este caso hay que tener en cuenta un fallo de Access, ya que por defecto ignora el límite superior del intervalo.

Es decir, si nos interesara conocer los datos de las facturas de todos los clientes cuyos apellidos estén comprendidos entre la M y la P, en teoría deberíamos escribir Entre M* y P*. Pero como Access ignorará la P, para obtener el resultado que realmente deseamos indicaremos Entre M* y Q*. Comprueba cómo, ahora sí, obtienes el listado correcto de registros:

Resultado de consulta con intervalo en textos



Máscara de entrada

$
0
0
Si queremos definir correctamente los campos de nuestras tablas, resulta imprescindible seguir ahondado en las propiedades; por eso, dada la importancia de la que ahora nos ocupa, vamos a dedicarle un post único.

¿Para qué sirve una máscara de entrada?

Esta propiedad nos permite mostrar el contenido de los campos de forma personalizada (similar a como lo haría la propiedad Formato), así como controlar la introducción del dato concreto.

Su potencia se refleja en campos de tipo texto pero que deben contener un número exacto de cifras y/o letras, como por ejemplo: teléfono, carnet, código postal…

La máscara de entrada se crea a partir de una serie de caracteres especiales, que deberemos utilizar según nos convenga en cada situación. Son los siguientes:

Carácter
Descripción
0
Dígito (0 a 9, entrada obligatoria, signos más y menos no permitidos)
9
Dígito o espacio (entrada no obligatoria, signos más y menos no permitidos)
#
Dígito o espacio (entrada no obligatoria, los espacios se muestran en blanco en el modo Edición, pero se eliminan cuando se guardan los datos: signos más y menos permitidos)
L
Letra (A a Z, entrada obligatoria)
?
Letra (A a Z, entrada opcional)
A
Letra o dígito (entrada obligatoria)
a
Letra o dígito (entrada opcional)
&
Cualquier carácter o un espacio (entrada obligatoria)
C
Cualquier carácter o un espacio (entrada opcional)
. , : ; - /
Marcador de posición decimal y separadores de miles, hora y fecha
Hace que todos los caracteres se conviertan a minúsculas
> 
Hace que todos los caracteres se conviertan a mayúsculas
!
Hace que la máscara e entrada se muestre de derecha a izquierda, en lugar de izquierda a derecha.
\
Hace que el carácter siguiente se muestre como un carácter literal (por ejemplo, \Z se muestra sólo como Z)

Si te fijas, algunos caracteres están en mayúsculas y otros en minúsculas; ésto es importante, ya que deberás emplear el exacto para que la máscara de entrada funcione sin problemas.

Ejemplo 1

Comenzamos por algo sencillo. En la tabla Clientes de la base de datos Librería.mdb encontramos el campo CP, definido como Texto con longitud 5; lo hicimos así para obligar a introducir 5 caracteres y que respetara además, los ceros por la izquierda.

Definición de campos de una tabla sin máscara de entrada

Como el Código postal está compuesto por cinco dígitos y obligatoriamente, tenemos que introducir esos cinco, necesitamos un carácter de máscara de entrada que represente la entrada obligatoria de número; si consultamos la lista anterior veremos que es el 0.

Teniendo en cuenta que el tamaño de este campo es 5, en la propiedad Máscara de entrada habrá que escribir 00000, un cero por cada carácter de longitud asociada, de la siguiente forma:

Ejemplo de máscara de entrada para un Código Postal

Si al ir a la vista Hoja de datos, hubiera información anterior y CP erróneos, la máscara NO los modificará, pero sí que para las nuevos registros, obligará a introducir la información de la manera correcta. ¡Pruébalo!

Ejemplo 2

Una demostración clásica sobre la misma tabla: el campo NIF, definido como Texto de tamaño 9; es decir, lo justo para los 8 dígitos y la letra final. Sin embargo queremos que, además de esos ocho números y letra obligados, incorpore caracteres de separación para dar una mejor visibilidad, eso sí, sin ocupar espacio en disco.

Comenzamos por la máscara inicial, que será 00000000L; el 0 por cada cifra obligatoria y la L porque el último carácter deber ser una letra también de entrada forzosa. Esta propuesta ya evitará por si sola errores de escritura.

Si queremos, por ejemplo, separar los números con puntos de miles (pero emplea el del teclado alfabético para asegurarte), la modificamos para que sea 00.000.000L. Si cambias a la vista de datos, podrás comprobar fácilmente como los datos se adaptarán a nuestra propuesta.

Campo NIF con máscara de entrada básica

También podemos separar la letra de los números con un guión; empleando por ejemplo la siguiente máscara de entrada: 00.000.000-L

Al pasar a otro campo, guardar la  tabla o cambiar de vista, Access modificará ligeramente la máscara añadiendo delante del guión la barra inclinada \; no te preocupes, lo hace para indicar a la aplicación que el carácter que viene detrás (el guión) debe aparecer tal cual.

Vuelve un momentito a la figura anterior. En ella puedes ver que hay letras del NIF que aparecen en mayúsculas, y letras en minúsculas; pues bien, con la máscara de entrada, también podemos hacer que se escriban como se escriban, siempre se muestran en mayúsculas.

El carácter > hace que todos los que se añadan detrás del mismo aparezcan en mayúsculas. En consecuencia, nuestra máscara final quedará definida como 00.000.000->L. El resultado final será el siguiente. Interesante, ¿no?

Campo NIF con máscara de entrada completa


SQL: consultas de selección

$
0
0

Ahora que ya tenemos cierta práctica con la declaración y ejecución de consultas desde la vista Diseño, vamos a avanzar en este terreno incorporando la definición de las mismas en SQL.

¿Qué es SQL?

Traduciendo su definición original Structured Query Language, podemos decir que es un Lenguaje Estructurado para Consultas. Es decir, no se trata de un lenguaje de programación, pero sí comparte algunas características con los mismos; por ejemplo, el uso palabras clave (también denominadas sentencias o cláusulas) y el uso de una sintaxis exacta.

La ventaja es que SQL se utiliza no sólo en Access sino en el resto de gestores de bases de datos; por lo que su aprendizaje te permitirá adquirir competencias y ventajas adicionales.

Diseñar en SQL

Para comenzar a ESCRIBIR  (sí, sí, estas consultas se escriben, así que olvídate del ratón) con este lenguaje, iniciaremos el proceso en la manera habitual; es decir, accede a la cinta Crear, pulsa Diseño de consulta y cuando aparezca el cuadro Mostrar tabla, cancela o pulsa Escape.

Llegados a este punto, verás que el primer icono de la cinta contextual es SQL, pulsa para entrar en el cuadro de creación. De todas formas, también puedes acceder desde el minibotón situado en la esquina inferior derecha de la aplicación.

Sentencias básicas

Dos, sin dudarlo, SELECT y FROM, de uso obligado para todas aquellas consultas que sirvan para mostrar datos en pantalla.

SELECT campo1,campo2…
indica qué campos deseas mostrar separados entre sí por comas
FROM tabla
especifica de qué tabla provienen los mismos

Por ejemplo, si tomamos como referencia una vez más la base de datos librería.mdb, y cuyo esquema de relaciones mostramos a continuación, vamos a escribir una consulta que muestre el Código, Título y Precio de cada libro.

Relaciones en la base de datos Librería

La solución será la siguiente, y para ver el resultado pulsa Ejecutar en la cinta contextual Diseño:
SELECT codlibro, titulo, precio
FROM  libros;

Un detalle a tener en cuenta, es que en caso de que el nombre del campo contenga espacios, deberá escribirse entre corchetes; por ejemplo en caso de querer utilizar un campo denominado [descuento maximo].

Mejorar el aspecto de salida

A través de dos clausulas adicionales podemos modificar fácilmente el formato del resultado; son las siguientes:
AS titulo
tras el nombre de un campo, se usa para especificar el título que aparecerá como encabezado de la columna correspondiente
ORDER BY campo
muestra el listado ordenado por dicho campo

Mira esta variante de la consulta anterior:
SELECT codlibro AS Código, titulo AS Título, precio AS PVP
FROM  libros
ORDER BY precio;

Resultado de la consulta SQL

Por defecto, el orden se aplica de la A a la Z o de menor a mayor, si lo deseas a la inversa:
SELECT codlibro AS Código, titulo AS Título, precio AS PVP
FROM  libros
ORDER BY precio DESC;

Hasta aquí nuestro primer artículo dedicado a las consultas SQL, en próximas entradas iremos viendo qué posibilidades nos ofrece este lenguaje.

SQL: consultas de selección con criterios

$
0
0
En la entrada anterior vimos la forma más básica de crear una consulta utilizando SQL, y ahora vamos a restringir el ámbito de selección de registros estableciendo para ello distintas condiciones.


La instrucción WHERE

Esta orden es la que debemos emplear en conjunción con las anteriores para indicar qué registros nos interesa visualizar.

Utilizando nuestra ya conocida base de datos librería.mdb, vamos a escribir una consulta que muestre el Código, Título y Precio de todos los libros con un importe inferior a 25 euros, ordenados de mayor a menor.

La solución será la siguiente, y para ver el resultado pulsa Ejecutar en la cinta contextual Diseño:
SELECT codlibro, titulo, precio
FROM  libros
WHERE precio<25
ORDER BY precio DESC;

El resultado que obtengas debería ser similar al que ahora puedes ver en la figura:

Resultado de consulta SQL con criterio simple

Ten en cuenta

Debes tener en cuenta el orden en el que figuran las instrucciones ya que es fundamental mantenerlo para que no se produzcan errores; fíjate que:
  1. se indican los campos a mostrar,
  2. se especifica las tablas de las que proceden,
  3. se establecen las condiciones,
  4. se asignan criterios de ordenación.



Criterios múltiples

Si sólo pudiéramos establecer condiciones simples, SQL no sería de mucha ayuda, pero afortunadamente podemos indicar varios criterios, combinándolos en una única orden WHERE. Por ejemplo, vamos a realizar una variación de la consulta anterior, para que ahora aparezcan los libros cuyo precio se sitúe entre 10 y 30 euros.

Podríamos emplear cualquiera de estas opciones:
SELECT codlibro, titulo, precio
FROM  libros
WHERE precio BETWEEN 10 AND 30
ORDER BY precio DESC;

SELECT codlibro, titulo, precio
FROM  libros
WHERE (precio >= 10) AND (precio <= 30)
ORDER BY precio DESC;

El resultado es el mismo en ambos casos: 5 registros, pero si te fijas bien hay diferencias a la hora de escribir la instrucción. Con el criterio BETWEEN sólo se indica una vez el nombre del campo, ya que SQL lo toma como una única condición; pero en el segundo caso, es necesario especificar cada uno de los filtros de manera de independiente, es decir, cada uno con su nombre de campo y su juego de paréntesis.

De hecho, podemos emplear las clausulas en inglés, que recogimos en la tabla del post Consultas con criterios I.

De momento, esto es todo; en la siguiente entrada, veremos cómo mostrar/utilizar campos situados en tablas distintas.





SQL: trabajando con campos situados en distintas tablas

$
0
0
Como lo prometido es deuda, tras un breve parón, retomamos nuestro tutorial de Access para ver cómo podemos mostrar mediante SQL campos que se encuentran en diferentes tablas relacionadas entre sí, empleando como ya es habitual nuestra base de datos librería.mdb.

Comenzaremos  por algo sencillo, simplemente una consulta que muestre el Nombre, Apellidos y Provincia de cada cliente; pero primero vamos a recordar las relaciones existentes en la base de datos:

Relaciones de la base de datos Libreria

La clave para que la consulta funcione correctamente reside en la forma de indicar qué campos de ambas tablas forman la relación, para lo cual podemos emplear dos opciones diferentes, acción que indicaremos tras especificar los campos y tablas que deseamos utilizar.


Relaciones mediante WHERE

Tras la cláusula FROM emplearemos la instrucción WHERE para indicar qué campos deben coincidir entre sí; por ejemplo:

SELECT clientes.nombre,clientes.apellidos,ciudades.nombre
FROM clientes,ciudades
WHERE clientes.codciudad=ciudades.codciudad;

Como en este caso, teníamos dos campos con la misma denominación (Nombre) ha sido necesario anteponer la tabla para indicar con cuál exactamente queríamos trabajar. El resultado debe ser similar al que ahora mostramos en la figura:

consulta SQL entre tablas relacionadas 1



Relaciones mediante INNER JOIN

Si empleamos la versión SQL en Access, podemos utilizar la instrucción INNER JOINpara indicar la relación existente, dejando WHERE para establecer criterios de filtrado adicionales; por ejemplo para el caso anterior:

SELECT clientes.nombre,clientes.apellidos,ciudades.nombre
FROM clientes
INNER JOIN  ciudades ON clientes.codciudad=ciudades.codciudad;

Fíjate ya que ahora existe algún cambio adicional ya que en FROM sólo hemos indicado una de las tablas (clientes), la otra se especifica tras INNER JOIN (ciudades) y tras ON debemos establecer los campos a coincidir.

Por supuesto, el resultado final es el mismo que en el primer caso, pero podemos mejorarlo un poquito recordando que AS nos permite incluir títulos de columnas. Por ejemplo:

SELECT clientes.nombre AS Nombre,clientes.apellidos AS Apellidos,ciudades.nombre AS Ciudad
FROM clientes
INNER JOIN  ciudades ON clientes.codciudad=ciudades.codciudad;

Consulta SQL entre tablas relacionadas con título de columnas

Además, en Access podemos emplear dos variantes para relaciones más personalizadas: INNER LEFT e INNER RIGHT.


Relaciones y criterios

Vamos a complicar ligeramente el supuesto anterior, ya que ahora sólo nos interesa mostrar los clientes de Sevilla o de Cádiz, por lo que deberemos añadir el filtro.

Para el primer caso, con la instrucción WHERE, necesitaremos escribir la condición que añadiremos a la anterior mediante AND:

SELECT clientes.nombre AS Nombre,clientes.apellidos AS Apellidos,ciudades.nombre AS Ciudad
FROM clientes,ciudades
WHERE (clientes.codciudad=ciudades.codciudad) AND (ciudades.nombre IN("Sevilla","Cádiz"));

Mediante INNER JOIN sólo tendremos que incluir tras la misma la instrucción WHERE correspondiente, tal y como vimos en la entrada dedicada a Consultas SQL de selección con criterios, quedando su escritura como te mostramos a continuación:

SELECT clientes.nombre AS Nombre,clientes.apellidos AS Apellidos,ciudades.nombre AS Ciudad
FROM clientes
INNER JOIN  ciudades ON clientes.codciudad=ciudades.codciudad
WHERE ciudades.nombre IN("Sevilla","Cádiz");

En ambos casos, el resultado sólo mostrará cuatro registros que cumplen la condición especificada:

Consulta SQL entre tablas relacionadas con criterio


SQL: cómo evitar resultados duplicados

$
0
0
En los artículos anteriores hemos visto cómo obtener mediante SQL los datos de una o más tablas relacionadas entre sí. Sin embargo, es posible que en algún momento, la definición empleada de cómo resultado, datos repetidos.

Por ejemplo, utilizando nuestra base de datos librería.mdb, vamos a crear una consulta que muestre el nombre de todas las editoriales con ventas; para lo cual, escribiremos el siguiente código:

SELECT editorial.nombre AS Proveedor
FROM Editorial INNER JOIN (Libros INNER JOIN Facturas ON Libros.codlibro=Facturas.codlibro) ON Editorial.codeditorial=Libros.codeditorial;

Fíjate cómo hemos definido las dos relaciones: primero la de Editorial a Libros y a continuación y entre paréntesis, la de Libros a Facturas. Es decir, cuando tengas más de una relación, la segunda y posteriores deberán anidarse con paréntesis adecuadamente.

La instrucción anterior, provocará el siguiente resultado por pantalla al ejecutar la consulta:

Nombre de las editoriales de los libros que se han vendidos

Como puedes ver, aparece una línea por cada una de las ventas efectuadas, pero existen nombres repetidos, lo que no parece demasiado lógico. Para evitarlo, sólo necesitamos añadir una de las siguientes cláusulas a la instrucción anterior, justo detrás de SELECT.

DISTINCT

Provoca que no aparezcan los registros duplicados, en función de los campos que queremos mostrar en la consulta.

DISTINCTROW

Como la anterior, elimina los registros duplicados, en función de los campos incluidos en la consulta, aunque no aparezcan en el resultado de la misma. Es decir, evalúa la coincidencia completa del registro, no sólo de los campos a mostrar

En nuestro ejemplo, el resultado es el mismo con ambos términos, el siguiente:

Nombre de las editoriales de los libros que se han vendidos sin duplicados


Diferencias de resultados

Para aportar mayor claridad, hemos añadido a la tabla Clientes el último registro que se muestra en la siguiente imagen, correspondiente al cliente Francisco Márquez Sierra:

Adición de nuevo registro a la tabla clientes

Ahora vamos a escribir una consulta en la que aparezcan los nombres de nuestros clientes de tres formas distintas para apreciar mejor las diferencias entre el uso o no de las diferentes cláusulas.

SELECT nombre FROM clientes;
Resultado sin control de duplicados
Muestra los nombres de los 11 clientes repitiendo Francisco
SELECT DISTINCT nombre FROM clientes;
Resultado de consulta controlando los duplicados con DISTINCT
Muestra sólo 10 nombres, ya que sólo evalúa las repeticiones en el campo Nombre, por lo que Francisco se muestra una única vez al estar repetido.
SELECT DISTINCTROW nombre FROM clientes;
Resultado de consulta controlando los duplicados con DISTINCTROW
De nuevo aparecen los 11 nombres, ya que DISTINCTROW comprueba que existan registros completos duplicados.


SQL: funciones agregadas

$
0
0
El lenguaje SQL incorpora una serie de funciones que nos permiten obtener distintos resultados numéricos al ejecutar consultas.

Funciones agregadas

Son las siguientes:
Count:
muestra el número de registros que devuelve una consulta.
Avg:
muestra el promedio de los valores evaluados.
Sum:
muestra la suma de los valores evaluados.
Max:
muestra el valor más alto de los valores evaluados.
First:
muestra el primer valor entre los valores evaluados, teniendo en cuenta el método de ordenación aplicado.
Last:
muestra el último valor entre los valores evaluados, teniendo en cuenta el método de ordenación aplicado.
Stdev:
muestra la desviación estándar de los valores evaluados, a partir de una muestra de la población.
Stdevp:
muestra la desviación estándar de los valores evaluados, teniendo en cuenta toda la población.
Var:
muestra la varianza de los valores evaluados, a partir de una muestra de la población.
Varp:
muestra la varianza de los valores evaluados, teniendo en cuenta toda la población.

Aplicación

Siguiendo con la base de datos Librería, vamos a suponer que deseamos saber cuántos libros tenemos dados de alta. La  consulta a escribir podría ser la siguiente teniendo en cuenta que hemos adaptado el encabezado de la columna:


SELECT COUNT(*) AS [Libros registrados]
FROM Libros;

Que dará como resultado un único valor que puedes ver en la imagen: 10, que significa que en la tabla Libros hay 10 registros.

Consulta SQL con resumen


Lo realmente interesante de estas funciones, es poder obtener resúmenes por grupos de datos. Por ejemplo, vamos a modificar la consulta anterior para que nos indique cuántos libros hay de cada editorial, para lo que tendremos que añadir al final del todo la cláusula Group By:

SELECT Editorial.Nombre as Editorial, COUNT(Libros.Codlibro) AS [Libros registrados]
FROM Libros INNER JOIN Editorial ON Libros.Codeditorial=Editorial.codeditorial
GROUP BY Editorial.Nombre;

Consulta SQL con datos agrupados


Por supuesto, este tipo de consultas sigue admitiendo las cláusulas que  comentamos en anteriores artículos, pero Group by deberá aparecer en último lugar. En la siguiente consulta, hemos indicado como condición que sólo queremos ver los datos referentes a las editoriales cuyo nombre comience por A; fíjate en el orden de las distintas cláusulas.

SELECT Editorial.Nombre as Editorial, COUNT(Libros.Codlibro) AS [Libros registrados]
FROM Libros INNER JOIN Editorial ON Libros.Codeditorial=Editorial.codeditorial
WHERE Editorial.Nombre LIKE "A*"
GROUP BY Editorial.Nombre;

Consulta SQL agrupada con filtro

Criterios sobre la función agregada

Si, a diferencia del caso anterior, quisiéramos aplicar la condición en el propio resultado del conteo, no podemos usar Where, en su lugar habrá que emplear la cláusula Having.

Por ejemplo, vamos a suponer que queremos saber los libros que tiene cada editorial siempre que tengan más de dos unidades. La instrucción a escribir sería:

SELECT Editorial.Nombre as Editorial, COUNT(Libros.Codlibro) AS [Libros registrados]
FROM Libros INNER JOIN Editorial ON Libros.Codeditorial=Editorial.codeditorial
GROUP BY Editorial.Nombre
HAVING COUNT(Libros.Codlibro)>=2;


Y el resultado para este ejemplo, en el que ya no aparece Planeta:

Consulta SQL con criterio en la función agregada



SQL: Operaciones con registros

$
0
0
Vamos a dedicar el último post de la serie SQL a definir las consultas que podemos utilizar para realizar operaciones básicas con los registros de una tabla.

INSERT

Nos permite añadir un nuevo registro a una tabla y su sintaxis es la siguiente:
INSERT INTO tabla (lista de campos)
VALUES (lista de valores)


Utilizando, como viene siendo habitual, la base de datos Libreria.mdb, vamos a añadir un registro a la tabla Clientes que, actualmente, tiene los siguientes registros:

Tabla Facturas


Ahora, escribimos y ejecutamos la siguiente consulta:
INSERT INTO Facturas (fecha,numcliente,codlibro)
VALUES (#13-3-13#,2,10)


Como el primer campo es Autonumérico, ha sido necesario darle un valor en la instrucción. El resultado, lo puedes ver en la figura:

Tabla Facturas con nuevo registro


UPDATE

Se utiliza para modificar registros de una tabla y ésta es su sintaxis:
UPDATE tabla 
SET campo1=valor/expresión, SET campo2=valor/expresión...
WHERE condición


Ahora vamos a actualizar la tabla Libros actualizando el Precio de los mismos. El valor actual de los ejemplares es el siguiente:

Tabla Libros

Nuestro objetivo va a ser rebajar el precio un 10% para animar nuestras ventas, para lo que escribimos:
UPDATE Libros
SET precio=precio-(precio*0.10);


En este caso, al ser una rebaja genérica no hemos indicado ninguna condición y el resultado es:

Tabla Libros tras la actualización de precios



DELETE

Elimina los registros de una tabla que cumplan con las condiciones especificadas, siendo su sintaxis la que describimos a continuación:
DELETE FROM tabla
WHERE condición


Siguiendo con la tabla Libros, vamos a suponer que hemos decidido vender sólo libros económicos, por lo que deseamos eliminar los que valgan más de 20 euros. Entonces, tendremos que utilizar la siguiente consulta:
DELETE FROM Libros
WHERE precio>20;

Al ejecutar, Access nos muestra un cuadro de mensaje donde nos informa que se van eliminar 2 registros; sin embargo, tras Aceptar, aparece otro mensaje pero de error, ya que al no tener activada la Eliminación en cascada, y existir ventas asociadas no es posible eliminar dicha información.

Se van a eliminar 2 registros





Propiedades de formulario - Formato

$
0
0
En este post vamos a comentar algunas de las propiedades generales que pueden afectar al aspecto de un formulario en Access.

Acceso

La forma de llegar a la lista de propiedades generales del formulario puede variar según la versión de Access que estés empleando. En cualquier caso, el punto de partida siempre es el mismo, la Vista Diseño.
Si estás en Access 2010, puedes emplear la opción Propiedades del formulario del menú contextual que aparece cuando haces click con el botón derecho del ratón en cualquier parte del formulario; si parece que no está, no te apures, es que la lista es grande y está colocada en penúltimo lugar ;)
En cualquier caso, también puedes pulsar el botón Hoja de propiedades de la cinta Diseño, y después escoger Formulario en la lista desplegable de la zona superior:

Propiedades de formulario
Como puedes comprobar fácilmente, existe una gran cantidad de propiedades y si no recuerdas para que sirve alguna en concreto, no te preocupes, ya que si haces un clic en la misma, podrás ver una explicación en la esquina inferior izquierda de la barra de estado. Por ejemplo, la propiedad Vista predeterminada nos ofrece la siguiente explicación:

Ayuda de propiedad de formulario

Formato

Esta ficha contiene todas las propiedades relacionadas con el aspecto final del formulario, y de ella vamos a destacar las siguientes:
PermitirVistaXXXXX
Con el valor Sí, será posible escoger el modo de visión correspondiente; con No, la modalidad quedará anulada para su uso con el formulario actual.
Imagen
Al pulsar en el botón … que aparece en el extremo derecho, se abrirá un cuadro de diálogo en el que podrás escoger una imagen para que aparezca como fondo del formulario.
Si tras asignar una imagen deseas eliminarla, es tan fácil como seleccionar el nombre que aparece y suprimirlo.
Distribución de la imagen
Modo de alineación de la imagen anterior en el fondo.
Modo de tamaño de la imagen
Los valores que mejor resultado dan son Zoom y Extender, de forma que el tamaño de la imagen se adapte al del formulario.
Ancho
Para establecer una anchura exacta.
Ajuste de tamaño automático
Para el valor Sí, el tamaño se adaptará para mostrar un registro o una página completa.
Ajustar a la pantalla
Sí reduce el tamaño del formulario para que se adapte al espacio libre de la pantalla.
Estilos de los bordes
Permite que éstos desaparezcan o que el usuario los pueda ajustar.
Selectores de registro
Muestra/oculta el selector de registro, es decir, el rectángulo gris con flecha que aparece en la zona de la izquierda.
Botones de navegación
Muestra/oculta los botones para avanzar y retroceder por los registros que aparecen en la zona inferior del formulario.
Separadores de registro
Muestra/oculta una línea de separación en los formularios continuos.
Barras de desplazamiento
Activa/desactiva selectivamente las barras derecha e inferior.
Cuadro de control
Activa/desactiva el uso del icono que aparece a la izquierda del título del formulario.
Botón Cerrar
Activa/desactiva el uso de la X para cerrar el formulario.
Botones Minimizar Maximizar
Activa/desactiva el cambio de tamaño de la ventana.
Movible
Permite/no permite cambiar la posición del formulario en la pantalla.
Como ves, existen otras propiedades en esta ficha, pero hemos comentado las más utilizadas y las de más fácil acceso para todo el mundo. En próximos artículos, trataremos las otras fichas disponibles.

Propiedades de formulario - Datos

$
0
0
Siguiendo con las propiedades generales que afectan al funcionamiento de un formulario en Access, vamos a adentrarnos ahora en las relacionadas con los datos que se mostrarán en el mismo.

Acceso

Como comentamos en el primer artículo dedicado a las Propiedades de formularios, podemos acceder a esta ficha desde la vista Diseño y, el cuadro que Access nos mostrará deberá ser similar al siguiente:
Propiedades de formulario - Datos

Datos

Como ya hemos comentado, esta ficha contiene las propiedades relacionadas con los datos que se muestran y/o gestionan mediante el formulario actual, y entre ellas, vamos a destacar las de uso más habitual:
Origen del registro
Se utiliza para señalar de qué tabla, tablas o consultas se tomarán los datos a gestionar.
Permite elegir alguno de los objetos ya creados en la lista desplegable, o bien, definir y ejecutar directamente una consulta SQL.
En la muestra, podemos apreciar que el formulario utiliza los datos de la tabla Clientes.
Valores predeterminados de búsqueda
Por defecto, indica que SI se cargarán los valores predeterminados establecidos para los distintos campos al crear las tablas.
Filtro
Permite definir una condición o criterio que restringa el acceso a determinados datos.
Por ejemplo, en la figura precedente, sólo aparecerán los registros de los clientes que no hayan indicado ningún teléfono.
Filtro al cargar
Con el valor Sí, al abrir el formulario, se aplicaría de forma automática el filtro definido en la propiedad anterior.
Ordenar por
Si nos interesa que los datos aparezcan clasificados por un campo, distinto de la clave principal, lo indicaremos aquí.
Por defecto, el orden establecido será de la A a la Z y/o de Menor a Mayor, para aplicar orden inverso, escribiremos tras el campo la cláusula DESC.
Ordenar al cargar
Se utiliza para aplicar el orden anterior automáticamente al cargar el formulario.
Entrada de datos
Cuidado, si cambias el valor de esta propiedad a Sí, el formulario actual sólo servirá para introducir nuevos registros. De hecho, al cargarse ya aparecerán directamente los campos en blanco listos para darles contenido.
Permitir agregar
Con el valor Sí, indica que sí es posible emplear el formulario para añadir nuevos registros a las tablas empleadas, además de poder consultarlos.
Es decir, con este valor y si se muestran los botones de desplazamiento, verás que el botón del asterisco aparecerá activado.
Permitir eliminación
Admite o no, poder borrar registros de la tabla o tablas mediante el formulario actual.
Permitir ediciones
Para definir si es posible o no modificar los datos que aparecen en pantalla.
Permitir filtros
Indica si se puede o no aplicar filtros al formulario actual. Ten cuidado, ya que puede provocar conflictos con las propiedades de definición y carga de filtros que acabamos de comentar.


Integrando la activación/desactivación de las distintas propiedades que hemos tratado es posible crear formularios que, por ejemplo, sólo sirvan para efectuar consultas, otros sólo para añadir nuevos registros, modificaciones…, o todo combinado, según nos interese en cada caso.

Propiedades de formularios - Eventos

$
0
0
En esta ocasión vamos a centrarnos en la ficha Eventos, que también podemos encontrar al solicitar ver las propiedades generales asociadas con los formularios.

Acceso

Recuerda que, para acceder a las Propiedades de formulario, lo haremos desde la vista Diseño, y tras hacer clic en la ficha Eventos, Access mostrará una ventana similar a la de la figura:

Propiedades de formulario - Eventos

Definición

Un evento es una acción determinada que se produce en relación con algún elemento. En la imagen anterior, podemos ver la lista de acciones que se pueden ejecutar sobre un formulario, como por ejemplo: Cargar el formulario, Mover la rueda del ratón, Deshacer, Pulsar una tecla

Objetivo

Entonces, ¿para qué sirven los eventos? La verdad es que por sí solos para nada, la idea es asociar procedimientos o macros que se ejecuten al realizar una determinada acción.

Por ejemplo, podemos prepararlo para que Al cargar el formulario, aparezca un cuadro de mensaje indicando al usuario que revise su ortografía al escribir la información.

Procedimiento

Existen dos formas de “activar” un evento. Si ya tenemos previamente creado el procedimiento o macro que deseamos asociar, entonces sólo nos queda desplegar la lista del evento que nos interesa y seleccionarlo.
Activar evento - Primera forma

Pero si lo deseamos crear en el mismo momento, en lugar de utilizar la lista desplegable, haremos clic sobre el botón con los tres puntos que aparece a la derecha del todo. Entonces, Access nos mostrará un cuadro de diálogo con las diferentes opciones a nuestro alcance. Para el ejemplo que estamos creando, elegiremos el Generador de macros.

En el entorno de Diseño de macros para Access 2010, desplegamos la lista Agregar nueva acción, y pulsamos CuadroDeMensaje. Nosotros, hemos hecho la siguiente propuesta:

Crear macro para asociarla con evento

Ahora sólo queda guardar la macro y el formulario, y cerrar este último. Tras efectuar estas acciones, vamos a probar si todo funciona correctamente. Para ello, simplemente abre el formulario correspondiente, y si has ejecutado todos los pasos correctamente, verás que en pantalla aparecerá un cuadro similar al siguiente:

Ejemplo de evento al cargar formulario

Después de pulsar Aceptar, el formulario se cargará en pantalla en su forma habitual.

Construir un Panel de control

$
0
0
Es relativamente habitual construir una base de datos para que sea manejada por otras personas con menos conocimientos. En tal caso, nos interesa limitar el acceso a los distintos objetos y datos, minimizando la posibilidad de cometer un error en caso de no contar con suficientes conocimientos.
Una buena opción pasa por crear un formulario que actúe como Panel de control  o Formulario de Inicio, incluyendo en el mismo botones o enlaces a los distintos objetos (ya sean tablas, consultas, informes u otros formularios) que nos interese.

A continuación vamos a ver cómo llevar a cabo ese proceso de manera general, tomando como punto de partida la base de datos Catering.

Punto de partida

Dado que la ventana o formulario de inicio no mostrará dato alguno, lo ideal es comenzar partiendo completamente desde cero; es decir, con el botón Formulario en blanco de la cinta Crear:

Formulario en blanco

Como se aprecia en la figura, Access inserta un formulario con el fondo en blanco pero preparado para mostrar información, ya que puedes ver que incluye el selector de registros a la izquierda y los botones de navegación en la parte inferior.

Por lo tanto, una de nuestras tareas será configurar correctamente las Propiedades de Formato, para que estos elementos desaparezcan y el resto se adapten a lo que necesitemos.

Un poco de diseño

Para comenzar a dar un aspecto más llamativo a nuestro panel de control, hemos activado la vista Diseño. Una vez allí, a través de la cinta contextual Organizar, hemos pulsado el icono Encabezado o pie de formulario, y después hemos reducido el espacio inferior ya que no deseamos mostrar dicha sección, aunque también puedes pedir sus propiedades e indicar No en Visible.

Pie de página desactivado

A continuación, hemos asignado colores diferentes al Encabezado y a la zona de Detalle y, con la herramienta Etiqueta, hemos colocado el nombre de la empresa en el espacio superior. Además, se han configurado distintas propiedades de formato y asignado nombre. El resultado previo puedes verlo a continuación:

Formulario con diseño base

Acceso a elementos

Una  vez preparada la base ya sólo nos queda insertar los diferentes botones, etiquetas…, es decir, los distintos controles que permitirán al usuario de la base de datos acceder a las tablas, formularios, consultas…

Si no tienes práctica suficiente para crear tus propias macros y asociarlas con botones de comando, recuerda que Access te puede ayudar con sus asistentes. Por ejemplo, vamos a efectuar esta operación para incorporar un botón que abra el formulario de Eventos.

Comprueba si tienes la varita mágica lista para su uso en la cinta de diseño, será así si el icono aparece enmarcado en un rectángulo naranja; si no fuera el caso, sólo tienes que pulsarlo. Ahora, haz clic sobre Botón y dibuja en el formulario el tamaño deseado; al soltar el ratón, Access iniciará el asistente.

Asistente para botones

En la categoría Operaciones con formularios, hacemos click en Abrir formulario y pulsa Siguiente. Tras elegir el formulario Eventos y pulsar Siguiente, indicamos que deseamos mostrar todos los registros y avanzamos. Especificamos el texto Eventos y pulsamos en Finalizar, ya que no deseamos modificar el nombre automático asignado al control.

De esta forma, puedes insertar atajos para abrir formularios, ejecutar consultas, imprimir informes…, en fin todo lo que vayas a permitir que se haga desde este panel de control.

Tras añadir más botones, marcos y etiquetas decorativas, aquí tienes nuestra propuesta final.

Panel de control terminado

En el siguiente artículo, veremos cómo activar el Panel de Control para que se muestre automáticamente al abrir la base de datos y no se muestre el resto de objetos.

Activar el panel de control

$
0
0
En el último post vimos cómo Construir un panel de control; sin embargo, para que éste sea realmente útil, necesitaremos activarlo y cerrar el resto de la base de datos, de forma que el usuario sólo pueda acceder a los elementos que se incluyan en el Formulario de inicio.

Activación

Para llevar a cabo el proceso en Access 2010 haremos clic en Opciones dentro del menú Archivo. La clave de todo lo que nos interesa definir en ese momento se encuentra en la categoría Base de datos actual.

Las características que aparecen al comienzo del apartado Opciones de aplicación resultarán básicas:

Título de la aplicación: Literal que aparecerá en la Barra de título de Access
Icono de la aplicación: Icono personalizado. Recuerda que deber ser un archivo gráfico con extensión ico.
Mostrar formulario: Aquí es donde elegiremos nuestro Panel de control.

Opciones de la base de datos actual

Estas serían las opciones mínimas recomendables, pero ésto no es suficiente si queremos restringir la utilización de los diferentes elementos de la base de datos. Para proteger/cerrar el acceso a la misma, avanzaremos en el cuadro de diálogo hasta el apartado Navegación.

Opciones de la base de datos actual - Navegación

Tras desactivar Mostrar panel de navegación, así como los menús no restringidos y las barras de herramientas integradas, habremos limitado el uso de la mayoría de funciones que Access nos ofrece de manera general.

Ahora sólo queda Aceptar los cambios, a lo que Access mostrará un mensaje indicando que es necesario cerrar y volver a abrir la base de datos para que éstos se activen.

Tras la reapertura, esta es la imagen que Access nos ofrece, como puedes ver sólo se muestra el Panel de control, y prácticamente no hay opciones disponibles para crear o modificar elementos, ni siquiera para cambiar de vista.

Base de datos con panel de control activado

Un dato a tener en cuenta, es que ahora mismo es posible acceder de nuevo a las Opciones de privacidad en Archivo y restaurar la “estructura habitual de la aplicación”.

En un entorno profesional, este formulario se suele crear sobre un clon o espejo de la base de datos real, y normalmente, se diseña y activa una cinta personalizada con las opciones que sí vamos a permitir.


Creación de relaciones múltiples entre dos tablas

$
0
0
Aunque no resulta muy habitual sí es posible que un único campo de una tabla A se relacione al mismo tiempo con dos o tres de otra tabla B.

Supuesto de partida

Vamos a tomar como ejemplo una base de datos que intenta mecanizar una empresa de autobuses urbanos, como la que hay en cualquier ciudad. Por cada línea queremos controlar la siguiente información:
  • Número de línea
  • Parada inicial
  • Parada final
  • Hora del primer autobús
  • Hora del último autobús

Piensa que pueden existir líneas circulares que, por lo tanto, tengan la misma parada inicial y final. Además, tanto las paradas iniciales como finales pueden ser compartidas por más de una línea.

Para este planteamiento se han creado dos tablas específicas dentro del conjunto de toda la estructura: Líneas y Paradas

Tablas a relacionar

Relaciones

Nuestro objetivo ahora es efectuar las relaciones entre codparada y paradain/paradafin. Comenzaremos realizando la primera de ellas de la forma habitual, activando las opciones Exigir integridad referencial y Actualizar en cascada los campos relacionados.

Planteamiento inicial de las relaciones

A continuación, arrastramos codparada hasta paradafin y entonces Access mostrará el siguiente cuadro al detectar la existencia de una relación previa.

Ya existe una relación

La clave reside en contestar NO. Entonces se abrirá un nuevo cuadro Modificar relaciones donde marcaremos las opciones antes comentadas. Tras Aceptar, podremos comprobar cómo Access ha creado un clon llamado PARADAS_1, a partir de la tabla original.

Relaciones múltiples efectuadas

Sin embargo, el duplicado sólo existe dentro del ámbito de las Relaciones, en la lista de objetos de tipo Tabla no hay ningún cambio.


El planteamiento que acabamos de exponer se podría aplicar, por ejemplo, para los equipos de un partido de fútbol, los tenistas de un partido, la terna de toreros...

En el próximo artículo, veremos cómo debemos gestionar este tipo de relaciones al efectuar consultas e informes.
Viewing all 30 articles
Browse latest View live