Curso de Diseño de Bases de Datos Relacionales

Anuncio
© Rodolfo Gallardo-Rosales
Curso de Diseño de Bases
de Datos Relacionales
Programa Nacional de Superación Académica
SEP - SEIT - DGETI
Guadalajara, Jalisco.
Noviembre, 2000
Copyright© 2000 por Rodolfo Gallardo-Rosales
Presentación
Diseño de Bases de Datos Relacionales
1
© Rodolfo Gallardo-Rosales
Modelos relacionales, características más
importantes:
1. Las entradas en la tabla tienen un solo valor por
lo que la intersección de un renglón con una columna tiene un solo valor.
2. No existen dos filas en la tabla que sean idénticas.
3. Todas las entradas de cualquier columna son de
un solo tipo (nombres de clientes, fechas, etc.)
4. La información en las bases de datos son representados como datos explícitos.
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
2
© Rodolfo Gallardo-Rosales
Estructura de las bases de datos
relacionales:
1. Modelo relacional de datos: está representado por una colección de relaciones almacenadas. Cada registro se implanta como
un archivo almacenado distinto.
2. Submodelo de datos: los esquemas externos de un sistema
relacional; cada uno consta de uno a más escenarios (vistas)
para describir los datos requeridos por una aplicación dada.
3. Esquema de almacenamiento: cada tabla base se implanta como
un archivo almacenado.
4. Sublenguaje de datos: es un lenguaje de manejo de datos para
el sistema relacional, el álgebra relacional y cálculo relacional,
ambos lenguajes son "relacionalmente completos".
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
3
© Rodolfo Gallardo-Rosales
Lenguajes de consulta formales:
ƒ Son los lenguajes en el que los usuarios solicitan información
de la base de datos
ƒ pueden clasificarse como procedimentales y no procedimentales
ƒ procedimental: el usuario da las instrucciones al sistema para
que realice una secuencia de operaciones en la base de datos
para calcular el resultado deseado
ƒ no procedimental: el usuario describe la información deseada
sin dar un procedimiento específico para obtener dicha información
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
4
© Rodolfo Gallardo-Rosales
(continuación)
Las operaciones seleccionar, proyectar y renombrar, son denominadas operaciones unitarias ya que operan sobre una tabla.
Seleccionar: selecciona tuplas (filas) que satisfacen una instrucción (condición) dada de una tabla. Se representa por medio de paréntesis.
(nombre_tabla
WHERE condición);
puede incluir condiciones de igualdad como =,=,<,>,>=,<=,además
que se puede hacer una oración más compleja usando los
conectores and (^) y or (v).
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
5
© Rodolfo Gallardo-Rosales
(continuación):
Proyectar.
Consiste en identificar las columnas (atributos en el modelo E-R)
que nos interesa conocer. Se representa por medio de corchetes. Si
este se omite indicara que se desea obtener todas las columnas de
la tabla en cuestión.
(nombre_tabla WHERE condición) [Nombre_atributo];
Producto cartesiano:
Consiste en multiplicar todas las tuplas entre tablas, obteniendo
como resultado una tabla que contiene todas las columnas de ambas tablas. Se especifica con la orden TIMES.
Nombre_tabla TIMES Nombre_tabla;
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
6
© Rodolfo Gallardo-Rosales
(continuación):
Join.
Consiste en obtener el producto (multiplicación) de todas las tuplas
de una tabla con las de la otra, generando como resultado una nueva tabla. Se representa con la orden JOIN.
La orden Join es colocada entre las dos tablas a multiplicar después de que la primera especifica la operación de selección y proyección.
(Tabla)[atributo] JOIN (Tabla)[Atributo];
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
7
© Rodolfo Gallardo-Rosales
Lenguajes de consulta comerciales:
proporciona una interfaz más amigable al usuario. Un ejemplo de
este tipo de lenguaje es el SQL, (Structured Query Languaje).
La estructura básica de una expresión en SQL contiene 3 partes,
Select, From y Where.
Select se usa para listar los atributos que se desean en el resultado
de una consulta.
From, Lista las relaciones que se van a examinar en la evaluación
de la expresión.
Where, es la definición de las condiciones a las que puede estar
sujeta una consulta.
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
8
© Rodolfo Gallardo-Rosales
(Continuación):
La consulta típica de SQL tiene la siguiente forma:
Select A1,A2,A3...An
From r1,r2,r3...rm
Where Condición(es)
Donde:
A1,A2,A3...An: Representan a cada atributo(s) o campos de las
tablas de la base de datos relacional.
R1,r2,r3...rm: Representan a la(s) tabla(s) involucradas en la consulta.
Condición: Es el enunciado que rige el resultado de la consulta.
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
9
© Rodolfo Gallardo-Rosales
Introducción al MS-Access:
Cuando se arranca Access, lo primero que se obtiene es un cuadro
de diálogo que nos invita a abrir una base de datos, o a crear una
nueva, para el propósito del curso, eligiremos una nueva:
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
10
© Rodolfo Gallardo-Rosales
Introducción al MS-Access:
Escribiremos como nombre de la base de datos: Escuela y aceptaremos el cuadro de diálogo. Access colocará automáticamente al
archivo la extensión MDB. Seguidamente, aparecerá ante nuestros
ojos la pantalla inicial para empezar a crear nuestra base de datos:
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
11
© Rodolfo Gallardo-Rosales
Introducción al MS-Access:
Objetos de la Base de Datos
Tablas: unidad donde crearemos el conjunto de datos de nuestra
base de datos. Estos datos estarán ordenados en columnas verticales. Aquí definiremos los campos y sus características. Más adelante veremos qué es un campo.
Consultas: aquí definiremos las preguntas que formularemos a la
base de datos con el fin de extraer y presentar la información resultante de diferentes formas (pantalla, impresora...)
Formulario: elemento en forma de ficha que permite la gestión de
los datos de una forma más cómoda y visiblemente más atractiva.
Informe: permite preparar los registros de la base de datos de forma
personalizada para imprimirlos.
Macro: conjunto de instrucciones que se pueden almacenar para
automatizar tareas repetitivas.
Módulo: programa o conjunto de instrucciones en lenguaje Visual
basic
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
12
© Rodolfo Gallardo-Rosales
Introducción al MS-Access:
Una base de datos comienza con el diseño de una tabla. Para ello,
es necesario plantearse primero qué datos necesitamos. En nuestro ejemplo, necesitaremos:
Matrícula
Nombre, apellidos, dirección, etc, del alumno
Actividad que realiza
Cuota mensual
Observaciones
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
13
© Rodolfo Gallardo-Rosales
Introducción al MS-Access:
Evidentemente que esta base de datos es demasiado sencilla, pero
nos servirá para nuestro objetivo.
Vamos a ver primero unos conceptos básicos en el diseño de una
BD (en adelante abreviaremos de esta forma la palabra Base de
Datos).
Campo: unidad básica de una base de datos. Un campo puede ser,
por ejemplo, el Nombre de una persona
Registro: conjunto de campos. Un registro vendría a ser algo así
como una ficha.
Base de datos: conjunto de registros total.
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
14
© Rodolfo Gallardo-Rosales
Diseño y creación de tablas de datos:
Observemos la siguiente ilustración:
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
15
© Rodolfo Gallardo-Rosales
Diseño y creación de tablas de datos:
Texto: para introducir cadenas de caracteres hasta un máximo de 255
Memo: para introducir un texto extenso. Hasta 65.535 caracteres
Numérico: para introducir números
Fecha/Hora: para introducir datos en formato fecha u hora
Moneda: para introducir datos en formato número y con el signo monetario
Autonumérico: en este tipo de campo, Access numera automáticamente
el contenido
Sí/No: campo lógico. Este tipo de campo es sólo si queremos un contenido del tipo Sí/No,Verdadero/Falso, etc.
Objeto OLE: para introducir una foto, gráfico, hoja de cálculo, sonido,
etc.
Hipervínculo: podemos definir un enlace a una página Web
Asistente para búsquedas: crea un campo que permite elegir un valor de
otra tabla o de una lista de valores mediante un cuadro de lista o un
cuadro combinado.
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
16
© Rodolfo Gallardo-Rosales
Diseño y creación de tablas de datos:
Antes de guardar la tabla vamos a ver qué es un campo clave.
Un campo clave es un campo con una característica especial (la clave)
que hace que ese campo no se repita en ningun registro de la BD. Un
campo clave incrementa además la velocidad de los procesos del tipo
Consultas o Formularios. Lógicamente, no podemos introducir como
campo clave el campo Nombre, por ejemplo.
Selecciona con un Click la fila del campo Nombre (el cuadradito gris a la
izquierda del nombre) de forma que se seleccione toda la fila. Después,
pulsa un Click en el botón Clave principal situado en la barra de menús.
Aparecerá como aquí:
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
17
© Rodolfo Gallardo-Rosales
Diseño y creación de tablas de datos:
La forma de introducir datos es sumamente sencilla:
Haz Click en el botón derecho, Abrir
Aparece una pantalla en forma de tablas de columnas (al estilo de Excel)
donde podemos introducir los datos de los campos. Para desplazarnos,
pulsaremos la tecla de tabulación o un click en la siguiente casilla. Para
el primer campo no hace falta escribir nada, ya que es autonumérico.
Introduce algunos registros para probar. Para pasar de un registro a
otro, simplemente pulsa Intro.
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
18
© Rodolfo Gallardo-Rosales
Ejercicio práctico:
Antes de comenzar a crear una base de datos algo más compleja que la
de nuestro primer ejemplo, convendría establecer un croquis o borrador
en papel de los objetivos de la misma. Si es una base de datos para otra
persona o empresa, es conveniente pirmero hablar con los que van a
utilizar la BD para determinar qué uso se va a dar de la misma. Si fuese
por ejemplo una base de datos para gestionar un comercio, estas preguntas podrían ser:
- Posibilidad de introducir, modificar, consultar y listar los datos
- Informes sobre artículos más vendidos
- Etiquetas postales para clientes
- Existencias de artículos
- Pedidos a proveedores, etc
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
19
© Rodolfo Gallardo-Rosales
Ejercicio práctico:
La BD que construiremos a continuación tratará de gestionar una ficticia
empresa, "MI CASITA" dedicada al alquiler de propiedades. Esta empresa posee dos oficinas situadas en MTY y GDL que abarcarán propiedades del Estado de Jalisco. Utilizando el ejemplo anterior, ¿qué necesitaremos para construir la DB?
Datos del cliente (Nombre, apellidos, etc...)
Datos de la propiedad (Tipo de propiedad, metros cuadrados, dirección,
número de aseos, etc)
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
20
© Rodolfo Gallardo-Rosales
Ejercicio práctico:
Supongamos que hemos hecho un estudio de la situación y decidimos
incluir los siguientes campos en la BD:
- Código de la propiedad (que identificará a la propiedad alquilada)
- Nombre, apellidos, CURP, y dirección
- Fecha de alquiler del contrato
- Fecha de expiración del contrato
- Alquiler mensual que paga el cliente
- Tipo de propiedad (Casa, apartamento, chalet...)
- ¿Tiene cochera?
- Número de accesos, habitaciones, dirección de la propiedad, ciudad,
estado y Código postal
- Superficie en m/2
- Extras (observaciones, extras instalados, situación privilegiada, etc...)
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
21
© Rodolfo Gallardo-Rosales
Ejercicio práctico:
Crea una BD nueva desde la opción Archivo - Nueva base de datos y
colócale como nombre: MI CASITA
Pulsa en el botón Nuevo y escoge la opción Vista diseño
A continuación crea los siguientes campos:
Hemos colocado como campo clave el campo Código propiedad. De esta
forma nos aseguramos que no repetimos dos veces un mismo código.
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
22
© Rodolfo Gallardo-Rosales
Ejercicio práctico:
Fíjate que a medida que vamos introduciendo nuevos campos, nos aparece en la parte inferior de la pantalla una ventana especial:
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
23
© Rodolfo Gallardo-Rosales
Ejercicio práctico:
Desde esta ventana podemos ampliar y mejorar las características de cada campo. Sus
opciones son:
Tamaño del campo: define el tamaño máximo de caracteres que podemos introducir.
Hasta 255
Formato: dependiendo del tipo de campo, podemos escoger un formato.
Máscara de entrada: access coloca una serie de signos automáticamente para facilitarnos la introducción de los datos.
Título: se utiliza para dar un título al campo para posteriormente utilizarlo en formularios
Valor predeterminado: si deseamos que por defecto este campo contenga un valor que
se repite a menudo para no tener que teclearlo.
Regla de validación: podemos obligar al usuario a que introduzca los datos según unos
criterios.
Texto de validación: cuando se incumplen las reglas de validación al introducir los datos, aparece un texto explicativo. Desde aquí podemos definir qué texto aparecerá.
Requerido: si esta opción está en Sí, el usuario está obligado a introducir datos.
Permitir logitud cero: si esta opción está en Sí, se permite la introducción de cadenas de
longitud cero.
Indexado: los campos indexados permiten acelerar las búsquedas. Podemos hacer que
un dato se repita o no en la tabla con las opciones permitir duplicado si o no.
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
24
© Rodolfo Gallardo-Rosales
Ejercicio práctico:
A continuación, coloca en Sí la opción Requerido de los campos Nombre y Apellido
En el campo Renta mensual, cambia las propiedades siguientes:
Formato: Moneda
Regla de validación: <1500
Texto de validación: El precio de alquiler no debe pasar de 1500
Selecciona el campo Fecha de contrato y sitúa el cursor en la casilla
Máscara de entrada. Aparecerá un botón en la parte derecha: Deberás
pulsarlo. Access te dirá si quieres guardar la tabla. Responde afirmativamente y colócale como nombre: Clientes. A continuación te aparecerá
una ventana con ejemplos de máscaras. Escoge la opción Fecha corta y
pulsa en el botón Finalizar. En la casilla aparecerán unos símbolos correspondientes a la máscara. Haz exactamente lo mismo para el campo
Fecha de expiración.
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
25
© Rodolfo Gallardo-Rosales
Ejercicio práctico:
Seguidamente crea una nueva tabla. La llamarás PROPIEDADES y tendrá las siguientes características:
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
26
© Rodolfo Gallardo-Rosales
Ejercicio práctico:
Hemos preparado dos Tablas; una para llevar el control de los clientes y
otra para llevar el control de las propiedades. Hemos definido en común
un campo: Código de propiedad. ¿Porqué? Necesitamos un campo
en común para las dos tablas de forma que en la tabla PROPIEDADES
podamos introducir las propiedades que sean, cada una con su código
único que las identificará. Pero también necesitamos introducir datos
en la tabla clientes de forma que le asignemos una propiedad a cada uno
de ellos. Posteriormente podemos realizar consultas y crear formularios
de las dos tablas, gracias a este campo en común. De esta forma, podemos introducir datos en la tabla CLIENTES pero asegurándonos que
existen en la tabla PROPIEDADES. Así no habrla lugar a equivocaciones. Lo que vamos a hacer es una relación.
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
27
© Rodolfo Gallardo-Rosales
Ejercicio práctico:
RELACIONES
Una relación es una característica especial de Access que hace que podamos trabajar con varias tablas relacionadas a través de un campo en
común. Existen tres tipos de relaciones:
Relación de uno a uno: En este tipo de relación, un registro de la tabla 1
sólo puede estar enlazado con un único registro de la tabla 2 y viceversa. Este tipo de relación es la que menos se utiliza. Un ejemplo podría
ser éste, en el que cada persona tiene un único CURP:
Tabla 1
Campo Persona
Rodolfo Gallardo Rosales
Pedro Rodríguez Chávez
Juan Pérez Sample
Tabla2
Campo CURP
-> GARR590114HJCLSD09
-> CARP630922BCPRDW12
-> SAPJ500506DSGTRD32
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
28
© Rodolfo Gallardo-Rosales
Ejercicio práctico:
Relación de varios a varios:
Cada registro de la tabla 1 puede estar enlazado con varios registros de
la tabla 2 y viceversa. En el siguiente ejemplo, en la tabla 1 cada película
pueden trabajar varios actores y, en la tabla 2, un mismo actor puede
trabajar en varias películas:
Tabla 1
Campo Película
Tabla2
Campo actor
Air Force One
Mark Hamill
Unico testigo
Alec Guiness
Star Wars
Harrison Ford
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
29
© Rodolfo Gallardo-Rosales
Ejercicio práctico:
Relación de uno a varios:
Cada registro de la tabla 1 puede estar enlazado con varios registros de
la tabla 2, pero cada registro de la tabla 2 sólo puede estar enlazado con
un registro de la tabla 1. En el siguiente ejemplo, un equipo puede tener
varios jugadores, pero cada jugador sólo puede jugar en un equipo:
Tabla 1
Campo Equipo
Tabla2
Campo jugador
At. Madrid
Guardiola
Raúl
Suker
Caminero
Sergi
Molina
F.C. Barcelona
Real Madrid
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
30
© Rodolfo Gallardo-Rosales
Ejercicio práctico:
Práctica:
Con la base de datos de nuestro ejemplo abierta, pulsa en el botón Relaciones o bien accede desde Herramientas - Relaciones. Ha aparecido
una nueva ventana con las dos tablas preparadas para crear la relación.
Arrastra el campo Código de propiedad desde una tabla hasta otra:
Aparece una nueva ventana donde podemos definir algunas características de la relación.Observa en la parte inferior que Access nos coloca
automáticamente el tipo de relación como de Uno a uno, pues los dos
campos son campos clave, por lo que sus datos serán únicos. Otras
opciones de esta ventana son: Exigir integridad referencial. Se utiliza
para asegurarnos de que los datos se mantendrán correctamente relacionados cuando se establezca la relación. Si esta casilla se activa, podemos escoger dos opciones más: Actualizar o eliminar en cascada
los campos relacionados hace que cuando se modifique un dato en una
de las dos tablas, éste también será modificado en la tabla relacionada.
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
31
© Rodolfo Gallardo-Rosales
Ejercicio práctico:
Resultado:
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
32
© Rodolfo Gallardo-Rosales
Ejercicio práctico:
Ya están a punto las dos tablas para introducir los datos. Para ello, simplemente tendremos que pulsar el botón Abrir y Access mostrará una
tabla formada por columnas donde podremos introducir los datos.
Mientras introduces un dato en un campo, Access muestra un lápiz en la
parte izquierda de la fila. En la introducción de datos es importante no
dejar en blanco el campo clave, o Access no nos dejará terminar el proceso. Cuando terminamos de introducir toda una fila, pulsaremos Intro
para pasar a introducir el segundo registro. Si queremos cancelar la introducción de datos en una fila, pulsaremos la tecla Escape.
Conceptos sobre calidad y gestión de datos
Diseño de Bases de Datos Relacionales
33
© Rodolfo Gallardo-Rosales
Diseño y creación de consultas:
En muchas ocasiones tendremos la necesidad de saber qué clientes viven en tal o cual ciudad, cuantas propiedades del tipo chalet existen,
quién paga más de 1000 pesos de alquiler, o cualquier otra pregunta que
se nos ocurra. Evidentemente, tenemos el listado completo en forma de
tabla, pero según el tipo de preguntas que queramos realizar a la BD nos
puede llevar bastante tiempo localizar algún dato en concreto. Para ello
están las consultas. Las consultas con preguntas preparadas que podemos diseñar para utilizar cuando sea necesario. Casi todo el trabajo en
Access se basa en las consultas. Si queremos hacer un informe de unos
datos determinados, podemos hacerlo a partir de una consulta. Si queremos un listado por pantalla o por impresora, lo haremos de una consulta. Las consultas pueden ser de varios tipos.
Edición, búsqueda de la información, ordenación y filtros
Diseño de Bases de Datos Relacionales
34
© Rodolfo Gallardo-Rosales
Diseño y creación de consultas:
Consulta de selección: es la más utilizada. Permite ver los datos de una
o varias tablas, analizarlos, imprimirlos, etc.
Consultas de tablas de referencia cruzadas: presenta los datos en forma
de filas y columnas
Consultas de acciones: se utilizan para crear nuevas tablas a partir de
consultas, eliminar o actualizar registros, añadir o modificar registros,
etc.
Consultas de unión: combinan campos coincidentes o duplicados de
una o varias tablas
Edición, búsqueda de la información, ordenación y filtros
Diseño de Bases de Datos Relacionales
35
© Rodolfo Gallardo-Rosales
Diseño y creación de consultas:
Vamos a crear una sencilla consulta. Imaginemos que queremos saber
algunos datos de los inquilinos que tienen alquilado un Apartamento.
No queremos saber los datos de todos los campos: sólo algunos.
- Con la Base de Datos MICASITA.MDB abierta, pulsa click en la pestaña
de Consultas:
- Pulsa click en el botón Nuevo. Te aparecerá una ventana donde podremos escoger el tipo de consulta a realizar.
- Escoge la opción Vista Diseño y acepta
Seguidamente aparece una pequeña ventana para escoger la tabla o tablas sobre las que realizar la consulta.
- Selecciona la tabla CLIENTES y pulsa en Agregar
- Haz lo mismo con la tabla PROPIEDADES
- Pulsa el botón Cerrar
Edición, búsqueda de la información, ordenación y filtros
Diseño de Bases de Datos Relacionales
36
© Rodolfo Gallardo-Rosales
Diseño y creación de consultas:
Nos encontramos en la pantalla de Vista Diseño de la consulta. Desde
esta pantalla podemos escoger qué campos queremos incluir en la consulta, así como otras opciones (orden, criterios de consulta, etc).
Supongamos que queremos realizar una consulta sólo de los campos
Código de propiedad, Alquiler, Nombre y Apellidos de la tabla CLIENTES, y el campo Tipo de Propiedad de la tabla PROPIEDADES. Lo que
debemos hacer es "cargar" el campo que necesitemos, desde la casilla
de la tabla hasta la cuadrícula inferior.
Edición, búsqueda de la información, ordenación y filtros
Diseño de Bases de Datos Relacionales
37
© Rodolfo Gallardo-Rosales
Diseño y creación de consultas:
- Pulsa doble click en el campo Código de propiedad de la tabla CLIENTES
El campo ha de aparecer en la parte inferior.
- "Arrastra" el campo Nombre de la tabla CLIENTES a la primera casilla
de la segunda fila, al lado del campo anterior.
- Ahora carga utilizando el método que quieras, los campos Apellidos y
Renta de la tabla CLIENTES, y el campo Tipo de propiedad de la tabla
PROPIEDADES.
Perfecto. Ahora vamos a ver el resultado:
- Pulsa click en el botón Vista, situado en la barra de botones superior
izquierdo.
Edición, búsqueda de la información, ordenación y filtros
Diseño de Bases de Datos Relacionales
38
© Rodolfo Gallardo-Rosales
Diseño y creación de consultas:
En pantalla aparece un listado con los campos de las dos tablas, tal y
como hemos preparado. Podríamos ahora volver a la vista Diseño pulsando el mismo botón Vista que ahora aparece como una regla azul,
pero lo que vamos a hacer es guardar la consulta.
- Cierra la ventana de la consulta. Access te pedirá si quieres guardarla.
Responde afirmativamente y ponle como nombre: Consulta sencilla.
Si quisiéramos modificar la consulta, deberíamos pulsar el botón Diseño. Si quisiéramos ejecutarla para ver su contenido, pulsaremos el botón Abrir.
Edición, búsqueda de la información, ordenación y filtros
Diseño de Bases de Datos Relacionales
39
© Rodolfo Gallardo-Rosales
Diseño y creación de consultas:
Una de las mayores ventajas de las consultas es la de introducir criterios de consulta. Mediante los criterios podemos seleccionar registros
que cumplan unas condiciones determinadas. Veamos cómo crear una
consulta que nos muestre datos sobre los inquilinos que pagan más de
850 pesos de alquiler mensual. Crea una nueva consulta de la tabla CLIENTES y carga los campos Código de propiedad, Nombre y Renta mensual
En la casilla Criterios del campo Alquiler mensual, escribe: >850
Edición, búsqueda de la información, ordenación y filtros
Diseño de Bases de Datos Relacionales
40
© Rodolfo Gallardo-Rosales
Diseño y creación de consultas:
- Crea una consulta nueva escogiendo las dos tablas.
- Añade de la tabla Clientes, los campos Nombre, Apellidos, y Renta
mensual
- Añade de la tabla Propiedades los campos Tipo de propiedad, Dirección, Población y Estado
- En la barra de herramientas superior hay un botón llamado Tipo de
consulta. Ábrelo y escoge el tipo Consulta de creación de tabla.
- Access te pedirá un nombre para la nueva tabla que se creará más
tarde. Colócale el nombre: Clientes y Propiedad y acepta.
- Cierra la consulta. Grábala con el nombre: Consulta de creación de
tabla
- Observa que aparece otro tipo de icono.
- Selecciona la consulta recién creada y ábrela. Access te avisa que se
creará una nueva tabla. Acepta.
- Ve a la pestaña de Tablas y observa que la nueva tabla se ha creado.
Edición, búsqueda de la información, ordenación y filtros
Diseño de Bases de Datos Relacionales
41
© Rodolfo Gallardo-Rosales
Formularios:
Un formulario es un objeto de Access que nos permitirá introducir y
modificar los datos de una forma más "amable" y cómoda. Los formularios tienen la ventaja de poder:
- Mostrar datos de varias tablas al mismo tiempo
- Calcular campos
- Crear y utilizar gráficos
- Utilizar fuentes especiales, colores, títulos, etc.
Los formularios podemos crearlos mediante un asistente o bien en blanco y diseñarlos a nuestra medida. Para ver cómo se crean, hemos de
estar situados con una base de datos abierta en la pestaña Formularios.
y pulsar el botón Nuevo. Nos aparecerá una ventana pidiéndonos el tipo
de formulario a crear y la tabla o consulta a partir de la cual se creará.
Vamos a crear un formulario sencillo utilizando un asistente que nos irá
guiando en su creación.
Edición, búsqueda de la información, ordenación y filtros
Diseño de Bases de Datos Relacionales
42
© Rodolfo Gallardo-Rosales
Formularios:
- Con nuestra base de datos abierta (MICASITA.MDB) accede a Formularios - Nuevo y escoge la tabla Clientes y la opción Asistente para formularios
Edición, búsqueda de la información, ordenación y filtros
Diseño de Bases de Datos Relacionales
43
© Rodolfo Gallardo-Rosales
Formularios:
- Carga todos los campos y pulsa el botón Siguiente.
En el siguiente paso, Access nos pregunta qué tipo de formulario y la
distribución de los campos a través del mismo. Si pulsas un click en las
diversas opciones, verás una simulación en la ventana de la izquierda
de cómo quedará.
- Acepta el tipo En columnas y pulsa el botón Siguiente
Para los fondos, prueba igual que antes el estilo que te guste. En nuestro caso, escogeremos el estilo Internacional
- Escoge el estilo que prefieras y pulsa Siguiente
- Acepta el último paso (nombre del formulario) con el botón Termimar, y
el formulario ya estará creado.
Edición, búsqueda de la información, ordenación y filtros
Diseño de Bases de Datos Relacionales
44
© Rodolfo Gallardo-Rosales
Formularios:
Desde el formualrio podemos modificar el contenido de un campo, borrarlo, añadir nuevos registros, y todos los cambios que realizemos en
el formulario, se realziarán en la tabla relacionada, así como todos los
cambios efectuados en la tabla, se visualizarán si abrimos el formulario.
Edición, búsqueda de la información, ordenación y filtros
Diseño de Bases de Datos Relacionales
45
© Rodolfo Gallardo-Rosales
Formularios:
- Con la base de datos MICASITA.MDB abierta y situados en la pestaña
Formularios, pulsa el botón Nuevo.
- Escoge de la lista la tabla Propiedades y como tipo de formulario escoge Vista Diseño.
Aparece una ventana en blanco (o en gris) donde podemos "cargar" los
campos de la tabla y situarlos a nuestro gusto. Observa que la zona gris
es la zona que veremos cuando estemos utilizando el formulario. Esta
zona se puede ensanchar con el mouse "estirando" su esquina inferior
derecha para que ocupe más zona de pantalla. Para cargar los campos
existe un botón situado en la barra de herramientas llamado Lista de
campos desde el que podemos escoger el campo que queramos.
Edición, búsqueda de la información, ordenación y filtros
Diseño de Bases de Datos Relacionales
46
© Rodolfo Gallardo-Rosales
Formularios:
Vamos a ver cómo colocar un control de cálculo de campos en un formulario. Lo que haremos será utilizar el formulario de la tabla Clientes que
hicimos con el Asistente para formularios. Con la ventana de formularios a la vista, selecciona el formulario Clientes y pulsa el botón Diseñar.
Observa la siguiente imagen: hemos ampliado un poco la zona de diseño y movido el campo Renta. Vamos a insertar un campo calculado para
el IVA y otro para el total de la renta. Podríamos crear dos campos
nuevos para ese fin. Para ello, tendríamos que ir al diseño de la tabla e
insertarlos como dos campos nuevos del tipo numérico. En este caso
no los crearemos, sino que insertaremos dos campos independientes
que lo único que harán será realizar un cálculo matemático de otros
campos.
Edición, búsqueda de la información, ordenación y filtros
Diseño de Bases de Datos Relacionales
47
© Rodolfo Gallardo-Rosales
Formularios:
Ahora debes seleccionar con un click el campo gris del IVA 15% y acceder a sus propiedades (con doble click, o con el botón derecho y la opción Propiedades). En el cuadro que te aparece, sitúa el cursor en el
campo Origen del control. Aquí definimos de donde vienen los datos.
Éstos pueden venir de algún campo de alguna tabla, o bien pueden ser
el fruto de alguna operación de cálculo con campos. A la derecha verás
dos cuadraditos. Pulsa el de la derecha (puntos suspensivos). Te aparecerá otra ventana. Se trata del Generador de Expresiones. Aquí podemos definir fórmulas o funciones que realizan ciertas operaciones.
- Escoge de la ventana izquierda las opciones Formularios - Formularios
cargados - Clientes.
- Escoge de la ventana central Renta mensual - Pulsa el botón Pegar
- Pulsa click en la ventana superior y termina de escribir la fórmula: [Alquiler mensual] *15/100 - Cierra la ventana del generador de expresiones
desde el botón Aceptar - Abre la lista del campo Formato y escoge la
opción Moneda - Cierra la ventana de propiedades
- Prueba una vista previa desde el botón Vista situado en la barra de
herramientas en la parte superior izquierda
Edición, búsqueda de la información, ordenación y filtros
Diseño de Bases de Datos Relacionales
48
© Rodolfo Gallardo-Rosales
Formularios:
Generador de expresiones:
Edición, búsqueda de la información, ordenación y filtros
Diseño de Bases de Datos Relacionales
49
© Rodolfo Gallardo-Rosales
Formularios:
Resultado con «Vista»:
Edición, búsqueda de la información, ordenación y filtros
Diseño de Bases de Datos Relacionales
50
© Rodolfo Gallardo-Rosales
Formularios:
Configura tú mismo el campo TOTAL con la fórmula: [Renta mensual] +
[IVA]
Esto significa que el último campo sume el contenido del campo Renta
mensual más el campo IVA. Este último será el campo de texto que creamos anteriormente. Es importante señalar que el nombre de IVA se lo
hemos puesto al campo desde la ventana de propiedades. Si no es así,
Access no lo encontrará.
El resultado final será que cuando introduzcamos el precio de la propiedad, los dos campos que acabamos de crear mostrarán automáticamente
el cálculo del impuesto de IVA.
Edición, búsqueda de la información, ordenación y filtros
Diseño de Bases de Datos Relacionales
51
© Rodolfo Gallardo-Rosales
Gestión de una base de datos relacional:
Realizaremos un ejercicio general de repaso. Crearemos una base de
datos que controlará una supuesta clínica. Necesitaremos tres tablas
para el control de los pacientes, ingresos en clínica y médicos. Relacionaremos las tablas, crearemos consultas, formularios, y repasaremos
conceptos.
La clínica "SANTA ROSALIA" necesita llevar un control informatizado de
su gestión de pacientes y médicos. Para ello se crearán tres tablas con
las siguientes características:
Tabla PACIENTES: llevará un control de los datos de los pacientes como
el Nº de S.S., Nombre, Apellidos, Nº de Expediente, etc.
Tabla INGRESOS: llevará el control de la fecha del ingreso, número de
planta, número de cama, diagnóstico, etc.
Tabla MEDICOS: Código del médico, Nombre, Apellidos, Especialidad,
etc.
Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN.
Diseño de Bases de Datos Relacionales
52
© Rodolfo Gallardo-Rosales
Gestión de una base de datos relacional:
Tabla Pacientes:
Tabla Médicos:
Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN.
Diseño de Bases de Datos Relacionales
53
© Rodolfo Gallardo-Rosales
Gestión de una base de datos relacional:
Tabla Ingresos:
Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN.
Diseño de Bases de Datos Relacionales
54
© Rodolfo Gallardo-Rosales
Gestión de una base de datos relacional:
Este será el aspecto que tendrán las relaciones de las tablas:
Resumiendo: primero introduciremos los datos de los médicos y de los
pacientes. Posteriormente, cuando se produzca un ingreso, asignaremos un número de ingreso (único) a un paciente (Número de Expediente) y le asignaremos un médico (Código de Identificación). En la tabla
Ingresos podremos introducir varios pacientes, y asignárselo a uno de
los médicos de la tabla Médicos.
Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN.
Diseño de Bases de Datos Relacionales
55
© Rodolfo Gallardo-Rosales
Gestión de una base de datos relacional:
Consultas a la Base de Datos: A continuación mostraremos unos
supuestos de consultas y su solución.
1) Necesitamos un listado de los nombres de los médicos y su especialidad. Ir a la pestaña Consultas - Nuevo - Vista Diseño y agregar la tabla
Médicos. Visualizaremos su contenido con el botón Vista previa para
asegurarnos de que funciona correctamente y cerraremos la Consulta
grabándola.
2) Qeremos saber los el Nombre y Apellidos de los pacientes que ingresaron entre Enero y Marzo del 94 y que son alérgicos.
Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN.
Diseño de Bases de Datos Relacionales
56
© Rodolfo Gallardo-Rosales
Gestión de una base de datos relacional:
Resultado:
Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN.
Diseño de Bases de Datos Relacionales
57
© Rodolfo Gallardo-Rosales
Gestión de una base de datos relacional:
3) Queremos saber los Nombres y Apellidos de los pacientes que viven
en Guadalajara o Ciudad Guzmán.
Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN.
Diseño de Bases de Datos Relacionales
58
© Rodolfo Gallardo-Rosales
Tecnología OLE:
La tecnología OLE (Object Linking and Embedding) es un sistema de
compartir archivos entre aplicaciones que nos permitirá transferir información de una a otra. A través de esta tecnología podremos, por ejemplo, insertar un objeto gráfico en un formulario de Access como si fuera
un campo más. Estos objetos pueden insertarse de dos formas:
Incrustación: el objeto es almacenado en la base de datos, pero si el
objeto original sufre algún cambio, en la base de datos no se reflejará el
cambio.
Vinculación: el objeto es almacenado igual en la base datos, pero se
establece un vínculo con el archivo original de forma que si modificamos el objeto desde el formulario, los cambios afectarán al archivo original.
Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN.
Diseño de Bases de Datos Relacionales
59
© Rodolfo Gallardo-Rosales
Tecnología OLE:
Tanto si incrustamos como si vinculamos, el objeto debe crearse en el
formulario mediante el control llamado marco de objeto. Podemo utilizar estas opciones para insertar una imagen de una persona como si
fuese un campo más de la base de datos. Existen dos tipos de marcos:
Marco de objeto independiente: para incluir objetos que no están
almacenados en una tabla. Por ejemplo, un logotipo.
Marco de objeto dependiente: para incluir gráficos y objetos OLE que
están almacenados en la tabla como un campo más.
Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN.
Diseño de Bases de Datos Relacionales
60
© Rodolfo Gallardo-Rosales
Tecnología OLE:
Existen dos botones en el modo de vista de Diseño de formulario para
crear este tipo de controles: Marco de objeto dependiente y Marco de
objeto independiente. Ambos botones están situados en las barras de
herramientas.
En el siguiente ejemplo, tenemos una tabla en la parte izquierda con tres
campos; Nombre (tipo Texto), Apellidos (tipo Texto) y Foto (tipo OLE).
En el modo de introducción de datos en tabla, en el campo Foto hemos
insertado un gráfico (Insertar - Objeto) que teníamos almacenado en formato BMP. Posteriormente, en el modo de Diseño de formulario hemos
incluído el campo como uno más. En la ilustración de la derecha puede
observarse que el gráfico izquierdo a modo de logotipo está creado con
la opción Marco de objeto independiente, sin embargo, el gráfico de la
derecha corresponde al campo Foto de la tabla. En este caso, aparecerá
la foto de cada persona.
Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN.
Diseño de Bases de Datos Relacionales
61
© Rodolfo Gallardo-Rosales
Tecnología OLE:
Resultado:
Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN.
Diseño de Bases de Datos Relacionales
62
© Rodolfo Gallardo-Rosales
COMPACTAR Y CREAR RÉPLICAS DE
BASES DE DATOS:
Compactar una base de datos
Si borras, modificas y creas tablas a menudo, la base de datos puede
fragmentarse, lo que provoca un uso deficiente del espacio en disco. Al
compactar la base de datos, se hace una copia de la misma y se reorganiza el espacio que ocupa en el disco. Es algo parecido a la acción del
comando Defrag.
Para compactar la base de datos actual:
Accede Herramientas - Utilidades de la base de datos - Compactar y reparar base de datos.
Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN.
Diseño de Bases de Datos Relacionales
63
© Rodolfo Gallardo-Rosales
COMPACTAR Y CREAR RÉPLICAS DE
BASES DE DATOS:
Para compactar una base de datos que no está abierta en Access
1. Cierra la base de datos actual.
2. Accede Herramientas - Utilidades de la base de datos - Compactar
base de datos.
3. En el cuadro de diálogo Base de datos a compactar, especifica la base
de datos que deseas compactar y haz clic en Compactar.
4. En el cuadro de diálogo Compactar la base de datos en, especifique el
nombre, unidad y carpeta donde desea almacenar la base de datos
compactada.
5. Haz clic en Guardar.
Si utilizas el mismo nombre, unidad y directorio y si la base de datos se
compacta con éxito, Access reemplazará el archivo de origen por la versión compactada.
Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN.
Diseño de Bases de Datos Relacionales
64
© Rodolfo Gallardo-Rosales
COMPACTAR Y CREAR RÉPLICAS DE
BASES DE DATOS:
Crear una réplica de la base de datos
Vimos cómo se hacía una copia de una tabla para obtener un duplicado
de seguridad. Ahora veamos cómo hacer una copia de una base de datos completa. Imaginemos que no sólo queremos duplicarla para tener
una copia de seguridad, sino también para que otros usuarios la utilicen. Imaginemos que varios usuarios situados en distintos lugares van
a utilizar la base de datos. Podemos crear lo que se llama una Réplica de
la base de datos y posteriormente unir los datos introducidos desde
todas las réplicas que se hagan.
Cada réplica es miembro de un conjunto de réplicas que se pueden
sincronizar con otras réplicas del mismo grupo, es decir, los cambios
realizados en una réplica se aplican a las otras réplicas y al Diseño principal o base de datos original.
Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN.
Diseño de Bases de Datos Relacionales
65
© Rodolfo Gallardo-Rosales
COMPACTAR Y CREAR RÉPLICAS DE
BASES DE DATOS:
Veamos cómo crear una réplica de nuestra base de datos:
Abre cualquier base de datos que tengas.
Accede a Herramientas – Réplica – Crear réplica. Aparecerá un mensaje
de aviso:
Contesta afirmativamente.
Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN.
Diseño de Bases de Datos Relacionales
66
© Rodolfo Gallardo-Rosales
COMPACTAR Y CREAR RÉPLICAS DE
BASES DE DATOS:
Se mostrará otro mensaje que nos avisa que la base de datos original se
convertirá en el Diseño principal. Además se indica el nombre con el que
se guardará la réplica y la carpeta donde se almacenará ésta.
Pulsa en Sí
Acepta el nombre que ofrece Access
Al aceptar, Access crea la réplica y nos muestra un mensaje que la única
copia donde podremos modificar la estructura original será la copia original de la base de datos.
Sin embargo, los datos podremos editarlos en cualquiera de las réplicas
que hayamos realizado.
Acepta el último cuadro de diálogo que ha aparecido.
Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN.
Diseño de Bases de Datos Relacionales
67
© Rodolfo Gallardo-Rosales
COMPACTAR Y CREAR RÉPLICAS DE
BASES DE DATOS:
Ahora fíjate que en los nombres de las tablas aparece un nuevo icono y
en el título aparece la palabra Diseño principal.
Añade un nuevo cliente en la base de datos principal para probar la
sincronización entre bases de datos.
Accede a Herramientas – Réplica – Sincronizar ahora
Acepta el cuadro de diálogo que aparece.
Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN.
Diseño de Bases de Datos Relacionales
68
© Rodolfo Gallardo-Rosales
COMPACTAR Y CREAR RÉPLICAS DE
BASES DE DATOS:
Hay que señalar que en el proceso de sincronización de datos entre réplicas primero se actualizan los cambios en el diseño y después en los
datos. El intercambio entre dos réplicas puede ser en los dos sentidos,
es decir, de la principal a la réplica o viceversa.
Por último, después de sincronizar dos réplicas, es conveniente revisar
la base de datos en busca de posibles errores desde la opción Herramientas – Réplica – Resolver conflictos.
Normalización de bases de datos relacionales: 1FN, FNBC, 4FN y 5FN.
Diseño de Bases de Datos Relacionales
69
© Rodolfo Gallardo-Rosales
Introducción a SQL :
Introducción al lenguaje SQL.
SQL es un lenguaje de Consulta Estructurado que se usa para consultar
y actualizar bases de datos relacionales. Vamos a ver el aspecto general
de este lenguaje y nos servirá para familiarizarnos con el mismo.
Cuando creamos una consulta de datos, Access permite mostrarnos esa
consulta de tres formas:
Vista: Permite ver el resultado de la consulta
Diseño: Es la vista que ya conocemos para construir la consulta.
SQL: Vista en formato de instrucciones SQL
SQL. Contraseñas. Archivos MDE. Internet.
Diseño de Bases de Datos Relacionales
70
© Rodolfo Gallardo-Rosales
Introducción a SQL :
Abre cualquier consulta en modo diseño
Abre el botón vista y elige Vista SQL.
Las palabras en mayúsculas corresponden a instrucciones SQL.
- Cierra la ventana de la consulta y accede en el modo vista SQL a otras
consultas que tengas grabadas de forma que puedas ver su estructura.
Ya que el aprendizaje de SQL requiere un estudio en profundidad que
escapa a los propósitos de este curso, sólo se pretende que conozcas
las acciones de las principales instrucciones SQL:
SQL. Contraseñas. Archivos MDE. Internet.
Diseño de Bases de Datos Relacionales
71
© Rodolfo Gallardo-Rosales
Introducción a SQL :
Las principales instrucciones SQL son:
CREATE TABLE: crea una nueva tabla. Debe ir seguida del nombre de
tabla y de los campos a crear.
INSERT INTO insertar registros con sus correspondientes valores.
UPDATE: actualiza los valores de los campos de la tabla.
FROM: tras esta instrucción debemos indicar la tabla a partir de la cual
se extraerán los datos. Esta instrucción tiene varias cláusulas:
WHERE: determina qué registros de las tablas de FROM
aparecerán en los resultados de la instrucción SELECT
ORDER BY: ordena los datos mostrados en el orden especificado
DELETE FROM: elimina los registros de una tabla.
SELECT.... FROM: realiza consultas sobre tablas.
SQL. Contraseñas. Archivos MDE. Internet.
Diseño de Bases de Datos Relacionales
72
© Rodolfo Gallardo-Rosales
CONTRASEÑAS:
Contraseñas en la base de datos
Los datos que tenemos en una base de datos puede llegar a ser muy
valiosa.
De hecho, cualquier accidente o pérdida de datos, aparte de llegar a suponer una pérdida económica considerable, puede llegar a dañarnos
bastante después de tantas horas de trabajo.
SQL. Contraseñas. Archivos MDE. Internet.
Diseño de Bases de Datos Relacionales
73
© Rodolfo Gallardo-Rosales
CONTRASEÑAS
La pérdida de la información puede prevenirse de varias formas:
* Realiza copias de seguridad de los archivos MDB con frecuencia.
* Haz copias de las tablas. A veces, una consulta de actualización puede
desembocar en resultados catastróficos.
* Crea réplicas si es necesario.
* Protege con contraseñas la base de datos.
SQL. Contraseñas. Archivos MDE. Internet.
Diseño de Bases de Datos Relacionales
74
© Rodolfo Gallardo-Rosales
CONTRASEÑAS:
Access dispone de dos sistemas para asegurar la información de una
base de datos:
Contraseña: el acceso a la base de datos por completo está restringido
por contraseña. Hay que tener en cuenta que, aunque la contraseña está
encriptada para que no pueda leerse mientras se escribe, una vez abierta podemos acceder a todos los objetos, incluso anular o cambiar la
contraseña.
Seguridad a nivel de usuario: se limita el acceso para cada usuario. Éste
tendrá acceso sólo a determinadas partes de la base de datos.
SQL. Contraseñas. Archivos MDE. Internet.
Diseño de Bases de Datos Relacionales
75
© Rodolfo Gallardo-Rosales
CONTRASEÑAS:
- Cierra cualquier base de datos que tengas abierta.
- Accede a Archivo - Abrir para abrir una base de datos.
- Selecciona cualquier base de datos que tengas y activa el botón
Exclusivo
- Ábrela
Hemos utilizado la opción Exclusivo porque si estamos trabajando en
red, ningún otro usuario podrá acceder a la base de datos.
- Accede a Herramientas - Seguridad - Establecer contraseña para la base
de datos.
- Escribe en las dos casillas la misma contraseña. Una cualquiera y acepta.
SQL. Contraseñas. Archivos MDE. Internet.
Diseño de Bases de Datos Relacionales
76
© Rodolfo Gallardo-Rosales
ACCESO POR USUARIOS:
Acceso por usuarios a la base de datos
Cuando se trabaja en red, cualquier usuario que conozca una contraseña podrá igualmente acceder a todas las opciones de la base de datos
así como modificar o borrar datos.
En red, lo más apropiado es restringir el acceso de forma específica
indicando qué usuarios pueden acceder a determinadas partes del programa.
-Accede a Herramientas - Seguridad - Cuentas de usuario y de grupo
Si has trabajado en red, sobre todo con Windows NT, el cuadro de diálogo te resultará familiar. Aunque en esta parte no podemos realizar prácticas, echaremos no obstante un vistazo a las principales opciones:
SQL. Contraseñas. Archivos MDE. Internet.
Diseño de Bases de Datos Relacionales
77
© Rodolfo Gallardo-Rosales
ACCESO POR USUARIOS:
Cancela el cuadro y accede a Herramientas - Seguridad - Permisos de
usuario y grupo
SQL. Contraseñas. Archivos MDE. Internet.
Diseño de Bases de Datos Relacionales
78
© Rodolfo Gallardo-Rosales
ARCHIVOS MDE:
Crear archivos MDE
También podemos proteger la base de datos contra cambios en el diseño del formulario, informes y módulos haciendo una copia de la base de
datos en formato MDE. Para ello:
- Accede a Herramientas - Utilidades de la base de datos - Crear archivo
MDE.
- Elige una carpeta y acepta el nombre que propone Access.
- Cierra la base de datos.
- Pulsa en Abrir.
- Abre la lista desplegable Tipo de archivo y elige Archivos MDE
Abre la base de datos que hemos creado en formato MDE.
- Intenta acceder al modo Diseño de cualquier formulario.
SQL. Contraseñas. Archivos MDE. Internet.
Diseño de Bases de Datos Relacionales
79
© Rodolfo Gallardo-Rosales
ACCESS E INTERNET:
Access e Internet
Mediante Access podemos insertar en nuestras bases de datos
hipervínculos que funcionen en Internet. De esta forma, el usuario no
solo comparte datos con otros usuarios de la red local, sino con un
público mucho mayor (todo el mundo) a través de la World Wide Web.
Para compartir bases de datos con otros usuarios, Access incorpora
dos herramientas:
El asistente para páginas Web, utilizado para crear documentos Web.
Posibilidad de guardar documentos de bases de datos en formato HTML,
transformando el documento en una página Web que pueda ser
visualizada y consultada en Internet desde cualquier parte del mundo.
SQL. Contraseñas. Archivos MDE. Internet.
Diseño de Bases de Datos Relacionales
80
© Rodolfo Gallardo-Rosales
ACCESS E INTERNET:
Incluir Hipervínculos
Un hipervínculo es un elemento (texto, imagen) que tiene la facultad de
responder ante un click del usuario y acceder a otra zona del mismo
documento, un documento distinto o bien una dirección Web.
- Abre una tabla cualquiera.
- Añade el campo: Dirección Web del tipo Hipervínculo
- Cierra el diseño de la tabla guardando los cambios.
SQL. Contraseñas. Archivos MDE. Internet.
Diseño de Bases de Datos Relacionales
81
© Rodolfo Gallardo-Rosales
ACCESS E INTERNET:
Accede a Abrir
- Sitúa el cursor en el nuevo campo y pulsa el botón Insertar hipervínculo
situado en labarra de herramientas.
- Introduce una dirección Web de muestra:
SQL. Contraseñas. Archivos MDE. Internet.
Diseño de Bases de Datos Relacionales
82
© Rodolfo Gallardo-Rosales
ACCESS E INTERNET:
Importar y exportar en HTML
Access permite crear un documento y prepararlo para su publicación en
Internet.
- Accede a Archivo - Guardar como o exportar
En el cuadro de diálogo debemos seleccionar los objetos que queramos
exportar. Tras aceptar, aparecerá un cuadro de diálogo desde donde seleccionaremos el formato HTML.
Para exportar un objeto (tabla, consulta, etc) en formato HMTL, debemos seleccionar la carpeta donde queramos guardar el archivo. Si lo
que queremos es indicarle una dirección FTP para envío de ficheros,
debemos desplegar la lista Guardar en y seleccionar Agregar o modificar ubicac. Aparecerá un cuadro de diálogo.
SQL. Contraseñas. Archivos MDE. Internet.
Diseño de Bases de Datos Relacionales
83
© Rodolfo Gallardo-Rosales
FUNDAMENTOS DE DB EN VB:
Iniciar un nuevo proyecto en Visual Basic
Seleccionar Archivo | Nuevo Proyecto | EXE standard y Aceptar
Adición de un control data
Se hace doble click sobre el control data, y el formulario está listo para
abrir una tabla. Ahora, deben establecerse las propiedades Databasename
(Base de datos seleccionada) y Recordsource (Tabla o conjunto de registros de la base de datos)
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
84
© Rodolfo Gallardo-Rosales
FUNDAMENTOS DE DB EN VB:
Resultado:
Este es un buen momento para guardar el proyecto, como hospital
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
85
© Rodolfo Gallardo-Rosales
FUNDAMENTOS DE DB EN VB:
Adición de controles enlazados:
Visual Basic 6 tiene controles que pueden ser
directamente enlazados
con el control data. Coloque TextBox, y Label
hasta que el formulario
de captura tenga la siguiente apariencia:
Ahora debe ligarse cada
caja de texto al
Datasource (control
data al que se enlaza) y
al Datafield (nombre de
campo en la tabla)
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
86
© Rodolfo Gallardo-Rosales
FUNDAMENTOS DE DB EN VB:
Adición de los botones Agregar, Eliminar y Salir:
Deben agregarse cuatro
botones command,
como
&Agregar,
A&ctualizar, &Eliminar y
&Salir.
Registrar el nombre de
todos como cmdBtn
para generar un array de
botones y usar un
«case» para resolverlos.
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
87
© Rodolfo Gallardo-Rosales
FUNDAMENTOS DE DB EN VB:
Escritura del código respectivo para el evento cmdBtn_Click( ):
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
88
© Rodolfo Gallardo-Rosales
FUNDAMENTOS DE DB EN VB:
Resultado al correr el programa:
Con los cuatro botones
funcionando como un
array, para que el código escrito anteriormente sea absolutamente
válido.
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
89
© Rodolfo Gallardo-Rosales
VALIDACION DE LA CAPTURA:
Validación a nivel de campo:
Esta es la primera forma
de validación. Hagamos
un ejemplo, abre un nuevo proyecto, coloca en el
formulario principal un
cuadro de texto que sólo
aceptará números del
cero al nueve, coloca
una etiqueta, para que
se parezca al formulario
siguiente.
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
90
© Rodolfo Gallardo-Rosales
VALIDACION DE LA CAPTURA:
Descartar los caracteres no deseados:
Vamos a ignorar cualquier caracter que no
sea 0, 1, 2, 3, 4, 5, 6, 7, 8
y 9. Para lograrlo, debemos escribir este pequeño codigo al evento
KeyPress del cuadro de
texto, como sigue. Pudieran agregarse los signos « + - . »
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
91
© Rodolfo Gallardo-Rosales
VALIDACION DE LA CAPTURA:
Conversión del tecleo:
Vamos a crear un código de validación que
sólo acepte mayúsculas.
Es un proceso diferente,
en lugar de ignorar las
minúsculas, como en el
caso anterior los que no
fueren números, hay
que convertirlas a mayúsculas y así pasarlas
al cuadro de texto. Agregue otra etiqueta y otro
cuadro de texto (propiedad text en blanco) para
que luzca así:
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
92
© Rodolfo Gallardo-Rosales
VALIDACION DE LA CAPTURA:
Conversión del tecleo:
El código necesario para
este evento es el del listado presente. Con una
sóla línea se hace todo
lo necesario. Esta, primero convierte el valor
de KeyAscii a carácter,
luego lo convierte a mayúscula y lo vuelve a
convertr en número
ANSI.
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
93
© Rodolfo Gallardo-Rosales
VALIDACION DE LA CAPTURA:
Cuadro de captura combinado:
Puede hacerse que en
un mismo control se
pueda realizar la verificación, y la conversión.
Agregue una etiqueta y
un cuadro de texto al
formulario actual, del
modo siguiente.
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
94
© Rodolfo Gallardo-Rosales
VALIDACION DE LA CAPTURA:
Cuadro de captura combinado:
Ahora en el evento
KeyPress debe agregarse el siguiente código, que validará la captura y convertirá a mayúsculas si no lo son.
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
95
© Rodolfo Gallardo-Rosales
VALIDACION DE LA CAPTURA:
Patrón de captura:
Visual Basic 6 incluye un
control enlazado que
maneja el formateo de
captura y despliegue
que se llama «Maskedit»
y funciona como un cuadro de texto estándar.
Para usarlo selecciones
Project | Components y
el control Microsoft
Masked Edit Control 6.0
para que aparezca en el
cuadro de herramientas,
y agregue uno y una etiqueta al formulario.
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
96
© Rodolfo Gallardo-Rosales
VALIDACION DE LA CAPTURA:
Patrón de captura:
Agrega otro label
(caption dinero) y otro
maskedit con la propiedad format en:
$#,##0.00;($#,##0.00)
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
97
© Rodolfo Gallardo-Rosales
VALIDACION DE LA CAPTURA:
Listas de validación:
Es uno de los procedimientos de validación a
nive de campos de mayor uso. La lista tiene un
conjnto de valores posibles para el camo. En
vez de capturar un valor,
el usuario sólo lo selecciona de la lista. Debe
cargarse en el evento
principal Form_Load.
Agregue una etiqueta y
un cuadro combinado,
con style= 2-dropdown
list.
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
98
© Rodolfo Gallardo-Rosales
VALIDACION DE LA CAPTURA:
Listas de validación:
En el siguiente listado,
se agregan valores directamente a la lista
mediante código.
Cada método AddItem
agrega un elemento a la
lista. Podemos hacer
que se selecciones de
manera predeterminada
un campo, como e el listado de ejemplo.
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
99
© Rodolfo Gallardo-Rosales
VISUAL BASIC Y EL MOTOR JET:
Resumen del modelo de datos de objetos DAO (Data Access Object):
Colecciones:
Objetos que contienen objetos concordantes
Propiedades:
Características de un objeteo (botón, formulario, etc.)
que sirven para definirlo. Las propiedades tú las
estableces.
Métodos:
Las tareas que puede hacer un objeto. Los métodos se
invocan.
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
100
© Rodolfo Gallardo-Rosales
VISUAL BASIC Y EL MOTOR JET:
Generación del proyecto DAO:
Ejecuta Visual Basic y
elige un proyecto EXE
estándar. Para verificar
que tenga referencia al
Microsoft Jet 3.51 Data
Access Object Library,
realizar: Project
|
References y verifíquelo
conforme a esta figura:
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
101
© Rodolfo Gallardo-Rosales
VISUAL BASIC Y EL MOTOR JET:
Adición del formulario MDI:
Es necesario agregar un formulario MDI al proyecto, así como un móduo
BAS y un formulario estándar.
Primero agrega un formulario MDI (Project | Add MDI Form).
Agrega un control Common Dialog (Project | Components) y selecciona
Microsoft Common Dialog Control, y colócalo sobre el formulario MDI.
Selecciona (Tools | Menu Editor).
A continuación se describen las características de las opciones de menú
que debes agregar.
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
102
© Rodolfo Gallardo-Rosales
VISUAL BASIC Y EL MOTOR JET:
Captura del menú:
Esta es la ventana de
captura del menú que
debe aparecer en el
fomulario.
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
103
© Rodolfo Gallardo-Rosales
VISUAL BASIC Y EL MOTOR JET:
Codificación del formulario MDI:
Luego de haber colocado lo necesario en el formulario, se necesita
agregar algo de código,
que se encontrará en
cada event Click de los
diversos elementos del
menú para cargar los
demás formularios.
Option Explicit
Private Sub mnuArchivoSalir_Click()
Unload Me
End Sub
Private Sub mnuDAOBasedeDatos_Click()
MostrarFormulario frmBaseDeDatos
End Sub
Private Sub mnuDAOConsulta_Click()
MostrarFormulario frmDefConsulta
End Sub
Private Sub mnuDAOEspaciodeTrabajo_Click()
MostrarFormulario frmEspacioTrabajo
End Sub
Private Sub mnuDAOMotor_Click()
MostrarFormulario frmMotorBD
End Sub
Private Sub mnuDAOOtrosObjetos_Click()
MostrarFormulario frmOtros
End Sub
Private Sub mnuVentanaItem_Click(Index As Integer)
Me.Arrange Index
End Sub
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
104
© Rodolfo Gallardo-Rosales
VISUAL BASIC Y EL MOTOR JET:
Adición del módulo estándar modDAO (función MostrarTipo):
Public Function MostrarTipo(TipoCodigo As Variant) As String
'
' Devolverá una cadena entendible
'
Dim strResultado As String
'
Select Case TipoCodigo
Case vbEmpty
strResultado = "Vacía (Empty)"
Case vbNull
strResultado = "Nula(Null)"
Case vbInteger
strResultado = "Entero(Integer)"
Case vbLong
strResultado = "Entero Largo(Long)"
Case vbSingle
strResultado = "Prescisión simple(Single)"
Case vbDouble
strResultado = "Precisión doble(Double)"
Case vbCurrency
strResultado = "Moneda(Currecy)"
Case vbDate
strResultado = "Fecha(Date)"
Case vbString
strResultado = "Cadena(String)"
Case vbObject
strResultado = "Objeto(Object)"
Case vbError
strResultado = "Error"
Case vbVariant
strResultado = "Variant"
Case vbDataObject
strResultado = "Objeto de datos(Data object)"
Case vbDecimal
strResultado = "Decimal"
Case vbByte
strResultado = "Byte"
Case vbArray
strResultado = "Matriz(Array)"
Case Else
strResultado = "[" & CStr(TipoCodigo) & "]"
End Select
'
MostriarTipo = strResultado
'
End Function
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
105
© Rodolfo Gallardo-Rosales
VISUAL BASIC Y EL MOTOR JET:
Adición del módulo estándar modDAO (función ObtenerPropiedades):
Public Function ObtenerPropiedades(ElementoDAO As Object) As String
'
' Devuelve la lista de propiedades numeradas
'
On Error GoTo ErrorLocal
'
Dim prpElemento As DAO.Property
Dim strResultado As String
'
Screen.ActiveForm.MousePointer = vbHourglass
'
strResultado = " "
For Each prpElemento In ElementoDAO.Propiedades
strResultado = strResultado & prpElemento.Name
strResultado = strResultado & prpElemento.Name
strResultado = strResultado & " = "
'
If prpElemento.Name = "BookMark" Then
strResultado = strResultado & "?" 'no tome en cuenta un marcador
Else
strResultado = strResultado & prpElemento.Value
End If
'
strResultado = strResultado & " {"
strResultado = strResultado &
MostrarTipo(prpElemento.Type)
strResultado = strResultado & "} " & vbCrLf
Next
'
ObtenerPropiedades = strResultado
'
Screen.ActiveForm.MousePointer = vbNormal
'
Exit Function
'
ErrorLocal:
' En caso ed que el valor nos de problemas
strResultado = strResultado & "<err>"
Resume Next
'
End Function
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
106
© Rodolfo Gallardo-Rosales
VISUAL BASIC Y EL MOTOR JET:
Adición del módulo estándar modDAO (función ObtenerArchivoBD):
Public Function ObtenerArchivoBD(Optional NombrePredeterminado As String = "") As String
'
' Devuelve un archivo MDB
'
On Error GoTo ErrorLocal
'
With mdiDAO.dlgPrincipal
.FileName = NombrePredeterminado
.Filter = "*.mdb|*.mdb"
.ShowOpen
ObtenerArchivoBD = .FileName
End With
'
Exit Function
'
ErrorLocal:
ObtenerArchivoBD = ""
'
End Function
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
107
© Rodolfo Gallardo-Rosales
VISUAL BASIC Y EL MOTOR JET:
Adición del módulo estándar modDAO (función doMostrarResultados):
Public Sub doMostrarResultados(Dato As String, Optional Titulo As String = " ")
'
' Mostrar los resultados en una ventana
'
If IsMissing(Titulo) Then
Titulo = " "
End If
'
With frmResultados
.Caption = Titulo
.txtDespliegue.Text = Dato
.Show
End With
'
End Sub
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
108
© Rodolfo Gallardo-Rosales
VISUAL BASIC Y EL MOTOR JET:
Adición del módulo estándar modDAO (función doMostrarFormulario):
Public Sub doMostrarFormulario(Yo As Form)
'
' Coloca el formulario indicado
' junto con el de resultados
'
Dim frm As Form
'
' cierre cualquier formulario
For Each frm In Forms
If frm.Name <> "mdiDAO" And frm.Name <> "frmResultados" Then
Unload frm
End If
Next
'
' cargue el área de despliegues asociada
With frmResultados
.txtDespliegue.Text = " "
.Caption = "Resultados de " & Yo.Name
End With
'
' cargue el formulario solicitado
Yo.Show
mdiDAO.Arrange vbTileVertical
'
End Sub
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
109
© Rodolfo Gallardo-Rosales
VISUAL BASIC Y EL MOTOR JET:
Adición del formulario Resultados:
Es necesario crear un
formulario que despliegue los ensajes provenientes de las diversas
operaciones con el DAO
a lo largo del proyecto,
con las características
siguientes:
VB.Frm
Name
Caption
ClientHeight
ClientLeft
ClientTop
ClientWidth
MDIChild
frmResultados
«Vista de resultados»
3195
60
345
4680
-1 ‘True
VB.TextBox
Name
Height
Left
MultiLine
ScrollBars
Top
Width
txtDespliegue
495
1740
-1 ‘True
2 ‘Vertical
1380
1215
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
110
© Rodolfo Gallardo-Rosales
VISUAL BASIC Y EL MOTOR JET:
Adición del formulario Resultados:
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
111
© Rodolfo Gallardo-Rosales
VISUAL BASIC Y EL MOTOR JET:
Creación del formulario frmMotorBD:
VB.Frm
Name
Caption
ClientHeight
ClientLeft
ClientTop
ClientWidth
MDIChild
VB.CommandButton Name
Caption
Height
Left
Top
Width
VB.CommandButton Name
Caption
Height
Left
Top
Width
VB.CommandButton Name
Caption
Height
Left
Top
Width
VB.CommandButton Name
frmMotorBD
Caption
«Moto de la base de datos»
Height
3195
Left
60
Top
345
Width
4680
-1 ‘True
cmdPropiedades
Propiedades
495
120
180
1215
cmdRegistrar
Registrar
495
1500
780
1215
cmdCompactar
Compactar
495
120
780
1215
cmdReparar
Reparar
495
1500
180
1215
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
112
© Rodolfo Gallardo-Rosales
VISUAL BASIC Y EL MOTOR JET:
Codificación del método RepairDatabase:
Private Sub cmdReparar_Click()
'
' Reparación de una base de datos dañada
'
On Error GoTo ErrorLocal
'
Dim strNombreBD As String
'
strNombreBD = ObtenerArchivoBD("repair.mdb")
'
If strNombreBD <> "" Then
DBEngine.RepairDatabase strNombreBD
doMostrarResultados strNombreBD & " reparada.", "Reparar"
End If
'
Exit Sub
'
ErrorLocal:
'
End Sub
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
113
© Rodolfo Gallardo-Rosales
VISUAL BASIC Y EL MOTOR JET:
vbCrLf & "1.1, 2.x, 3.x", "Seleccione versión", "3.x")
Select Case LCase(strVersion)
Case "1.1": intVersion = dbVersion11
Codificación del método CompactDatabase:
Case "2.x": intVersion = dbVersion20
Private Sub cmdCompactar_Click()
Case "3.x": intVersion = dbVersion30
'
Case Else
' Compacta o convierte ua MDB
MsgBox "¡Versión sin validez!", vbCritical,
'
"Error de versión"
Dim strNombreBDAnterior As String
End Select
Dim strNombreBDNueva As String
Loop Until strVersion = "1.1" Or strVersion = "2.x"
Dim intCifrar As Integer
Or strVersion = "3.x"
Dim strVersion As String
'
Dim intVersion As Integer
' Seleccione el tipo de cifrado
'
intCifrar = MsgBox("¿Se encriptará la base de da' Obtenga el archivo a compactar o convertir
tos?", vbInformation - vbYesNo, "Compactar base de
strNombreBDAnterior = ""
datos")
strNombreBDNueva = ""
If intCifrar = vbYes Then
'
intCifrar = dbEncrypt
strNombreBDAnterior = ObtenerArchivoBD()
Else
'
intCifrar = dbDecrypt
If strNombreBDAnterior <> "" Then
End If
strNombreBDNueva = ObtenerArchivoBD(strNombreBDAnterior)
'
If strNombreBDNueva = "" Then
' ¡Ejecute el trabajo!
strNombreBDNueva = strNombreBDAnterior
DBEngine.CompactDatabase
End If
strNombreBDAnterior,
strNombreBDNueva,
'
dbLangGeneral, intVersion + intCifrar
' seleccione la versión de destino
doMostrarResultados "¡Se completó la
Do
compactación!", "Compactación"
intVersion = 0
'
strVersion = ""
End If
'
End Sub
strVersion = InputBox("Seleccione la version resultante." &
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
114
© Rodolfo Gallardo-Rosales
VISUAL BASIC Y EL MOTOR JET:
Codificación del método RegisterDatabase:
Private Sub cmdRegistrar_Click()
'
' Registra con ODBC
'
On Error Resume Next
'
Dim strNod As String
Dim strControlador As String
Dim blnSilencio As Boolean
Dim strAtributos As String
Dim strDelimitador As String
'
strDelimitador = Chr(0)
strNod = "PruebaOrigenDatos"
strControlador = "SQL Server"
blnSilencio = False
strAtributos = "SERVER=mca" & strDelimitador
strAtributos = strAtributos & "DATABASE=pubs" & strDelimitador
strAtributos = strAtributos & "DESCRIPTION=Registro de ejemplo"
& strDelimitador
'
DBEngine.RegisterDatabase strNod, strControlador, blnSilencio,
strAtributos
'
End Sub
DBMS diseñado en Visual Basic.
Diseño de Bases de Datos Relacionales
115
Descargar