Está en la página 1de 104

UNIDAD 1.

Manejo de Datos

PREPARATORIA TÉCNICA
“GENERAL EMILIANO ZAPATA”
“CIENCIA, CULTURA Y HUMANISMO”

ACCESS II

MICROSOFT ACCESS

BACHILLERATO TÉCNICO EN
SISTEMAS COMPUTACIONALES
CUARTO SEMESTRE

1
ACCESS II

Índice

Unidad I Importar y Exportar………………………………………………………………………………………………………….4


1.1 Exportar ......................................................................................................................................... 5
1.1.1 Exportar un objeto de base de datos a otra base de datos de Access ...................................... 6
1.1.2 Exportar datos a Excel .............................................................................................................. 11
1.1.3 Exportar datos a un archivo de texto ....................................................................................... 13
1.1.4 Exportar datos a Word ............................................................................................................. 20
1.2 Importar ...................................................................................................................................... 21
1.2.1 Importar o vincular a los datos de otra base de datos de Access ............................................ 21
1.2.2 Importar o vincular a los datos de un libro de Excel ................................................................ 23
1.2.3 Importar o vincular a los datos de un archivo de texto ........................................................... 27
2.1 Relaciones entre tablas ............................................................................................................... 31
2.2 La integridad referencial ............................................................................................................. 34
2.3 Las 4 reglas de la integridad ........................................................................................................ 35
2.4 ¿Cómo se implementa esto en Microsoft Access? ..................................................................... 38
3.1. INTRODUCCION A SQL................................................................................................................ 49
3.2. DONDE SE ESCRIBEN LAS SENTENCIAS SQL ............................................................................... 50
3.3. CONSULTAS SIMPLES ................................................................................................................. 51
3.3.1 SENTENCIA SELECT. .................................................................................................................. 51
3.3.2 Selección de filas ...................................................................................................................... 55
3.3.3 La cláusula WHERE ................................................................................................................... 57
3.3.4 Ordenación de las filas ORDER BY ............................................................................................ 64
3.4. Consultas Multitablas................................................................................................................. 67
3.4.1 Unión de tablas ........................................................................................................................ 67
3.4.2 La composición de tablas ......................................................................................................... 68
3.4.3 Tipos de composición de tablas. .............................................................................................. 69
3.4.4 ¿Cuándo utilizar cada operación? ............................................................................................ 76
3.5. Actualización de datos ............................................................................................................... 77
3.5.1 Insertar una fila INSERT INTO................................................................................................... 78
3.5.2 Modificar el contenido de las filas UPDATE ............................................................................. 79
3.6. DDL Lenguaje de Definición de Datos ........................................................................................ 81
3.6.1 CREATE TABLE .......................................................................................................................... 82
Lic. Fernando Román Vega 2
ACCESS II

3.6.2 ALTER TABLE............................................................................................................................. 86


3.6.3 DROP TABLE ............................................................................................................................. 89
3.6.4 CREATE INDEX .......................................................................................................................... 89
3.6.5 DROP INDEX ............................................................................................................................. 91
3.6.6 Ejercicios. El DDL Lenguaje de Definición de Datos ................................................................. 91
4.1 Office Access 2007 y seguridad de nivel de usuario ................................................................... 98
4.1.1 Arquitectura de seguridad de Office Access 2007 ................................................................... 98
4.2 Empaquetar, firmar y distribuir una base de datos de Office Access 2007 .............................. 100
4.2.1 Crear un paquete firmado...................................................................................................... 101
4.2.2 Extraer y usar un paquete firmado ........................................................................................ 102
4.3 Cifrar una base de datos mediante una contraseña ................................................................. 103

Lic. Fernando Román Vega 3


ACCESS II

UNIDAD 1. Importar y Exportar

Lic. Fernando Román Vega 4


ACCESS II

1.1 Exportar

En informática, exportar significa "forzar" a una aplicación crear un documento que la misma
aplicación no podrá editar luego, o bien, podrá editar solo a través de la importación. En algunos
casos, el archivo exportado no puede ser ni siquiera leído por la misma aplicación que lo exportó.
La opción de exportar se encuentra presente en el menú de Archivo, y comúnmente está presente
en los editores sofisticados de texto tales como OpenOffice.org Writer. La mayoría de los editores
de texto sofisticados poseen esta opción para exportar sus documentos al formato PDF, o al
formato de la competencia. Esta opción también está presente en los editores gráficos, que
aunque la mayoría de ellos puedan editar sus gráficos exportados, el usuario no tendrá las
ventajas de haber utilizado el archivo nativo de la aplicación, como por ejemplo, manejar capas;
este es el caso de los aplicaciones como GIMP y Photoshop.

No se debe confundir la opción de Exportar (export) con la opción de Guardar Como...(Save as...),
ya que la exportación es la creación de un archivo no-nativo, y la opción de guardar como... es
para guardar un archivo en un formato que la misma aplicación que lo creó, lo pueda leer y editar
luego.

Con el paso del tiempo, la opción de Exportar, está desapareciendo de numerosas aplicaciones,
especialmente de los Procesadores de texto, pues estas aplicaciones cada vez son más capaces de
manejar archivos no nativos; como es el caso de OpenOffice.org Writer. No obstante, esta opción
permanece especialmente para exportar documentos de formato PDF; aunque algunos
desarrolladores afirman que pronto será posible editar fácilmente documentos PDF. La opción de
exportar probablemente permanecerá también en aplicaciones de diseño gráfico, pues se
considera muy útil en dichas aplicaciones.

Un ejemplo de exportar un archivo es el programa Inkscape que puede exportar sus gráficos
vectoriales a un mapa de bits (imágen de píxeles). Gimp es una aplicación de retoque fotográfico y
dibujo, la cual es capaz de manejar íntegramente su formato nativo (.xcf), pero para poder
visualizar estas imágenes en internet, se necesitan exportar a un formato de imagen más estándar

Lic. Fernando Román Vega 5


ACCESS II

en internet, como PNG o JPG. La desventaja de estos formatos es que no soportan algunas
ventajas del archivo nativo de GIMP, como el manejo de capas. Para resolver este problema, es
recomendado guardar la imagen en el archivo nativo de GIMP y luego exportar el archivo a un
formato gráfico conocido. De esta forma, la imagen puede editarse con todas las ventajas del
formato nativo. Un caso muy similar ocurre en PhotoShop.

Se puede realizar 5 tipos de exportación, cada uno la forma de realizarlo no cambia mucho.

a) Exportar un objeto de base de datos a otra base de datos de Access


b) Exportar datos a Excel
c) Exportar una tabla o consulta a un sitio de SharePoint
d) Exportar datos a un archivo de texto
e) Exportar datos a Word

1.1.1 Exportar un objeto de base de datos a otra base de datos de Access

Access proporciona varias formas de copiar un objeto, como una tabla o formulario, de una base
de datos a otra. Lo más sencillo es copiar y pegar, pero exportar un objeto permite más opciones.
Por ejemplo, puede exportar la definición de la tabla y los datos de la tabla, o exportar sólo la
definición de la tabla (una copia en blanco de la tabla). También puede guardar los detalles de la
operación como una especificación de exportación para uso futuro.

En este tema se explica cómo exportar un objeto utilizando un asistente y, a continuación, cómo
guardar los detalles de la operación como una especificación.

Puede exportar una tabla, una consulta, un formulario, un informe, una macro o un módulo de
una base de datos de Access a otra. Al exportar un objeto, Access crea una copia de él en la base
de datos de destino.

Exporta objetos de bases de datos cuando deba efectuar alguna de las siguientes tareas:

 Copiar la versión más reciente de una tabla o formulario a otra base de datos a intervalos
regulares. Para ello, puede crear una especificación de exportación la primera vez que
exporta el objeto y, a continuación, utilizarla para repetir la operación posteriormente.
 Copiar la estructura de una tabla a otra base de datos como un acceso directo para crear
una tabla nueva.

Lic. Fernando Román Vega 6


ACCESS II

 Copiar el diseño y la presentación de un formulario o informe a otra base de datos como


método rápido para crear un nuevo formulario o informe.

Es necesario tomar en cuenta lo siguiente para prepararse la exportación

1. Abra la base de datos de origen, si no está abierta. El formato de archivo puede ser MDB o
ACCDB. Si el archivo está en formato MDE o ACCDE, el objeto de origen debe ser una tabla,
una consulta o una macro. No puede exportar formularios, informes o módulos desde un
archivo MDE o ACCDE.

2. Identifique el objeto que desea exportar. Si es la primera vez que exporta datos a una base de
datos de Access, recuerde lo siguiente:

Elemento Descripción

Un objeto por Puede exportar sólo un objeto a la vez. Para exportar varios objetos, repita la
operación operación de exportación para cada objeto o realice una operación de
importación desde la base de datos de destino.

Nueva tabla Cada operación de exportación crea un objeto nuevo en la base de datos de
destino. Si ya existe un objeto con el mismo nombre, puede elegir
sobrescribir el objeto existente o especificar otro nombre para el objeto
nuevo.
Nota Una operación de exportación no puede agregar registros a una
tabla existente. Para agregar registros, considere una consulta de datos
anexados. Para obtener más información, vea el artículo Crear una consulta
de datos anexados.

Exportar una Si la tabla que desea exportar es una tabla vinculada, la operación de
tabla vinculada exportación crea una tabla vinculada en la base de datos de destino. La
nueva tabla vinculada se vincula a la tabla original de origen.
Por ejemplo, si exporta una tabla vinculada denominada Empleados1 en la
base de datos Ventas, vinculada a la tabla Empleados de la base de datos

Lic. Fernando Román Vega 7


ACCESS II

Nómina, la operación de exportación crea una tabla vinculada en la base de


datos de destino. La nueva tabla vinculada vincula directamente a la tabla
Empleados de la base de datos Nómina.

Exportación No puede exportar una parte de un objeto ni unos cuantos registros


parcial seleccionados.

Relaciones Como sólo puede exportar una tabla a la vez, la operación de exportación no
copia las relaciones. Si desea importar varias tablas y sus relaciones, abra la
base de datos de destino e importe los objetos.

Definición de Puede elegir exportar toda una tabla o sólo la definición de tabla. Al exportar
tabla la definición, se crea una copia en blanco de la tabla en la base de datos de
destino.

Origen de Si se exporta una consulta, formulario o informe, no se exporta


registro automáticamente los orígenes de registros subyacentes. Debe exportar los
orígenes de registros subyacentes pues, en caso contrario, la consulta,
formulario o informe no funcionarán.

Campos de Si un campo de la tabla de origen busca valores en otra tabla o consulta,


búsqueda debe exportar la tabla o consulta relacionadas si desea que el campo de
destino muestre valores. Si no exporta la tabla o consulta relacionadas, el
campo de destino muestra sólo los identificadores de búsqueda.

Subformularios y Al exportar un formulario o un informe, no se exportan automáticamente los


subinformes subformularios y subinformes incluidos en el formulario o en el informe.
Tiene que exportar cada subformulario o subinforme y su origen de registro
subyacente por separado.

3. Abra la base de datos de destino. El formato de archivo puede ser MDB o ACCDB. También
puede ser un archivo MDE ACCDE. Asegúrese de que no es de sólo lectura y de que tiene
permisos para modificarlo.

4. Si ya existe un objeto con el mismo nombre que el objeto de origen en la base de datos de
destino, debe decidir si desea sobrescribir la versión existente o especificar otro nombre para
el objeto nuevo.

Lic. Fernando Román Vega 8


ACCESS II

Ya está listo para iniciar la operación de exportación. Vaya a la serie de pasos siguientes.

Pasos para Ejecutar el asistente de exportación

1. En la ficha Datos externos, en el grupo Exportar, haga clic en Más y, a continuación, haga

clic en Base de datos de Access.

2. En el cuadro Nombre de archivo, especifique el nombre de la base de datos de destino y, a


continuación, haga clic en Aceptar.

3. En el cuadro de diálogo Exportar, cambie el nombre del objeto nuevo si no desea


sobrescribir un objeto existente con el mismo nombre en la base de datos de destino.

4. Si el objeto seleccionado es una tabla, especifique si desea exportar la definición de la


tabla y los datos o sólo la definición.

5. Haga clic en Aceptar para terminar la operación.

Si en la base de datos de destino ya existe un objeto con ese nombre, se le solicitará que lo
sobrescriba o que especifique otro nombre. Haga clic en Sí para sobrescribir o en No para
volver al cuadro de diálogo Exportar. Especifique un nombre que no se haya utilizado en la
base de datos de destino y haga clic en Aceptar.

Access exporta los objetos. Si se produce un error, Access muestra un mensaje de error.
En caso contrario, aparece la pantalla final del asistente y esta pantalla se utiliza para crear
una especificación que guarde los detalles de la operación de exportación.

Guardar la especificación de exportación

Lic. Fernando Román Vega 9


ACCESS II

1. Haga clic en Guardar los pasos de la exportación para guardar los detalles de la operación
para un uso futuro. Guarde los detalles para cuando necesite repetir la operación sin tener
que recorrer los pasos del asistente cada vez.

2. En el cuadro Guardar como, escriba un nombre para la especificación de exportación.


También, puede escribir una descripción en el cuadro Descripción.

3. Si desea realizar la operación a intervalos fijos, por ejemplo, semanal o mensualmente,


active la casilla de verificación Crear tarea de Outlook. Se creará una tarea de Outlook que
le permitirá ejecutar la especificación con un clic de un botón.

4. Haga clic en Guardar exportación.

5. Siga uno de estos procedimientos:

Si ha seleccionado la casilla de verificación Crear tarea de Outlook, Access iniciará


Microsoft Office Outlook 2007. Siga los pasos restantes de este procedimiento para
configurar la tarea de Outlook.

Si no ha seleccionado la casilla de verificación Crear tarea de Outlook, la operación ya está


terminada. Abra la base de datos de destino y revise el objeto exportado para asegurarse
de que la operación se ha realizado correctamente.

6. En la ventana Tareas de Outlook, revise y modifique las configuraciones de tarea tales


como Vencimiento y Aviso.
Para que se repita la tarea, haga clic en Periodicidad. Para obtener más información acerca
de la configuración de tareas, vea la Ayuda de Outlook.

7. Haga clic en Guardar y cerrar.

8. En Access, abra la base de datos de destino y revise el objeto exportado para asegurarse
de que la operación se realizó correctamente.

Lic. Fernando Román Vega 10


ACCESS II

1.1.2 Exportar datos a Excel

También es posible copiar los datos de una base de datos de Microsoft Office Access 2007 a una
hoja de cálculo exportando un objeto de base de datos a una hoja de cálculo de Microsoft Office
Excel 2007. Esto se hace mediante el Asistente para exportación en Office Access 2007.

Puntos a considerar para decidir si es conveniente exportar los datos a una hoja de cálculo.

 Su departamento o grupo de trabajo utiliza Access y Excel para trabajar con datos. Guarda
los datos en las bases de datos de Access pero utiliza Excel para analizar los datos y
distribuir los resultados de sus análisis. Su equipo exporta actualmente datos a Excel
cuando y como lo necesita pero desea aumentar la eficacia de este proceso.

 Es usuario de Access desde hace tiempo pero su administrador prefiere ver los datos en
Excel. A intervalos regulares, suele copiar los datos en Excel pero desea automatizar este
proceso para ahorrar tiempo.

 Para exportar datos de Access a Excel, debe estar trabajando en Access (Excel no
proporciona ningún mecanismo para importar datos de una base de datos de Access).
Tampoco puede guardar una base de datos o una tabla de Access como libro de Excel
utilizando el comando Guardar como de Access. Es importante tener en cuenta que el
comando Guardar como de Access permite guardar un objeto de Access en la base de
datos actual sólo como otro objeto de base de datos de Access.

 Sólo puede exportar un objeto de base de datos en una operación de exportación. No


obstante, puede combinar los datos en varias hojas de cálculo en Excel después de
finalizar las operaciones individuales de exportación.

 Puede exportar una tabla, una consulta o un formulario. También puede exportar los
registros seleccionados en una vista.

 No puede exportar macros, informes ni módulos a Excel. Al exportar formularios u hojas


de datos que contienen subformularios u hojas secundarias de datos, sólo se exporta el
formulario o la hoja de datos principal. Debe repetir la operación de exportación para cada
subformulario y hoja secundaria de datos que desea ver en Excel.

Ejecutar la operación de exportación


Lic. Fernando Román Vega 11
ACCESS II

1. Abra la base de datos de origen.


2. En el panel de exploración, seleccione el objeto que contiene los datos que desea
exportar.
Puede exportar una tabla, una consulta o un formulario.
3. Revise los datos de origen para asegurarse de que no contienen indicadores de error ni
valores de error.
Si hay algún error, debe resolverlo antes de exportar los datos a Excel. De lo contrario, se
pueden producir errores durante la operación de exportación y pueden aparecer valores
nulos en los campos.
4. Si el objeto de origen es una tabla o una consulta, decida si desea exportar los datos con
formato o sin él.
5. Elija el libro de destino y el formato de archivo.
6. Si el libro de destino de Excel está abierto, ciérrelo antes de continuar.

Exportar los datos

1. En la base de datos de origen, si desea exportar sólo una parte de una tabla, consulta o
formulario, abra el objeto y seleccione los registros que desea.

2. En la ficha Datos externos, en el grupo Exportar, haga clic en Excel.


3. En el cuadro de diálogo Exportar - Hoja de cálculo de Excel, acepte el nombre propuesto
para el libro de Excel (Access usa el nombre del objeto de origen) o escriba otro nombre.
4. En el cuadro Formato de archivo, seleccione el formato de archivo que desea.
5. Si está exportando una tabla o consulta y si desea exportar datos con formato, seleccione
Exportar datos con formato y diseño.
Si está exportando un formulario, esta opción siempre está seleccionada pero no está
disponible (aparece atenuada).
6. Para ver el libro de destino de Excel cuando se completa la operación de exportación,
active la casilla de verificación Abrir el archivo de destino al finalizar la operación de
exportación.
Si el objeto de origen está abierto y si selecciona uno o varios registros en la vista antes de
iniciar la operación de exportación, puede seleccionar Exportar sólo los registros
seleccionados. No obstante, si desea exportar todos los registros que aparecen en la vista,
deje esta casilla de verificación desactivada.
7. Haga clic en Aceptar.
Si la operación de exportación se realiza incorrectamente, Access muestra un mensaje en
el que se describe la causa del error. Si no, de acuerdo con las opciones de exportación
especificadas en el Asistente, Access exporta los datos y abre o no el libro de destino en
Excel. Access muestra un cuadro de diálogo en el que puede crear una especificación que
utiliza la información de la operación de exportación.

Lic. Fernando Román Vega 12


ACCESS II

1.1.3 Exportar datos a un archivo de texto

Comprender la exportación de archivos de texto

Los datos de Office Access 2007 se pueden exportar en muy diversos formatos, incluidas listas de
Microsoft Office Excel 2007, Microsoft Office Word 2007 y Microsoft Windows SharePoint Services
3.0. No obstante, es posible que necesite exportar datos a un programa que usa un formato de
archivo que Access no admite. En este caso, si el programa de destino puede usar archivos de
texto (.txt), puede exportar los datos en ese formato y abrir el archivo resultante con el segundo
programa.

Puede exportar tablas, consultas, formularios e informes como archivos de texto. También puede
exportar una parte seleccionada de una vista de hoja de datos. Si exporta tablas o consultas, tiene
la opción de exportar el objeto entero o sólo los datos sin formato.

Al final de la operación, Access crea un archivo de texto (*.txt). Si decide omitir el formato, tiene la
opción de crear un archivo de texto delimitado o un archivo de texto de ancho fijo. Si elige
exportar datos con formato, Access intenta aproximarse al diseño del objeto de origen.

El Asistente para exportación crea los siguientes tipos de archivos de texto:

Archivos delimitados En un archivo delimitado, cada registro aparece en su propia línea y los
campos están separados por un carácter denominado delimitador. El delimitador puede ser
cualquier carácter que no aparezca en los valores de campo, como una coma o un punto y coma.

1,Company A,Anna,Bedecs,Owner
2,Company C,Thomas,Axen,Purchasing Rep
3,Company D,Christina,Lee,Purchasing Mgr.
4,Company E,Martin,O’Donnell,Owner
5,Company F,Francisco,Pérez-Olaeta,Purchasing Mgr.
6,Company G,Ming-Yang,Xie,Owner
7,Company H,Elizabeth,Andersen,Purchasing Rep
8,Company I,Sven,Mortensen,Purchasing Mgr.
9,Company J,Roland,Wacker,Purchasing Mgr.

Lic. Fernando Román Vega 13


ACCESS II

10,Company K,Peter,Krschne,Purchasing Mgr.


11,Company L,John,Edwards,Purchasing Mgr.
12,Company M,Andre,Ludick,Purchasing Rep
13,Company N,Carlos,Grilo,Purchasing Rep

Sólo se tiene la opción de crear un archivo delimitado cuando se exporta el contenido de una tabla
o una consulta sin formato. Un archivo delimitado contiene todos los registros y los campos del
objeto subyacente. Las columnas ocultas y las filas filtradas se exportan junto con el resto de
datos.

Archivos de ancho fijo En un archivo de ancho fijo, cada registro aparece en una línea aparte y el
ancho de cada campo se mantiene constante en todos los registros. Dicho de otro modo, la
longitud del primer campo de cada registro podría ser siempre de siete caracteres, la longitud del
segundo campo de cada registro podría ser siempre de doce caracteres, y así sucesivamente. Si los
valores reales de un campo varían de un registro a otro, los valores con menos caracteres que el
ancho requerido se rellenan con espacios al final.

1 Company A Anna Bedecs Owner


2 Company C Thomas Axen Purchasing Rep
3 Company D Christina Lee Purchasing Mgr.
4 Company E Martin O’Donnell Owner
5 Company F Francisco Pérez-Olaeta Purchasing Mgr.
6 Company G Ming-Yang Xie Owner
7 Company H Elizabeth Andersen Purchasing Rep
8 Company I Sven Mortensen Purchasing Mgr.
9 Company J Roland Wacker Purchasing Mgr.
10 Company K Peter Krschne Purchasing Mgr.
11 Company L John Edwards Purchasing Mgr.
12 Company M Andre Ludick Purchasing Rep
13 Company N Carlos Grilo Purchasing Rep

Sólo se tiene la opción de crear un archivo de ancho fijo cuando se exporta el contenido de una
tabla o una consulta sin formato. Un archivo de ancho fijo contiene todos los registros y los
campos del objeto subyacente. Las columnas ocultas y las filas filtradas se exportan junto con el
resto de datos.

Lic. Fernando Román Vega 14


ACCESS II

Archivos con formato En un archivo con formato, se utilizan los guiones (-) y los caracteres de
barra vertical (|) para organizar el contenido en una cuadrícula. Los registros aparecen como filas y
los campos aparecen como columnas. Los nombres de campo aparecen en la primera fila.

--------------------------------------------
| ID | E-mail Address |
--------------------------------------------
| 1 | nancy@northwindtraders.com |
--------------------------------------------
| 2 | andrew@northwindtraders.com |
--------------------------------------------
| 3 | jan@northwindtraders.com |
--------------------------------------------
| 4 | mariya@northwindtraders.com |
--------------------------------------------
| 5 | steven@northwindtraders.com |
--------------------------------------------
| 6 | michael@northwindtraders.com |
--------------------------------------------
| 7 | robert@northwindtraders.com |
--------------------------------------------
| 8 | laura@northwindtraders.com |
--------------------------------------------
| 9 | anne@northwindtraders.com |
--------------------------------------------

Si se decide exportar los datos de una tabla, una consulta, un formulario o un informe junto con el
formato, sólo es posible crear un archivo con formato. Un archivo con formato incluye solamente
los registros y los campos que se incluyen en el objeto de origen o se presentan en la vista abierta.
Las columnas ocultas y las filas filtradas no se exportan.

Ejecutar el Asistente para exportación

1. En el panel de exploración, haga clic con el botón secundario en el objeto de


origen, elija Exportar en el menú contextual y, a continuación, haga clic en
Archivo de texto .

O bien,

Lic. Fernando Román Vega 15


ACCESS II

Haga doble clic en el objeto de origen para abrirlo (en la vista Hoja de datos o en la de Formulario,
por ejemplo) y, en la ficha Datos externos, en el grupo Exportar, haga clic en Archivo de texto.

Aparece el cuadro de diálogo Exportar - Archivo de texto.

2. En el cuadro de diálogo Exportar - Archivo de texto, acepte o cambie el nombre que sugiere
Access para el archivo de texto.

3. Si está exportando una tabla o una consulta y desea exportar datos con formato y con diseño,
active la casilla de verificación Exportar datos con formato y diseño. Si está exportando un
formulario o un informe, la opción siempre está activada, pero aparece atenuada.

4. Para ver el archivo de texto de destino una vez completada la operación de exportación, active
la casilla de verificación Abrir el archivo de destino al finalizar la operación de exportación.

5. Si el origen es una hoja de datos y ha seleccionado algunos registros en la hoja de datos


abierta antes de iniciar la operación de exportación, puede activar la casilla de verificación
Exportar sólo los registros seleccionados. Pero si desea exportar todos los registros que están
en la vista de hoja de datos, deje sin activar la casilla de verificación.

6. Haga clic en Aceptar.

7. Si ya existe el archivo de texto que ha especificado en el paso 2, Access le solicita que


sobrescriba el archivo. Haga clic en Sí para sobrescribirlo, o en No para regresar al cuadro de
diálogo Exportar - Archivo de texto y especificar otro nombre.

8. Si está exportando datos con formato y con diseño, tendrá que elegir la codificación que se
utilizará para guardar el archivo. Acepte la opción predeterminada o seleccione la que desee y,
a continuación, haga clic en Aceptar.

Access exporta los datos y muestra el estado en la página final del asistente. Vaya a la sección
siguiente (Guardar las especificaciones y revisar el archivo de texto) para continuar.

Lic. Fernando Román Vega 16


ACCESS II

9. Si decide exportar los datos sin ningún formato ni diseño, se inicia el Asistente para
exportación de texto que le pide que seleccione el tipo de archivo de texto que desea crear.
Haga clic en Delimitado o en Ancho fijo y, a continuación, haga clic en Siguiente.

La elección que hace suele depender del sistema que funciona con los archivos exportados.
Algunos programas funcionan con archivos delimitados y otros con delimitados o de ancho fijo. Si
los usuarios deben ver los datos, un archivo de ancho fijo puede ser muy fácil de leer que un
archivo delimitado.

10. Siga uno de los procedimientos que se describen a continuación, dependiendo de la opción
que haya elegido en el paso anterior:

Delimitado
 En Elija el delimitador que separa los campos, seleccione o especifique el carácter que
delimita los campos.

 Para incluir los nombres de campo en el archivo de texto, active la casilla de verificación
Incluir nombres de campo en la primera fila.

 En la lista Cualificador de texto, seleccione el cualificador de texto (el carácter que se usa
para delimitar valores de texto). Si los datos de origen incluyen campos multivalor y elige
el punto y coma como carácter delimitador, la selección del cualificador de texto es muy
importante, porque incluir la lista de valores entre comillas sencillas o dobles ayuda a
mantener juntos los valores de la lista.

Ancho fijo
 Revise y coloque las líneas verticales que separan los campos. Si es necesario, desplácese a
la derecha para ver todos los campos.

11. En la última página del asistente, puede modificar el nombre del archivo de texto y la ruta de
acceso, o simplemente dejarlos como están y hacer clic en Siguiente.

Lic. Fernando Román Vega 17


ACCESS II

12. Haga clic en Finalizar. Access exporta los datos y muestra el estado de la operación de
exportación en la página final del asistente.

Guardar las especificaciones y revisar el archivo de texto

1. En la última página del Asistente para exportación, active la casilla de verificación Guardar
los pasos de la exportación.
Aparece un conjunto de controles adicionales.

2. En el cuadro Guardar como, escriba un nombre para las especificaciones de la


exportación.

3. Opcionalmente, escriba una descripción en el cuadro Descripción.

4. Haga clic en Guardar exportación.

O bien,
Para ejecutar la operación de exportación a intervalos fijos (como semanal o
mensualmente), active la casilla de verificación Crear tarea de Outlook y luego haga clic en
Guardar exportación. De este modo, se creará una tarea de Microsoft Office Outlook 2007
que le permitirá ejecutar la especificación en el futuro.

Solucionar problemas de valores que faltan o que no son correctos en un


archivo de texto

En la tabla siguiente, se describen maneras distintas de solucionar errores comunes.

Lic. Fernando Román Vega 18


ACCESS II

Problema Descripción

Faltan nombres de En un archivo de ancho fijo, los nombres de campo no están. Agréguelos
campos manualmente al archivo de texto. En un archivo delimitado, los nombres
de campo se incluyen si se activa la casilla de verificación Incluir nombres
de campo en la primera fila en el asistente.

Presentación de De forma predeterminada, los campos que admiten varios valores se


campos multivalor exportan como una lista de valores separados por punto y coma (;) e
incluidos entre comillas dobles (""). Si establece el punto y coma como
delimitador de campo y no ha cambiado el cualificador de texto a
Ninguno, cada valor de la lista multivalor puede aparecer como si
perteneciese a un campo individual. Cambie la configuración del
delimitador y ejecute de nuevo la operación de exportación,o bien,
enmarque los valores del campo multivalor del archivo de texto entre
comillas dobles.

Faltan imágenes, Los elementos gráficos (como logotipos, los contenidos de campos de
objetos y datos objetos OLE y los datos adjuntos que son parte del origen de datos) no se
adjuntos exportan.

Faltan gráficos Cuando se exporta un formulario o un informe que contiene un objeto de


Microsoft Graph, dicho objeto no se exporta.

Faltan expresiones La expresión que se utiliza para calcular los valores no se exporta al
archivo de texto. Sólo se exportan los resultados de las expresiones.
Agregue manualmente la fórmula al archivo de texto una vez finalizada la
operación de exportación.

Faltan Cuando se exporta un formulario o una hoja de datos, sólo se exporta el


subformularios y formulario o la hoja de datos principal. Repita la operación de
hojas secundarias de exportación para cada formulario y hoja secundaria de datos que desee
datos exportar.

Aparecen valores 1 y Cuando se exportan datos a un archivo delimitado o de ancho fijo, los
0 en campos Sí/No valores de los campos Sí/No aparecen como 1 (Verdadero o Sí) y 0 (Falso
o No). En el archivo de texto, realice una operación de buscar y

Lic. Fernando Román Vega 19


ACCESS II

reemplazar para corregir los valores.

Valores nulos Revise el archivo de origen para comprobar si el valor correspondiente


aparece correctamente en el campo de origen. Si ve un valor de error o
un valor no admitido, corrija el origen y repita la operación de
exportación.

1.1.4 Exportar datos a Word

Puede exportar datos desde su base de datos de Microsoft Office Access 2007 a un documento de
Microsoft Office Word 2007 utilizando el Asistente para exportación

El proceso de exportar datos a un documento de Word sigue estos pasos generales:

 Preparar los datos de origen para la exportación. Como parte de este paso, hay que
asegurarse de que los datos no contengan errores y decidir si se desea exportar parte o
todos los datos de la tabla de origen.

 Ejecutar el Asistente para exportación.

 Guardar opcionalmente la configuración como especificación de exportación para su uso


posterior.

Exportar los datos

1. En la ficha Datos externos, en el grupo Exportar, haga clic en Word.

2. En el Asistente para exportación, especifique el nombre del archivo de destino.

3. El Asistente siempre exporta datos con formato. Si desea ver el documento de Word tras
completar la operación de exportación, active la casilla de verificación Abrir el archivo de
destino al finalizar la operación de exportación.

Lic. Fernando Román Vega 20


ACCESS II

4. Si ha seleccionado los registros que desea exportar antes de que inicie la operación de
exportación, puede activar la casilla de verificación Exportar sólo los registros seleccionados.
No obstante, si desea exportar todos los registros de la vista, deje la casilla de verificación
desactivada.

5. Haga clic en Aceptar.

6. Si existe el documento de destino, se le pide que haga clic en Sí para sobrescribir el archivo.
Haga clic en No para cambiar el nombre del archivo de destino y vuelva a hacer clic en
Aceptar.

Access exporta los datos y abre el documento de destino en Word, en función de las opciones de
exportación especificadas en el Asistente. Access también muestra el estado de la operación en la
última página del Asistente.

1.2 Importar

1.2.1 Importar o vincular a los datos de otra base de datos de Access

Normalmente, importa datos por los siguientes motivos:

 Desea combinar dos bases de datos copiando todos los objetos de una base de datos a la otra.
Si realiza una importación, puede copiar a otra base de datos todas las tablas, las consultas, los
formularios, los informes, las macros y los módulos, así como las relaciones entre las tablas, en
una única operación.
 Necesita crear algunas tablas similares a otras tablas que ya existen en otra base de datos.
Podría copiar una tabla en su totalidad, o simplemente las definiciones de tabla, para no tener
que diseñar manualmente cada una de las tablas. Si decide importar sólo la definición de la
tabla, obtendrá una tabla vacía. Dicho de otro modo, se copian los campos y las propiedades
de los campos a la base de datos de destino, pero no se copian los datos de la tabla. Otra
ventaja de la importación (respecto a la operación de copiar y pegar) es que se puede optar
por importar las relaciones entre las tablas junto con las propias tablas.
 Necesita copiar a otra base de datos un conjunto de objetos relacionados entre ellos. Por
ejemplo, desea copiar la tabla Empleados y el formulario Empleados a una segunda base de
datos. La importación le permite copiar un objeto y todos los objetos relacionados con él a
otra base de datos en una sola operación.

Lic. Fernando Román Vega 21


ACCESS II

Considere la posibilidad de vincularse a datos en las siguientes condiciones:

 En su empresa se utilizan varias bases de datos de Access, pero los datos de algunas tablas,
como Empleados, se tienen que compartir entre varias bases de datos. En lugar de duplicar las
tablas en cada una de las bases de datos, puede guardarlas en una sola base de datos y crear
vínculos a ellas desde otras bases de datos.
 Otro grupo de trabajo o departamento necesitan utilizar los datos de su base de datos y
también agregar otros datos, pero usted desea seguir teniendo la propiedad de la estructura
de las tablas.

Importar datos

1. En la ficha Datos externos, en el grupo Importar, haga clic en Access.


2. En el cuadro de texto Nombre de archivo, escriba el nombre de la base de datos de origen
o haga clic en Examinar para abrir el cuadro de diálogo Abrir archivo.
3. Seleccione Importar tablas, consultas, formularios, informes, macros y módulos en la base
de datos actual y haga clic en Aceptar.
4. En el cuadro de diálogo Importar objetos, haga clic en cada ficha y seleccione los objetos
que desee.
Para cancelar la selección de un objeto, vuelva a hacer clic en el objeto.
5. Haga clic en Opciones para configuraciones otras opciones.

En la tabla siguiente, se describe cómo afecta cada opción a los resultados de la operación.

Elemento Descripción

Casilla de verificación Relaciones Actívela para importar las relaciones entre las tablas
seleccionadas.

Casilla de verificación Menús y Actívela para importar los menús y barras de herramientas
barras de herramientas personalizados que existan en la base de datos de origen.
Los menús y las barras de herramientas se muestran en una
ficha denominada Complementos.

Lic. Fernando Román Vega 22


ACCESS II

Casilla de verificación Actívela para importar las especificaciones de importación o


Especificaciones de exportación guardadas que existan en la base de datos de
importación/exportación origen.

Casilla de verificación Grupos del Actívela para importar los grupos personalizados del panel
panel de exploración de exploración que existan en la base de datos de origen.

Botón de opción Definición y Selecciónelo para importar la estructura y los datos de todas
datos las tablas seleccionadas.

Botón de opción Sólo definición Selecciónelo para importar sólo los campos de las tablas
seleccionadas. Los registros de origen no se importan.

Botón de opción Como consultas Selecciónelo para importar las consultas seleccionadas
como consultas. En este caso, recuerde importar todas las
tablas subyacentes junto con las consultas.

Botón de opción Como tablas Selecciónelo para importar las consultas como tablas. En
este caso, no tiene que importar las tablas subyacentes.

6. Haga clic en Aceptar para finalizar la operación.


Access copia los datos y muestra mensajes de error si se produce algún problema. Si la
operación importa correctamente los datos, la página final del asistente permite guardar
los detalles de la operación como especificaciones de importación para uso futuro. En los
pasos siguientes se explica cómo guardar los detalles de la operación en forma de
especificación.

1.2.2 Importar o vincular a los datos de un libro de Excel

Escenarios comunes para importar datos de Excel a Access

Lic. Fernando Román Vega 23


ACCESS II

 Es usuario de Excel desde hace tiempo pero para seguir avanzando desea utilizar Access para
trabajar con estos datos. Desea moverlos de las hojas de cálculo de Excel a una o varias bases
de datos nuevas de Access.

 Su departamento o grupo de trabajo utiliza Access pero recibe ocasionalmente datos en


formato de Excel que se deben combinar con sus bases de datos de Access. Desea importar
estas hojas de cálculo de Excel a su base de datos a medida que las va recibiendo.

 Utiliza Access para administrar los datos pero los informes semanales que recibe del resto de
su equipo son libros de Excel. Desea agilizar el proceso de importación para garantizar que se
importan datos cada semana a una hora determinada a su base de datos.

Preparar la hoja de cálculo

1. Busque el archivo de origen y seleccione la hoja de cálculo que contiene los datos que desea
importar a Access. Si desea importar sólo una parte de una hoja de cálculo, puede definir un
rango con nombre que incluya sólo las celdas que desea importar.

2. Revise los datos origen y ejecute una de estas acciones que se indica en la tabla siguiente.

Elemento Descripción

Número de El número de columnas de origen que desea importar no puede ser superior a
columnas 255 porque Access no admite más de 255 campos en una tabla.

Omitir Es una buena costumbre incluir sólo las filas y columnas que desea importar
columnas y en la hoja de cálculo o el rango con nombre de origen.
filas Filas

Formato de Asegúrese de que las celdas estén en formato de tabla. Si la hoja de cálculo o
tabla el rango con nombre incluyen celdas combinadas, el contenido de la celda se
coloca en el campo que corresponde a la columna más a la izquierda y los
otros campos se dejan en blanco.

Columnas, filas Elimine todas las columnas y filas en blanco innecesarias de la hoja de cálculo
y celdas en o del rango.

Lic. Fernando Román Vega 24


ACCESS II

blanco

Valores de Si una o varias celdas de la hoja de cálculo o del rango contienen valores de
error error, como #NUM y #DIV, corríjalos antes de comenzar la operación de
importación. Si una hoja de cálculo o un rango de origen contienen valores de
error, Access coloca un valor nulo en los campos correspondientes de la tabla.

Tipo de datos Para evitar errores durante la importación, asegúrese de que cada columna de
origen contiene el mismo tipo de datos en cada fila. Access explora las ocho
primeras filas de origen para determinar el tipo de datos de los campos de la
tabla.

3. Cierre el libro de trabajo de origen si está abierto. Mantener abierto el archivo de origen
puede producir errores de conversión de datos durante la operación de importación.

Iniciar la operación de importación

1. En la ficha Datos externos, en el grupo Importar, haga clic en Excel.


2. En el cuadro de diálogo Obtener datos externos - Hoja de cálculo de Excel, en el cuadro
Nombre de archivo, especifique el nombre del archivo de Excel que contiene los datos que
desea importar.
-O bien-
Haga clic en Examinar y use el cuadro de diálogo Abrir archivo para localizar el archivo que
desee importar.

3. Especifique cómo desea guardar los datos importados.

 Para almacenar los datos en una tabla nueva, seleccione Importar el origen de datos
en una nueva tabla de la base de datos actual. Se le pedirá que dé un nombre
posteriormente a esta tabla.
 Para anexar los datos a una tabla existente, seleccione Anexar una copia de los
registros a la tabla y seleccione una tabla en la lista desplegable. Esta operación no
está disponible si la base de datos no contiene ninguna tabla.

4. Haga clic en Aceptar.


Se inicia el Asistente para importación de hojas de cálculo que le guía en el proceso de
importación. Continúe con los pasos siguientes

Lic. Fernando Román Vega 25


ACCESS II

5. En la primera página del Asistente, seleccione la hoja de cálculo que contiene los datos que
desea importar. A continuación, haga clic en Siguiente.
6. En la segunda página del asistente, haga clic en Mostrar hojas de cálculo o en Mostrar rangos
con nombre, seleccione la hoja de cálculo o el rango con nombre que desee importar y haga
clic en Siguiente.

7. Si la primera fila de la hoja de cálculo o del rango de origen contiene los nombres de campos,
seleccione La primera columna contiene encabezado de columna y haga clic en Siguiente.

Si está importando los datos a una nueva tabla, Access utiliza los encabezados de columnas para
dar nombre a los campos de la tabla. Puede cambiar estos nombres durante o después de la
operación de importación. Si está anexando datos a una tabla existente, asegúrese de que los
encabezados de columna en la hoja de cálculo de origen coincidan exactamente con los
nombres de los campos en la tabla de destino.
Si está anexando datos a una tabla existente, vaya directamente al paso 6. Si está agregando los
datos a una tabla nueva, lleve a cabo los pasos que quedan.

8. El Asistente le pide que revise las propiedades de campos. Haga clic en una columna en la parte
inferior de la página para ver las propiedades de los campos correspondientes. Si lo desea,
puede realizar alguna de estas tareas.

 Revise y cambie, si lo desea, el nombre y el tipo de datos del campo de destino.


Access revisa las primeras ocho filas en cada columna y sugiere el tipo de datos para el campo
correspondiente. Si la columna de la hoja de cálculo contiene distintos tipos de valores, como
texto y números, en las primeras ocho filas de una columna, el Asistente sugiere un tipo de
datos que es compatible con todos los valores de la columna, a menudo, el tipo de datos de
texto. Aunque puede elegir un tipo de datos distinto, recuerde que los valores que no son
compatibles con el tipo de datos que elige se omitirán o se convertirán incorrectamente
durante el proceso de importación. Para obtener más información sobre cómo corregir valores
incorrectos o valores que falten, vea la sección Solucionar valores que faltan o son incorrectos,
más adelante en este artículo.

 Para crear un índice en el campo, establezca Indizado en Sí.


 Para omitir completamente una columna de origen, active la casilla de verificación No importar
el campo (Saltar).

Haga clic en Siguiente cuando termine de seleccionar las opciones.

9. En la siguiente pantalla, especifique una clave principal para la tabla. Si selecciona Permitir a
Access agregar la clave principal, Access agrega un campo Autonumérico como primer campo
en la tabla de destino y lo rellena automáticamente con valores de identificador únicos,
comenzando por 1. A continuación, haga clic en Siguiente.

Lic. Fernando Román Vega 26


ACCESS II

10.En la última pantalla del asistente, especifique un nombre para la tabla de destino. En el cuadro
Importar a la tabla, escriba un nombre para la tabla. Si la tabla ya existe, Access muestra un
mensaje que solicita si desea sobrescribir el contenido existente de la tabla. Haga clic en Sí para
continuar o en No para especificar un nombre diferente para la tabla de destino y, a
continuación, haga clic en Finalizar para importar los datos.

Si Access puede importar algunos o todos los datos, el Asistente muestra una página que indica el
estado de la operación de importación. Además, puede guardar la información de la operación
para un uso futuro como especificación. Por el contrario, si la operación no se ejecutó
correctamente, Access muestra el mensaje de error Error al intentar importar el archivo.

11.Haga clic en Sí para guardar la información de la operación para un uso futuro. Guardar la
información le ayuda a repetir la operación sin tener que examinar el Asistente cada vez.

1.2.3 Importar o vincular a los datos de un archivo de texto

1. Abra la base de datos de Access en la que se guardarán los datos importados.


Si no desea guardar los datos en ninguna de las bases de datos existentes, cree una base de
datos en blanco.

2. Antes de iniciar la operación de importación, decida si desea guardar los datos en una tabla
nueva o existente.

 Crear una tabla nueva Si elige guardar los datos en una tabla nueva, Access crea una tabla
y le agrega los datos importados. Si ya existe una tabla con el nombre especificado, Access
sobrescribe el contenido de la tabla con los datos importados.
 Anexar a una tabla existente Si está agregando los datos a una tabla existente, el proceso
de importación anexa los datos a la tabla especificada.

Cuando procesa, recuerde que la mayor parte de las operaciones de anexión se realizan
incorrectamente porque los datos de origen no coinciden con la configuración de la
estructura y de los campos de la tabla de destino. Para evitar esto, abra la tabla en la vista
Diseño y revise lo siguiente:

 Primera fila Si la primera fila del archivo de texto de origen no contiene nombres de
campo, asegúrese de que la posición y el tipo de datos de cada columna coincide con
los del campo correspondiente de la tabla. Para archivos de texto delimitado, si la
primera fila contiene encabezados de columna, no es necesario que coincidan el orden
Lic. Fernando Román Vega 27
ACCESS II

de columnas y campos pero el nombre y el tipo de datos debe coincidir exactamente


con los del campo correspondiente. Al importar archivos de texto de ancho fijo, Access
no le ofrece la posibilidad de utilizar los valores de la primera fila como nombres de
campo.
 Campos que faltan o campos adicionales Si uno o varios campos no están en la tabla
de destino, agréguelos antes de comenzar la operación de importación. No obstante,
si la tabla de destino contiene campos que no existen en el archivo de origen, no es
necesario que los elimine de la tabla siempre que acepten valores nulos.
 Clave principal Si la tabla contiene un campo de clave principal, el archivo de origen
debe tener una columna que contiene valores compatibles con el campo de clave
principal. Además, los valores de clave importados deben ser únicos. Si un registro
importado contiene un valor de clave principal que ya existe en la tabla de destino, la
operación de importación muestra un mensaje de error. Debe editar los datos de
origen para que contengan valores de clave única e iniciar luego la operación de
importación de nuevo.
 Campos indizados Si la propiedad Indizado de un campo de la tabla está establecida
en Sí (Sin duplicados), la columna correspondiente en el archivo de texto de origen
debe contener valores únicos.
3. En la ficha Datos externos, en el grupo Importar, haga clic en Archivo de texto.

4. En el cuadro de diálogo Obtener datos externos - Archivo de texto, en el cuadro Nombre de


archivo, escriba el nombre del archivo de origen.

5. Especifique cómo desea guardar los datos importados.


 Para almacenar los datos en una tabla nueva, seleccione Importar el origen de datos en
una nueva tabla de la base de datos actual. Se le pedirá que dé un nombre posteriormente
a esta tabla.
 Para anexar los datos a una tabla existente, seleccione Anexar una copia de los registros a
la tabla y, a continuación, una tabla en la lista desplegable.

6. Haga clic en Aceptar.


Access examina el contenido del archivo y recomienda cómo se debe organizar el archivo. Si el
archivo utiliza un delimitador para separar los campos, asegúrese de que la opción Delimitado
esté seleccionada. Si el archivo tiene campos de ancho fijo, compruebe que la opción Ancho
fijo esté seleccionada. Si no tiene claro sobre si el archivo tiene campos de anchos fijos o
delimitados, vea la sección Preparar el archivo de origen, que aparece anteriormente.

7. Haga clic en Siguiente.


8. La información mostrada por el Asistente depende de si selecciona la opción Delimitado o
Ancho fijo.

Lic. Fernando Román Vega 28


ACCESS II

9. Si ha elegido anexar los datos, vaya al paso 12. Si está importando los datos a una nueva tabla,
haga clic en Siguiente. Entonces, debe revisar las propiedades de campo mostradas en el
Asistente.

10. Haga clic en una columna en la mitad inferior de la página del asistente para ver las
propiedades del campo correspondiente. Revise y cambie, si lo desea, el nombre y el tipo de
datos del campo de destino.

Access revisa las 25 primeras filas de cada columna y sugiere el tipo de datos predeterminado
para el campo correspondiente. Si hay diferentes tipos de valores, como valores de texto y
numéricos, en las 25 primeras filas de una columna, el Asistente sugiere un tipo de datos que
sea compatible con todos o la mayor parte de los valores de la columna: suele ser a menudo el
tipo de datos de texto. Aunque puede elegir un tipo de datos diferente, recuerde que los
valores que no son compatibles con el tipo de datos elegido se omiten o se convierten
incorrectamente. Para obtener más información sobre cómo corregir valores que faltan o
incorrectos, vea la sección Solucionar valores que faltan o son incorrectos, posteriormente en
este artículo.

11. Para crear un índice en el campo, establezca Indizado en Sí. Para omitir totalmente una
columna de origen, active la casilla de verificación No importar el campo (Saltar). A
continuación, haga clic en Siguiente.

12. Si se agregan registros a una tabla nueva, el Asistente le pide que especifique una clave
principal para la tabla. Si selecciona Permitir a Access agregar la clave principal, Access agrega
un campo Autonumérico como primer campo en la tabla de destino y lo rellena
automáticamente con identificadores únicos, comenzando por 1. Haga clic en Siguiente.

13. Access muestra la página final del Asistente. Si está importando registros a una tabla nueva,
especifique un nombre para la tabla de destino. En el cuadro Importar a la tabla, escriba un
nombre para la tabla. Si la tabla ya existe, un mensaje le pregunta si desea sobrescribir el
contenido existente de la tabla. Haga clic en Sí para continuar o en No para especificar un
nombre diferente para la tabla de destino.

14. Haga clic en Finalizar para importar los datos.

15. Access intenta importar los datos. Si se importa algún dato, el Asistente muestra un cuadro de
diálogo que le indica el estado de la operación de importación. Por el contrario, si la operación
se realiza de forma totalmente incorrecta, Access muestra el mensaje de error Error al intentar
importar el archivo.

16. Abra la tabla de destino en la vista Hoja de datos. Compare los datos de la tabla con el archivo
de origen y asegúrese de que los datos que aparecen sean correctos.

Lic. Fernando Román Vega 29


ACCESS II

UNIDAD 2. Relaciones

Lic. Fernando Román Vega 30


ACCESS II

2.1 Relaciones entre tablas

Definiciones informales

El modelo relacional se basa en el concepto matemático de relación, que gráficamente se


representa mediante una tabla. Codd, que era un experto matemático, utilizó una terminología
perteneciente a las matemáticas, en concreto de la teoría de conjuntos y de la lógica de
predicados.

Una relación es una tabla con columnas y filas. Un SGBD sólo necesita que el usuario pueda
percibir la base de datos como un conjunto de tablas. Esta percepción sólo se aplica a la estructura
lógica de la base de datos (en el nivel externo y conceptual de la arquitectura de tres niveles ANSI-
SPARC). No se aplica a la estructura física de la base de datos, que se puede implementar con
distintas estructuras de almacenamiento.

Un atributo es el nombre de una columna de una relación. En el modelo relacional, las relaciones
se utilizan para almacenar información sobre los objetos que se representan en la base de datos.
Una relación se representa gráficamente como una tabla bidimensional en la que las filas
corresponden a registros individuales y las columnas corresponden a los campos o atributos de
esos registros. Los atributos pueden aparecer en la relación en cualquier orden.

Propiedades de las relaciones

Las relaciones tienen las siguientes características:


1. Cada relación tiene un nombre y éste es distinto del nombre de todas las demás.
2. Los valores de los atributos son atómicos: en cada tupla, cada atributo toma un
solo valor. Se dice que las relaciones están normalizadas.
3. No hay dos atributos que se llamen igual.
4. El orden de los atributos no importa: los atributos no están ordenados.

Lic. Fernando Román Vega 31


ACCESS II

5. Cada tupla es distinta de las demás: no hay tuplas duplicadas.


6. El orden de las tuplas no importa: las tuplas no están ordenadas.

Tipos de relaciones

En un SGBD relacional pueden existir varios tipos de relaciones, aunque no todos manejan
todos los tipos.
 Relaciones base. Son relaciones reales que tienen nombre y forman parte directa
de la base de datos almacenada (son autónomas).
 Vistas. También denominadas relaciones virtuales, son relaciones con nombre y
derivadas: se representan mediante su definición en términos de otras relaciones
con nombre, no poseen datos almacenados propios.
 Instantáneas. Son relaciones con nombre y derivadas. Pero a diferencia de las
vistas, son reales, no virtuales: están representadas no sólo por su definición en
términos de otras relaciones con nombre, sino también por sus propios datos
almacenados. Son relaciones de sólo de lectura y se refrescan periódicamente.
 Resultados de consultas. Son las relaciones resultantes de alguna consulta
especificada. Pueden o no tener nombre y no persisten en la base de datos.
 Resultados intermedios. Son las relaciones que contienen los resultados de las
subconsultas. Normalmente no tienen nombre y tampoco persisten en la base de
datos.
 Resultados temporales. Son relaciones con nombre, similares a las relaciones base
o a las instantáneas, pero la diferencia es que se destruyen automáticamente en
algún momento apropiado.

Una base de datos tiene mas de una tabla y además las tablas están relacionadas entre sí. La
relación de las tablas tiene un objetivo: evitar duplicar información.
Observe la siguiente tabla de ventas:

Lic. Fernando Román Vega 32


ACCESS II

Vendedor Ciudad Producto Fecha Unidades Vendidas

Pedro Perez Buendia Jamundí Sardinas La Española 12-Jun-2005 12

Pedro P. Buendia Jdí Atun Atunete 15-Jul-2005 30

P.P. Buendia Jdí Sardinas La Espanola 07-Ago-2005 18

Carlos Andres Suarez Jdí. Atún Atuente 08-Ago-2005 25

Carlos A. Suarez Jamundi Sardinas Espanola 01-Ago-2005 30

Pedro Buendia Cali Atunete 02-Abr-2005 17

Pedro Perez Buendía Jamund. Atún Atunete 10-Abr-2005 40

Ahora el gerente quiere el siguiente informe:


1. ¿Cuánto vendió Pedro Pérez Buendía?
2. ¿Cuánto se vendió en el municipio de Jamundí?
3. ¿Cuánto se vendió de "Sardinas Española"?

El problema es que en cada registro a "Pedro Pérez Buendía" se le nombra como: "Pedro Perez
Buendia", "Pedro P. Buendia", "P.P. Buendia", "Pedro Buendia", es decir no hay ninguna
regulación, luego es imposible sacar un informe así, imagínese que no sean solo 7 registros sino
100.000 registros con el mismo problema. Igual sucede con "Jamundí" que se llama "Jdí", "Jdí.",
"Jamund.". Ni hablar del Producto.

Por esa razón nacen las tablas relacionales. Ahora se cambia un poco.

I. Una tabla llamada Vendedores

Código Nombre

V1 Pedro Pérez Buendía

V2 Carlos Andrés Suárez

II. Una tabla llamada Municipios

Código Nombre

Lic. Fernando Román Vega 33


ACCESS II

M1 Jamundí

M2 Cali

III. Una tabla llamada Productos

Código Nombre

P1 Sardinas La Española

P2 Atún Atunete

IV. Luego la tabla de Ventas queda así:

Vendedor Ciudad Producto Fecha Unidades Vendidas

V1 M1 P1 12-Jun-2005 12

V1 M1 P2 15-Jul-2005 30

V1 M1 P1 07-Ago-2005 18

V2 M1 P2 08-Ago-2005 25

V2 M1 P1 01-Ago-2005 30

V1 M2 P2 02-Abr-2005 17

V1 M1 P2 10-Abr-2005 40

La nueva tabla de ventas tiene grandes ventajas: primero ya no ocupa tanto espacio porque solo
son códigos, segundo los datos son precisos. Ahora si es posible sacar los informes pedidos.

2.2 La integridad referencial

En la tabla de ventas NO es posible colocar un vendedor V5 porque NO existe este en la tabla de


vendedores. Tampoco puedo colocar una ciudad M8 porque NO existe en la tabla de Ciudad. Eso
se conoce como integridad referencial.
Otra característica de la integridad referencial se puede ver aquí: en la tabla de vendedores, yo NO
puedo borrar al vendedor V1 porque esta siendo usado en la tabla de ventas.

Lic. Fernando Román Vega 34


ACCESS II

Una vez definida la estructura de datos del modelo relacional, pasamos a estudiar las reglas de
integridad que los datos almacenados en dicha estructura deben cumplir para garantizar que son
correctos.

Al definir cada atributo sobre un dominio se impone una restricción sobre el conjunto de valores
permitidos para cada atributo. A este tipo de restricciones se les denomina restricciones de
dominios. Hay además dos reglas de integridad muy importantes que son restricciones que se
deben cumplir en todas las bases de datos relacionales y en todos sus estados o instancias (las
reglas se deben cumplir todo el tiempo). Estas reglas son la regla de integridad de entidades y la
regla de integridad referencial. Antes de definirlas, es preciso conocer el concepto de nulo.

2.3 Las 4 reglas de la integridad

Nulos

Cuando en una tupla un atributo es desconocido, se dice que es nulo. Un nulo no


representa el valor cero ni la cadena vacía, éstos son valores que tienen significado. El
nulo implica ausencia de información, bien porque al insertar la tupla se desconocía el
valor del atributo, o bien porque para dicha tupla el atributo no tiene sentido.

Ya que los nulos no son valores, deben tratarse de modo diferente, lo que causa
problemas de implementación. De hecho, no todos los SGBD relacionales soportan los
nulos.

Regla de integridad de entidades

La primera regla de integridad se aplica a las claves primarias de las relaciones base: ninguno de
los atributos que componen la clave primaria puede ser nulo.

Lic. Fernando Román Vega 35


ACCESS II

Por definición, una clave primaria es un identificador irreducible que se utiliza para identificar de
modo único las tuplas. Que es irreducible significa que ningún subconjunto de la clave primaria
sirve para identificar las tuplas de modo único. Si se permite que parte de la clave primaria sea
nula, se está diciendo que no todos sus atributos son necesarios para distinguir las tuplas, con lo
que se contradice la irreducibilidad.

Nótese que esta regla sólo se aplica a las relaciones base y a las claves primarias, no a las claves
alternativas.

Regla de integridad referencial

La segunda regla de integridad se aplica a las claves ajenas: si en una relación hay alguna
clave ajena, sus valores deben coincidir con valores de la clave primaria a la que hace
referencia, o bien, deben ser completamente nulos.
La regla de integridad referencial se enmarca en términos de estados de la base de datos:
indica lo que es un estado ilegal, pero no dice cómo puede evitarse. La cuestión es ¿qué
hacer si estando en un estado legal, llega una petición para realizar una operación que
conduce a un estado ilegal? Existen dos opciones: rechazar la operación, o bien aceptar la
operación y realizar operaciones adicionales compensatorias que conduzcan a un estado
legal.
Por lo tanto, para cada clave ajena de la base de datos habrá que contestar a tres
preguntas:
 Regla de los nulos: ¿Tiene sentido que la clave ajena acepte nulos?
 Regla de borrado: ¿Qué ocurre si se intenta borrar la tupla referenciada por la
clave ajena?
o Restringir: no se permite borrar la tupla referenciada.
o Propagar: se borra la tupla referenciada y se propaga el borrado a las tuplas
que la referencian mediante la clave ajena.
o Anular: se borra la tupla referenciada y las tuplas que la referenciaban
ponen a nulo la clave ajena (sólo si acepta nulos).

Lic. Fernando Román Vega 36


ACCESS II

 Regla de modificación: ¿Qué ocurre si se intenta modificar el valor de la clave


primaria de la tupla referenciada por la clave ajena?
o Restringir: no se permite modificar el valor de la clave primaria de la tupla
referenciada.
o Propagar: se modifica el valor de la clave primaria de la tupla referenciada y
se propaga la modificación a las tuplas que la referencian mediante la clave
ajena.
o Anular: se modifica la tupla referenciada y las tuplas que la referenciaban
ponen a nulo la clave ajena (sólo si acepta nulos).

Reglas de negocio

Además de las dos reglas de integridad anteriores, los usuarios o los administradores de la base de
datos pueden imponer ciertas restricciones específicas sobre los datos, denominadas reglas de
negocio.

Por ejemplo, si en una oficina de la empresa inmobiliaria sólo puede haber hasta veinte
empleados, el SGBD debe dar la posibilidad al usuario de definir una regla al respecto y debe
hacerla respetar. En este caso, no debería permitir dar de alta un empleado en una oficina que ya
tiene los veinte permitidos.

Hoy en día aún existen SGBD relacionales que no permiten definir este tipo de restricciones ni las
hacen respetar.

Lic. Fernando Román Vega 37


ACCESS II

2.4 ¿Cómo se implementa esto en Microsoft Access?

Tanto en Microsoft Access como en otros motores de bases de datos, uno puede configurar la
integridad referencial. Estos son los pasos:

1. Crear las tablas

2. Crear la referencia, dando clic en el botón de relaciones como se ve en la imagen

Lic. Fernando Román Vega 38


ACCESS II

Seleccione todas las tablas y oprima el botón agregar

Lic. Fernando Román Vega 39


ACCESS II

Así se ve el mapa para crear las relaciones

Acomode un poco las tablas

Lic. Fernando Román Vega 40


ACCESS II

Arrastre del campo Código de Vendedores al campo Vendedor en Ventas porque esa es la relación
a crear.

3. Hacer que se valide la integridad referencial

Lic. Fernando Román Vega 41


ACCESS II

Puede ver claramente la relación.

Lic. Fernando Román Vega 42


ACCESS II

Se hace lo mismo con el resto

Lic. Fernando Román Vega 43


ACCESS II

Guarde la relación

Lic. Fernando Román Vega 44


ACCESS II

4. Pruebas de la integridad referencial.


Intente llenar la tabla de Ventas sin haber llenado las otras tablas.

Y este es el mensaje del error.

Lic. Fernando Román Vega 45


ACCESS II

Ahora se llenan las tablas básicas

Y se puede llenar sin problemas la tabla de ventas

Si observa las tablas como Municipios verá que Access nos muestra la relación directamente en
los datos

Lic. Fernando Román Vega 46


ACCESS II

Si intenta eliminar un registro, Access evita el borrado porque hay datos relacionados.

Lic. Fernando Román Vega 47


ACCESS II

UNIDAD 3. SQL (Structured query language)

Lic. Fernando Román Vega 48


ACCESS II

3.1. INTRODUCCION A SQL

¿Qué es SQL?

El SQL (Structured query language), lenguaje de consulta estructurado, es un lenguaje surgido de


un proyecto de investigación de IBM para el acceso a bases de datos relacionales. Actualmente se
ha convertido en un estándar de lenguaje de bases de datos, y la mayoría de los sistemas de bases
de datos lo soportan, desde sistemas para computadoras personales, hasta grandes
computadoras.

Por supuesto, a partir del estándar cada sistema ha desarrollado su propio SQL que puede variar
de un sistema a otro, pero con cambios que no suponen ninguna complicación para alguien que
conozca un SQL concreto.

El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones de agregado.
Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de
datos.

Como su nombre indica, el SQL nos permite realizar consultas a la base de datos. Pero el nombre
se queda corto ya que SQL además realiza funciones de definición, control y gestión de la base de
datos. Las sentencias SQL se clasifican según su finalidad dando origen a tres ‘lenguajes’ o mejor
dicho sublenguajes:

1. El DDL (Data Description Language), lenguaje de definición de datos, incluye órdenes para
definir, modificar o borrar las tablas en las que se almacenan los datos y de las relaciones
entre estas. (Es el que más varia de un sistema a otro).

2. El DML (Data Manipulation Language), lenguaje de manipulación de datos, nos permite


recuperar los datos almacenados en la base de datos y también incluye órdenes para permitir
al usuario actualizar la base de datos añadiendo nuevos datos, suprimiendo datos antiguos o
modificando datos previamente almacenados.

El DCL (Data Control Language), lenguaje de control de datos, contiene elementos útiles para
trabajar en un entorno multiusuario, en el que es importante la protección de los datos, la
seguridad de las tablas y el establecimiento de restricciones en el acceso, así como elementos para
coordinar la compartición de datos por parte de usuarios concurrentes, asegurando que no
interfieren unos con otros.

Una de las características para entender más que es SQL es, sentencia SQL es como una frase
(escrita en inglés) con la que decimos lo que queremos obtener y de donde obtenerlo.
Lic. Fernando Román Vega 49
ACCESS II

Todas las sentencias empiezan con un verbo (palabra reservada que indica la acción a realizar),
seguido del resto de cláusulas, algunas obligatorias y otras opcionales que completan la frase.
Todas las sentencias siguen una sintaxis para que se puedan ejecutar correctamente, para
describir esa sintaxis utilizaremos un diagrama sintáctico como el que se muestra a continuación.

3.2. DONDE SE ESCRIBEN LAS SENTENCIAS SQL

Para crear y después ejecutar una sentencia SQL en Access, lo fácil es utilizar la ventana SQL de las
consultas.

En las consultas que se construyen con el generador de consultas se especifica las tablas, aquí no
se procede igual, uno mismo escribe las propias sentencias SQL.

Para crear una consulta de selección, seguir los siguientes pasos:

1. Abrir la base de datos qué quieras


trabajar.
2. Activar la ficha crear, dirígete al grupo
otros y clic en Diseño de consulta.
3. En el cuadro mostrar tabla clic en botón
cerrar.
4. En el botón de vistas del grupo resultados escoge la vista SQL.

5. En el espacio grande (donde aparece la sentencia SELECT;) puedes comenzar a escribir las
sentencias.

Ejemplos.

SELECT *
FROM articulos
ORDER BY articulos.codigo;

Lic. Fernando Román Vega 50


ACCESS II

Explicación: Con select *, selecciona todos los campos de la tabla.


From artículos, desde la tabla llama artículos.
Order by artículos.codigo, ordena los datos por medio del campo código de la tabla.

Por lo tanto: Muestra todos los campos de la tabla artículos y los ordena por medio código.

SELECT articulos.codigo, articulos.marca, articulos.nombre


FROM articulos
WHERE (((articulos.marca)="ACER"));

Explicación: línea 1. Selecciona el código, marca y nombre.


línea 2. Hace referencia a la tabla llamada artículos.
línea 3. Es una condición, que el campo llamo marca contenga un valor igual
ACER.

Por lo tanto: Muestra todos los campos de la tabla artículos y los ordena por medio código.

3.3. CONSULTAS SIMPLES

3.3.1 SENTENCIA SELECT.

Permite recuperar datos de una o varias tablas. La sentencia SELECT es con mucho la más compleja
y potente de las sentencias SQL.

Esta sentencia forma parte del DML (lenguaje de manipulación de datos), con la sentencia SELECT
veremos cómo seleccionar columnas de una tabla, cómo seleccionar filas y cómo obtener las filas
ordenadas por el criterio que queramos.

El resultado al ejecutar la consulta es una tabla lógica, porque no se guarda en el disco sino que
está en memoria y cada vez que ejecutamos la consulta se vuelve a calcular.

Cuando se ejecuta la consulta se visualiza el resultado en forma de tabla con columnas y filas, pues
en la SELECT tenemos que indicar qué columnas queremos que tenga el resultado y qué filas
queremos seleccionar de la tabla origen.

Lic. Fernando Román Vega 51


ACCESS II

SINTAXIS DE LA SENTENCIA SELECT.

SELECT: Se indica el nombre de la(s) columna(s) que se requieren mostrar de la tabla


especificada en FROM

FROM: Con la cláusula FROM se indica en cual tabla tiene que buscar la información. En esta
ocasión son consultas simples el resultado se obtiene de una única tabla. Una
especificación de tabla puede ser el nombre de una consulta guardada , o el nombre de
una tabla

Más adelante veremos cómo trabajar con where y order by, porque aun estamos en consultas
sencillas.

 Utilización del *

Se utiliza el asterisco * en la lista de selección para indicar 'todas las columnas de la tabla'.
Tiene dos ventajas:

Lic. Fernando Román Vega 52


ACCESS II

Si añadimos una columna nueva en la tabla, esta nueva columna saldrá sin tener que modificar la
consulta. Evitar nombrar las columnas una a una (es más corto).

Se puede combinar el * con el nombre de una tabla (oficinas.*), pero esto se utiliza más cuando el
origen de la consulta son dos tablas

SELECT * FROM oficinas

o bien

SELECT oficinas.* FROM oficinas

Lista todos los datos de las oficinas

 Columnas de la tabla origen

Las columnas se pueden especificar mediante su nombre simple (nbcol) o su nombre cualificado
(nbtabla.nbcol, el nombre de la columna precedido del nombre de la tabla que contiene la
columna y separados por un punto).

El nombre cualificado se puede emplear siempre que queramos y es obligatorio en algunos casos
que veremos más adelante.

Cuando el nombre de la columna o de la tabla contiene espacios en blanco, hay que poner el
nombre entre corchetes [ ] y además el número de espacios en blanco debe coincidir. Por ejemplo
[codigo de cliente] no es lo mismo que [ codigo de cliente] (el segundo lleva un espacio en blanco
delante de código)

Ejemplos :

SELECT nombre, oficina, contrato


FROM ofiventas

Lista el nombre, oficina, y fecha de contrato de todos los empleados.

Lic. Fernando Román Vega 53


ACCESS II

SELECT idfab, idproducto, descripcion, precio


FROM productos

Lista una tarifa de productos

 Alias de columna.

Cuando se visualiza el resultado de la consulta, normalmente las columnas toman el nombre que
tiene la columna en la tabla, si queremos cambiar ese nombre lo podemos hacer definiendo un
alias de columna mediante la cláusula AS será el nombre que aparecerá como título de la columna.

Ejemplo:

SELECT idfab AS fabricante, idproducto, descripcion


FROM productos

Como título de la primera columna aparecerá fabricante en vez de idfab

 Columnas calculadas.

Además de las columnas que provienen directamente de la tabla origen, una consulta SQL puede
incluir columnas calculadas cuyos valores se calculan a partir de los valores de los datos
almacenados.

Para solicitar una columna calculada, se especifica en la lista de selección una expresión en vez de
un nombre de columna. La expresión puede contener sumas, restas, multiplicaciones y divisiones,
concatenación & , paréntesis y también funciones predefinidas).

Para ver con más detalle cómo formar una expresión pincha aquí

Ejemplos:

SELECT ciudad, región, (ventas-objetivo) AS superávit

Lic. Fernando Román Vega 54


ACCESS II

FROM oficinas

Lista la ciudad, región y el superavit de cada oficina.

SELECT idfab, idproducto, descripcion, (existencias * precio) AS valoracion


FROM productos

De cada producto obtiene su fabricante, idproducto, su descripción y el valor del inventario

SELECT nombre, MONTH(contrato), YEAR(contrato)


FROM repventas

Lista el nombre, mes y año del contrato de cada vendedor.

La función MONTH() devuelve el mes de una fecha


La función YEAR() devuelve el año de una fecha

SELECT oficina, 'tiene ventas de ', ventas


FROM oficinas

Listar las ventas en cada oficina con el formato: 22 tiene ventas de 186,042.00 ptas

3.3.2 Selección de filas

A continuación veremos las cláusulas que nos permiten indicar qué filas queremos visualizar.

Las cláusulas DISTINCT / ALL


Lic. Fernando Román Vega 55
ACCESS II

Al incluir la cláusula DISTINCT en la SELECT, se eliminan del resultado las repeticiones de filas. Si
por el contrario queremos que aparezcan todas las filas incluidas las duplicadas, podemos incluir la
cláusula ALL o nada, ya que ALL es el valor que SQL asume por defecto.
Por ejemplo queremos saber los códigos de los directores de oficina.

SELECT dir FROM oficinas

SELECT ALL dir FROM oficinas

Lista los códigos de los directores de las oficinas. El director 108 aparece en cuatro oficinas, por lo
tanto aparecerá cuatro veces en el resultado de la consulta.

SELECT DISTINCT dir FROM oficinas


En este caso el valor 108 aparecerá una sola vez ya que le decimos que liste los distintos valores de
directores.

La cláusula TOP

La cláusula TOP permite sacar las n primeras filas de la tabla origen. No elige entre valores iguales,
si pido los 25 primeros valores pero el que hace 26 es el mismo valor que el 25, entonces
devolverá 26 registros en vez de 25 (o los que sea). Siempre se guia por la columna de ordenación,
la que aparece en la cláusula ORDER BY o en su defecto la clave principal de la tabla.
Por ejemplo queremos saber los dos empleados más antiguos de la empresa.

SELECT TOP 2 numemp, nombre


FROM empleado
ORDER BY contrato

Lista el código y nombre de los empleados ordenándolos por fecha de contrato, sacando
unicamente los dos primeros (serán los dos más antiguos).

Lic. Fernando Román Vega 56


ACCESS II

SELECT TOP 3 numemp, nombre


FROM empleado
ORDER BY contrato

En este caso tiene que sacar los tres primeros, pero si nos fijamos en las fechas de contrato
tenemos 20/10/86, 10/12/86, 01/03/87, 01/03/87, la tercera fecha es igual que la cuarta, en este
caso sacará estas cuatro filas en vez de tres, y sacaría todas las filas que tuviesen el mismo valor
que la tercera fecha de contrato.

El número de filas que queremos visualizar se puede expresar con un número entero o como un
porcentaje sobre el número total de filas que se recuperarían sin la cláusula TOP. En este último
caso utilizaremos la cláusula TOP n PERCENT (porcentaje en inglés).

SELECT TOP 20 PERCENT nombre


FROM empleado
ORDER BY contrato

Lista el nombre de los empleados ordenándolos por fecha de contrato, sacando únicamente un
20% del total de empleados. Como tenemos 10 empleados, sacará los dos primeros, si tuviésemos
100 empleados sacaría los 20 primeros.

3.3.3 La cláusula WHERE

La cláusula WHERE selecciona únicamente las filas que cumplan la condición de selección
especificada.

En la consulta sólo aparecerán las filas para las cuales la condición es verdadera (TRUE), los valores
nulos (NULL) no se incluyen por lo tanto en las filas del resultado. La condición de selección puede
ser cualquier condición válida o combinación de condiciones utilizando los operadores NOT (no)
AND (y) y OR (ó). En ACCESS2000 una cláusula WHERE puede contener hasta 40 expresiones
vinculadas por operadores lógicos AND y OR.

Lic. Fernando Román Vega 57


ACCESS II

Para empezar veamos un ejemplo sencillo:

SELECT nombre
FROM empleados
WHERE oficina = 12

Lista el nombre de los empleados de la oficina 12.

SELECT nombre
FROM empleados
WHERE oficina = 12 AND edad > 30

Lista el nombre de los empleados de la oficina 12 que tengan más de 30 años. (oficina igual a 12 y
edad mayor que 30)

Condiciones de selección

Las condiciones de selección son las condiciones que pueden aparecer en la cláusula WHERE. En
SQL tenemos cinco condiciones básicas:

1. el test de comparación
2. el test de rango
3. el test de pertenencia a un conjunto
4. el test de valor nulo
5. el test de correspondencia con patrón.

1. El test de comparación.

Lic. Fernando Román Vega 58


ACCESS II

Compara el valor de una expresión con el valor de otra. La sintaxis es la siguiente:

= Igual que
<> Distinto de
< Menor que
<= Menor o igual
> Mayor que
>= Mayor o igual

SELECT numemp, nombre


FROM empleados
WHERE ventas > cuota

Lista los empleados cuyas ventas superan su cuota

SELECT numemp, nombre


FROM empleados
WHERE contrato < #01/01/1988#

Lista los empleados contratados antes del año 88 (cuya fecha de contrato sea anterior al 1 de
enero de 1988).

¡¡Ojo!!, las fechas entre almohadillas # # deben estar con el formato mes,dia,año aunque
tengamos definido otro formato para nuestras fechas.

Lic. Fernando Román Vega 59


ACCESS II

SELECT numemp, nombre


FROM empleados
WHERE YEAR(contrato) < 1988

Este ejemplo obtiene lo mismo que el anterior pero utiliza la función year(). Obtiene los
empleados cuyo año de la fecha de contrato sea menor que 1988.

SELECT oficina
FROM oficinas
WHERE ventas < objetivo * 0.8

Lista las oficinas cuyas ventas estén por debajo del 80% de su objetivo.

Hay que utilizar siempre el punto decimal aunque tengamos definida la coma como separador de
decimales.

SELECT oficina
FROM oficinas
WHERE dir = 108

Lista las oficinas dirigidas por el empleado 108.

2. Test de rango (BETWEEN).

Examina si el valor de la expresión está comprendido entre los dos valores definidos por exp1 y
exp2.

Tiene la siguiente sintaxis:

Lic. Fernando Román Vega 60


ACCESS II

SELECT numemp, nombre


FROM empleados
WHERE ventas BETWEEN 100000 AND 500000

Lista los empleados cuyas ventas estén comprendidas entre 100,000 y 500,000

SELECT numemp, nombre


FROM empleados
WHERE (ventas >= 100000) AND (ventas <= 500000)

Obtenemos lo mismo que en el ejemplo anterior. Los paréntesis son opcionales.

3. Test de pertenencia a conjunto (IN)

Examina si el valor de la expresión es uno de los valores incluidos en la lista de valores.


Tiene la siguiente sintaxis:

SELECT numemp, nombre, oficina


FROM empleados
WHERE oficina IN (12,14,16)

Lista los empleados de las oficinas 12, 14 y 16

SELECT numemp, nombre


FROM empleados
WHERE (oficina = 12) OR (oficina = 14) OR (oficina = 16)

Obtenemos lo mismo que en el ejemplo anterior. Los paréntesis son opcionales.


Lic. Fernando Román Vega 61
ACCESS II

4. Test de valor nulo (IS NULL)

Una condición de selección puede dar como resultado el valor verdadero TRUE, falso FALSE o nulo
NULL.

Cuando una columna que interviene en una condición de selección contiene el valor nulo, el
resultado de la condición no es verdadero ni falso, sino nulo, sea cual sea el test que se haya
utilizado. Por eso si queremos listar las filas que tienen valor en una determinada columna, no
podemos utilizar el test de comparación, la condición oficina = null devuelve el valor nulo sea cual
sea el valor contenido en oficina. Si queremos preguntar si una columna contiene el valor nulo
debemos utilizar un test especial, el test de valor nulo.

Tiene la siguiente sintaxis:

Ejemplos:

SELECT oficina, ciudad


FROM oficinas
WHERE dir IS NULL

Lista las oficinas que no tienen director.

SELECT numemp, nombre


FROM empleados
WHERE oficina IS NOT NULL

Lista los empleados asignados a alguna oficina (los que tienen un valor en la columna oficina).

5. Test de correspondencia con patrón (LIKE)

Lic. Fernando Román Vega 62


ACCESS II

Se utiliza cuando queremos utilizar caracteres comodines para formar el valor con el comparar.
Tiene la siguiente sintaxis:

Los comodines más usados son los siguientes:

a) ? representa un carácter cualquiera

b) * representa cero o más caracteres

c) # representa un dígito cualquiera (0-9)

Ejemplos:

SELECT numemp, nombre


FROM empleados
WHERE nombre LIKE 'Luis*'

Lista los empleados cuyo nombre empiece por Luis (Luis seguido de cero o más caracteres).

SELECT numemp, nombre


FROM empleados
WHERE nombre LIKE '*Luis*'

Lista los empleados cuyo nombre contiene Luis, en este caso también saldría los empleados José
Luis (cero o más caracteres seguidos de LUIS y seguido de cero o más caracteres).

SELECT numemp, nombre


FROM empleados

Lic. Fernando Román Vega 63


ACCESS II

WHERE nombre LIKE '??a*'

Lista los empleados cuyo nombre contenga una a como tercera letra (dos caracteres, la letra a, y
cero o más caracteres.

3.3.4 Ordenación de las filas ORDER BY

Para ordenar las filas del resultado de la consulta, tenemos la cláusula ORDER BY. Con esta
cláusula se altera el orden de visualización de las filas de la tabla pero en ningún caso se modifica
el orden de las filas dentro de la tabla. La tabla no se modifica.

Podemos indicar la columna por la que queremos ordenar utilizando su nombre de columna
(nbcolumna) o utilizando su número de orden que ocupa en la lista de selección (Nºcolumna).

Ejemplo:

SELECT nombre, oficina, contrato


FROM empleados
ORDER BY oficina

Es equivalente a

SELECT nombre, oficina, contrato


FROM empleados
ORDER BY 2

Lic. Fernando Román Vega 64


ACCESS II

Por defecto el orden será ascendente (ASC) (de menor a mayor si el campo es numérico, por orden
alfabético si el campo es de tipo texto, de anterior a posterior si el campo es de tipo fecha/hora,
etc...

Ejemplos:

SELECT nombre, numemp, oficinarep


FROM empleados
ORDER BY nombre
Obtiene un listado alfabético de los empleados.
SELECT nombre, numemp, contrato
FROM empleados
ORDER BY contrato

Obtiene un listado de los empleados por orden de antiguedad en la empresa (los de más
antiguedad aparecen primero).

SELECT nombre, numemp,ventas


FROM empleados
ORDER BY ventas

Obtiene un listado de los empleados ordenados por volúmen de ventas sacándo los de menores
ventas primero.

Si queremos podemos alterar ese orden utilizando la cláusula DESC (DESCendente), en este caso el
orden será el inverso al ASC.

Ejemplos:

SELECT nombre, numemp, contrato


FROM empleados
ORDER BY contrato DESC
Lic. Fernando Román Vega 65
ACCESS II

Obtiene un listado de los empleados por orden de antiguedad en la empresa empezando por los
más recientemente incorporados.

SELECT nombre, numemp,ventas


FROM empleados
ORDER BY ventas DESC

Obtiene un listado de los empleados ordenados por volumen de ventas sacando primero los de
mayores ventas.

También podemos ordenar por varias columnas, en este caso se indican las columnas separadas
por comas.

Se ordenan las filas por la primera columna de ordenación, para un mismo valor de la primera
columna, se ordenan por la segunda columna, y así sucesivamente.

La cláusula DESC o ASC se puede indicar para cada columna y así utilizar una ordenación distinta
para cada columna. Por ejemplo ascendente por la primera columna y dentro de la primera
columna, descendente por la segunda columna.

Ejemplos:
SELECT region, ciudad, ventas
FROM oficinas
ORDER BY region, ciudad

Muestra las ventas de cada oficina, ordenadas por orden alfabético de región y dentro de cada
región por ciudad.

SELECT region, ciudad, (ventas - objetivo) AS superávit


FROM oficinas
ORDER BY region, 3 DESC

Lic. Fernando Román Vega 66


ACCESS II

Lista las oficinas clasificadas por región y dentro de cada región por superavit de modo que las de
mayor superavit aparezcan las primeras.

3.4. Consultas Multitablas.

Se le llama así porque las consultas están basadas en más de una tabla, es importante tener en
cuenta que las tablas tendrán algún tipo de relación.

Hay dos tipos de consultas:


1. Unión de tablas
2. Composición de tablas.

3.4.1 Unión de tablas

Esta operación se utiliza cuando tenemos dos tablas con las mismas columnas y queremos obtener
una nueva tabla con las filas de la primera y las filas de la segunda. En este caso la tabla resultante
tiene las mismas columnas que la primera tabla (que son las mismas que las de la segunda tabla).

Por ejemplo tenemos una tabla de libros nuevos y una tabla de libros antiguos y queremos una
lista con todos los libros que tenemos. En este caso las dos tablas tienen las mismas columnas, lo
único que varía son las filas, además queremos obtener una lista de libros (las columnas de una de
las tablas) con las filas que están tanto en libros nuevos como las que están en libros antiguos, en
este caso utilizaremos este tipo de operación.

Cuando hablamos de tablas pueden ser tablas reales almacenadas en la base de datos o tablas
lógicas (resultados de una consulta), esto nos permite utilizar la operación con más frecuencia ya
que pocas veces tenemos en una base de datos tablas idénticas en cuanto a columnas. El
resultado es siempre una tabla lógica.

Por ejemplo queremos en un sólo listado los productos cuyas existencias sean iguales a cero y
también los productos que aparecen en pedidos del año 90. En este caso tenemos unos productos
en la tabla de productos y los otros en la tabla de pedidos, las tablas no tienen las mismas
Lic. Fernando Román Vega 67
ACCESS II

columnas no se puede hacer una unión de ellas pero lo que interesa realmente es el identificador
del producto (idfab, idproducto), luego por una parte sacamos los códigos de los productos con
existencias cero (con una consulta), por otra parte los códigos de los productos que aparecen en
pedidos del año 90 (con otra consulta), y luego unimos estas dos tablas lógicas.
El operador que permite realizar esta operación es el operador UNION.

3.4.2 La composición de tablas

La composición de tablas consiste en concatenar filas de una tabla con filas de otra. En este caso
obtenemos una tabla con las columnas de la primera tabla unidas a las columnas de la segunda
tabla, y las filas de la tabla resultante son concatenaciones de filas de la primera tabla con filas de
la segunda tabla.

El ejemplo anterior quedaría de la siguiente forma con la composición:

Lic. Fernando Román Vega 68


ACCESS II

A diferencia de la unión la composición permite obtener una fila con datos de las dos tablas, esto
es muy útil cuando queremos visualizar filas cuyos datos se encuentran en dos tablas.

Por ejemplo queremos listar los pedidos con el nombre del representante que ha hecho el pedido,
pues los datos del pedido los tenemos en la tabla de pedidos pero el nombre del representante
está en la tabla de empleados y además queremos que aparezcan en la misma línea; en este caso
necesitamos componer las dos tablas (Nota: en el ejemplo expuesto a continuación, hemos
seleccionado las filas que nos interesan).

3.4.3 Tipos de composición de tablas.

Existen distintos tipos de composición, aprenderemos a utilizarlos todos y a elegir el tipo más
apropiado a cada caso. Los tipos de composición de tablas son:

a. El producto cartesiano
b. El INNER JOIN
c. El LEFT / RIGHT JOIN

El operador UNION

UNION sirve para obtener a partir de dos tablas con las mismas columnas, una nueva tabla con las
filas de la primera y las filas de la segunda.

La sintaxis es la siguiente:
Lic. Fernando Román Vega 69
ACCESS II

Ejemplo:

SELECT idfab,idproducto
FROM productos
WHERE existencias = 0 TABLE [existencias cero]
UNION ALL UNION ALL
o bien
SELECT fab,producto TABLE [pedidos 90]
FROM pedidos ORDER BY idproducto
WHERE year(fechapedido) = 1990
ORDER BY idproducto

Se ha incluido la cláusula ALL porque no nos importa que salgan filas repetidas.
Se ha incluido ORDER BY para que el resultado salga ordenado por idproducto, observar que
hemos utilizado el nombre de la columna de la primera SELECT, también podíamos haber puesto
ORDER BY 2 pero no ORDER BY producto (es el nombre de la columna de la segunda tabla).

Para el 2º caso hemos creado una consulta llamada existencias cero con la primera SELECT, y una
consulta llamada pedidos 90 con la segunda SELECT. Observar que los nombres de las consultas
están entre corchetes porque contienen espacios en blanco, y que en este caso hay que utilizar
TABLE

a. El producto cartesiano

El producto cartesiano es un tipo de composición de tablas, aplicando el producto cartesiano a dos


tablas se obtiene una tabla con las columnas de la primera tabla unidas a las columnas de la
segunda tabla, y las filas de la tabla resultante son todas las posibles concatenaciones de filas de la
primera tabla con filas de la segunda tabla.

Lic. Fernando Román Vega 70


ACCESS II

La sintaxis es la siguiente:

Para ver cómo funciona el producto cartesiano tomaremos el nombre de las consultas [existencias
cero] y [pedidos 90] creadas, y creamos una consulta que halle el producto cartesiano de las dos.

SELECT * obtenemos
FROM [existencias cero],[pedidos 90] la siguiente
tabla:

Se observa que tenemos las dos filas de la primera consulta combinadas con las dos filas de la
segunda.

Esta operación no es de las más utilizadas, normalmente cuando queremos componer dos tablas
es para añadir a las filas de una tabla, una fila de la otra tabla, por ejemplo añadir a los pedidos los
datos del cliente correspondiente, o los datos del representante, esto equivaldría a un producto
cartesiano con una selección de filas:

SELECT *
FROM pedidos,clientes
WHERE pedidos.clie=clientes.numclie

Combinamos todos los pedidos con todos los clientes pero luego seleccionamos los que cumplan
que el código de cliente de la tabla de pedidos sea igual al código de cliente de la tabla de clientes,
por lo tanto nos quedamos con los pedidos combinados con los datos del cliente correspondiente.

Las columnas que aparecen en la cláusula WHERE de nuestra consulta anterior se denominan
columnas de emparejamiento ya que permiten emparejar las filas de las dos tablas. Las columnas
de emparejamiento no tienen por qué estar incluidas en la lista de selección.

Lic. Fernando Román Vega 71


ACCESS II

Normalmente emparejamos tablas que están relacionadas entre sí y una de las columnas de
emparejamiento es clave principal, pues en este caso, cuando una de las columnas de
emparejamiento tiene un índice definido es más eficiente utilizar otro tipo de composición, el
INNER JOIN.

Las 2 tablas:

Consulta con producto cartesiano

SELECT *
FROM alumnos, kardex

Resultado al ejecutarla

Lic. Fernando Román Vega 72


ACCESS II

b. El INNER JOIN

El INNER JOIN es otro tipo de composición de tablas, permite emparejar filas de distintas tablas de
forma más eficiente que con el producto cartesiano cuando una de las columnas de
emparejamiento está indexada. Ya que en vez de hacer el producto cartesiano completo y luego
seleccionar la filas que cumplen la condición de emparejamiento, para cada fila de una de las
tablas busca directamente en la otra tabla las filas que cumplen la condición, con lo cual se
emparejan sólo las filas que luego aparecen en el resultado.

La sintaxis es la siguiente:

Ejemplo:

SELECT *
FROM pedidos INNER JOIN clientes ON pedidos.clie = clientes.numclie

tabla1 y tabla2 son especificaciones de tabla (nombre de tabla con alias o no, nombre de consulta
guardada), de las tablas cuyos registros se van a combinar.

Pueden ser las dos la misma tabla, en este caso es obligatorio definir al menos un alias de tabla.
col1, col2 son las columnas de emparejamiento.

Observar que dentro de la cláusula ON los nombres de columna deben ser nombres cualificados
(llevan delante el nombre de la tabla y un punto).

Las columnas de emparejamiento deben contener la misma clase de datos, las dos de tipo texto,
de tipo fecha etc... los campos numéricos deben ser de tipos similares. Por ejemplo, se puede
combinar campos AutoNumérico y Long puesto que son tipos similares, sin embargo, no se puede
combinar campos de tipo Simple y Doble. Además las columnas no pueden ser de tipo Memo ni
OLE.

Como representa cualquier operador de comparación ( =, <, >, <=, >=, o <> ) y se utiliza para
establecer la condición de emparejamiento.

Se pueden definir varias condiciones de emparejamiento unidas por los operadores AND y OR
poniendo cada condición entre paréntesis.

Lic. Fernando Román Vega 73


ACCESS II

Ejemplo:
Las 2 tablas:

Consulta con inner join

SELECT alumnos.matricula, alumnos.nombre, kardex.materia, kardex.calif


FROM alumnos INNER JOIN kardex ON alumnos.matricula = kardex.matricula
ORDER BY alumnos.nombre, kardex.materia;

Resultado al ejecutarla

c. El LEFT JOIN y RIGHT JOIN

El LEFT JOIN y RIGHT JOIN son otro tipo de composición de tablas, también denominada
composición externa. Son una extensión del INNER JOIN.

Las composiciones vistas hasta ahora (el producto cartesiano y el INNER JOIN) son composiciones
internas ya que todos los valores de las filas del resultado son valores que están en las tablas que
se combinan.

La descripción de la sintaxis es la misma que la del INNER JOIN, lo único que cambia es la palabra
INNER por LEFT o RIGHT (izquierda en inglés).

Lic. Fernando Román Vega 74


ACCESS II

Esta operación consiste en añadir al resultado del INNER JOIN las filas de la tabla de la izquierda
que no tienen correspondencia en la otra tabla, y rellenar en esas filas los campos de la tabla de la
derecha con valores nulos.

Ejemplo: Para el LEFT JOIN

Las 2 tablas:

Consulta con inner join

SELECT alumnos.matricula, alumnos.nombre, kardex.materia, kardex.calif


FROM alumnos INNER JOIN kardex ON alumnos.matricula = kardex.matricula
ORDER BY alumnos.nombre, kardex.materia;

Resultado al ejecutarla

Lic. Fernando Román Vega 75


ACCESS II

Ejemplo: Para el RIGHT JOIN

Las 2 tablas:

Consulta con inner join

SELECT alumnos.matricula, alumnos.nombre, kardex.materia, kardex.calif


FROM alumnos RIGHT JOIN kardex ON alumnos.matricula = kardex.matricula
ORDER BY alumnos.nombre, kardex.materia;

Resultado al ejecutarla

3.4.4 ¿Cuándo utilizar cada operación?

Para saber en cada caso qué tipo de operación se debe utilizar, a continuación tienes un gráfico
que indica qué preguntas se tienen que hacer y según la respuesta, qué operación utilizar.

 Para resumir hemos llamado T1 y T2 las tablas de las que queremos sacar los datos y R la
tabla lógica que representa el resultado de consulta. T1 y T2 podrían ser tablas guardadas
o consultas.
 En la última parte cuando se pregunta "En T1 hay filas que no tienen pareja en T2", la
pregunta se debe de interpretar como "en alguna de las tablas hay filas que no tienen
pareja".

Lic. Fernando Román Vega 76


ACCESS II

3.5. Actualización de datos

Hasta ahora hemos trabajado el cómo recuperar datos almacenados en las tablas de de una base
de datos. Ahora vamos a tratar el de la actualización de esos datos, es decir insertar nuevas filas,
borrar filas o cambiar el contenido de las filas de una tabla. Estas operaciones modifican los datos
almacenados en las tablas pero no su estructura, ni su definición.

Lic. Fernando Román Vega 77


ACCESS II

3.5.1 Insertar una fila INSERT INTO

Los registros pueden ser introducidos a partir de sentencias que emplean la instrucción Insert.

La sintaxis utilizada es la siguiente:

Insert Into nombre_tabla (nombre_campo1, nombre_campo2,...)


Values (valor_campo1, valor_campo2...)

Un ejemplo sencillo a partir de nuestra tabla modelo es la introducción de un nuevo cliente lo cual
se haría con una instrucción de este tipo:

Insert Into clientes (nombre, apellidos, direccion, poblacion, codigopostal, email, pedidos)
Values ('Perico', 'Palotes', 'Percebe n°13', 'Lepe', '123456', 'perico@desarrolloweb.com', 33);

Como puede verse, los campos no numéricos o booleanos van delimitados por apostrofes: '.
También resulta interesante ver que el código postal lo hemos guardado como un campo no
numérico. Esto es debido a que en determinados paises (Inglaterra,como no) los codigos postales
contienen también letras.

Insertar en una tabla varias filas

Ejemplo: Supongamos ahora que la tabla repres tuviese las siguientes columnas numemp,
oficinarep, nombrerep. En este caso no podríamos utilizar el asterisco, tendríamos que poner:

INSERT INTO repres SELECT numemp, oficina, nombre FROM empleados WHERE titulo = 'rep
ventas';

O bien:

INSERT INTO repres (numemp, oficinarep, nombrerep) SELECT numemp, oficina, nombre FROM
empleados WHERE titulo = 'rep ventas';
Lic. Fernando Román Vega 78
ACCESS II

Insertar filas en una nueva tabla

Ejemplo:

SELECT * INTO t2 FROM t1

Esta sentencia genera una nueva tabla t2 con todas las filas de la tabla t1. Las columnas se
llamarán igual que en t1 pero t2 no será una copia exacta de t1 ya no tendrá clave principal ni
relaciones con las otras tablas, ni índices si los tuviese t1 etc...

Por ejemplo:
Queremos enviarle a un representante una tabla con todos los datos personales de sus clientes
para que les pueda enviar cartas etc...

SELECT numclie AS codigo, nombre, direccion, telefono INTO susclientes FROM clientes WHERE
repclie = '103';

3.5.2 Modificar el contenido de las filas UPDATE

Una vez que hay datos en la tabla, podríamos tener la necesidad de modificar los mismos. Para
hacerlo, utilizamos el comando UPDATE.

La sentencia UPDATE modifica los valores de una o más columnas en las filas seleccionadas de una
o varias tablas.
La sintaxis es la siguiente:

UPDATE "nombre_tabla"
SET "columna_1" = [expresion]
WHERE {condición}

 Nombre_tabla: puede ser un nombre de tabla, un nombre de consulta o una composición de


tablas

Lic. Fernando Román Vega 79


ACCESS II

 SET: específica qué columnas van a modificarse y qué valores asignar a esas columnas.
 columna_1: es el nombre de la columna a la cual queremos asignar un nuevo valor por lo
tanto debe ser una columna de la tabla origen.
 Expresión: en cada asignación debe generar un valor del tipo de dato apropiado para la
columna indicada.
 WHERE indica qué filas van a ser modificadas. Si se omite la cláusula WHERE se actualizan
todas las filas. Se puede incluir una subconsulta.

Ejemplo:
Queremos poner a cero las ventas de los empleados de la oficina 12

UPDATE empleados SET ventas = 0 WHERE oficina = 12;

Ejemplo:
Queremos poner a cero el límite de crédito de los clientes asignados a empleados de la oficina 12.

UPDATE clientes SET limitecredito = 0


WHERE repclie IN (SELECT numemp FROM empleados WHERE oficina = 12);

Cuando se ejecuta una sentencia UPDATE primero se genera el origen y se seleccionan las filas
según la cláusula WHERE. A continuación se coge una fila de la selección y se le aplica la cláusula
SET, se actualizan todas las columnas incluidas en la cláusula SET a la vez por lo que los nombres
de columna pueden especificarse en cualquier orden. Después se coge la siguiente fila de la
selección y se le aplica del mismo modo la cláusula SET, así sucesivamente con todas las filas de la
selección.

Ejemplo:

UPDATE oficinas SET ventas=0, objetivo=ventas;

O bien:

Lic. Fernando Román Vega 80


ACCESS II

UPDATE oficinas SET objetivo=ventas, ventas=0;

3.6. DDL Lenguaje de Definición de Datos

El DDL (Data Definition Language) lenguaje de definición de datos es la parte del SQL que más
varía de un sistema a otro ya que esa área tiene que ver con cómo se organizan internamente los
datos y eso, cada sistema lo hace de una manera u otra.

Así como el DML de Microsoft Jet incluye todas las sentencias DML que nos podemos encontrar en
otros SQLs (o casi todas), el DDL de Microsoft Jet en cambio contiene menos instrucciones que
otros sistemas.

Saber cuándo debe utilizarse una consulta de definición de datos

A diferencia de otras consultas, una consulta de definición de datos no recupera datos. La mayoría
de las consultas utilizan el lenguaje de manipulación de datos (DML), que comprende comandos
del lenguaje de consulta estructurado (SQL) que especifican cómo los datos de los objetos de base
de datos existentes se combinan y se manipulan para generar los resultados de datos deseados.
Las consultas de definición de datos utilizan el lenguaje de definición de datos (DDL), que incluye
comandos SQL que especifican la definición de los objetos de base de datos que almacenan o
indizan los datos, así como comandos SQL que controlan el acceso de los usuarios a los objetos de
base de datos. En Office Access 2007, una consulta de definición de datos define o cambia la
definición de un objeto de base de datos.

En general, debe utilizar las interfaces de diseño gráfico que Office Access 2007 proporciona (por
ejemplo, la vista Diseño y la ventana Relaciones) para crear tablas, restricciones, índices y
relaciones. Sin embargo, si tiene tablas que elimina y vuelve a crear con frecuencia, el uso de estas
interfaces podría requerir mucho tiempo. Mediante una consulta de definición de datos, puede
escribir una consulta una vez y, a continuación, ejecutarla de nuevo cuando sea necesario.
Considere la posibilidad de utilizar una consulta de definición de datos sólo si está familiarizado
con las instrucciones SQL y si va a eliminar y volver a crear con frecuencia determinadas tablas,
restricciones o índices.

Lic. Fernando Román Vega 81


ACCESS II

Importante: El uso de consultas de definición de datos para modificar objetos de base de datos
puede ser arriesgado porque las acciones no van acompañadas de cuadros de diálogo de
confirmación. Si comete un error, puede perder datos o cambiar el diseño de una tabla sin darse
cuenta. Tenga cuidado cuando utilice una consulta de definición de datos para modificar objetos
de la base de datos. Si no es responsable de mantener la base de datos que va a utilizar, debe
consultar con el administrador de esa base de datos antes de ejecutar una consulta de definición
de datos. Además, se recomienda hacer una copia de seguridad de las tablas en las que va a
ejecutar este tipo de consulta.

La base de datos puede estar deshabilitada por el propio Access para ejecutar las sentencias de
DDL, la forma de habilitar el contenido de la base de datos para que pueda ejecutarse una
consulta de definición de datos es la siguiente.

1. Escribamos una sentencia de tipo DDL y ejecutarla.


2. En la Barra de mensajes, haga clic en Opciones y, a continuación, haga clic en Habilitar este
contenido.
3. En el grupo Otros de la ficha Crear, haga clic en Diseño de consulta.
4. Cierre el cuadro de diálogo Mostrar tabla.
5. En la ficha Diseño, en el grupo Tipo de consulta, haga clic en Definición de datos.
La cuadrícula de diseño está oculta y se muestra la ficha de objeto de la vista SQL.
6. Escriba la siguiente instrucción SQL como ejemplo:
CREATE TABLE Cars (Name TEXT(30), Year TEXT(4), Price CURRENCY)
7. En el grupo Resultados de la ficha Diseño, haga clic en Ejecutar.

3.6.1 CREATE TABLE

La sentencia CREATE TABLE sirve para crear la estructura de una tabla no para rellenarla con datos,
nos permite definir las columnas que tiene y ciertas restricciones que deben cumplir esas
columnas.

La sintaxis es la siguiente:

nbtabla: nombre de la tabla que estamos definiendo


nbcol: nombre de la columna que estamos definiendo
tipo: tipo de dato de la columna, todos los datos almacenados en la columna deberán ser de ese
tipo. Para ver qué tipos de datos se encuentran en la tabla de abajo.
Lic. Fernando Román Vega 82
ACCESS II

Una restricción consiste en la definición de una característica adicional que tiene una columna o una
combinación de columnas, suelen ser características como valores no nulos (campo requerido), definición de
índice sin duplicados, definición de clave principal y definición de clave foránea (clave ajena o externa,
campo que sirve para relacionar dos tablas entre sí).

restricción1: una restricción de tipo 1 es una restricción que aparece dentro de la definición de la
columna después del tipo de dato y afecta a una columna, la que se está definiendo.

restricción2: una restricción de tipo 2 es una restricción que se define después de definir todas las
columnas de la tabla y afecta a una columna o a una combinación de columnas.

Tipo de dato Sinónimos Tamaño Descripción


BINARY VARBINARY 1 byte Se puede almacenar cualquier tipo de datos en un campo
BINARY VARYING por de este tipo. Los datos no se traducen (por ejemplo, a
BIT VARYING carácter texto). La forma en que se introducen los datos en un
campo binario indica cómo aparecerán al mostrarlos.
BIT BOOLEAN 1 byte Valores Sí y No, y campos que contienen solamente uno de
LOGICAL dos valores.
LOGICAL1
YESNO
TINYINT INTEGER1 1 byte Un número entero entre 0 y 255.
BYTE
COUNTER AUTOINCREMENT Se utiliza para campos contadores cuyo valor se
incrementa automáticamente al crear un nuevo registro.
MONEY CURRENCY 8 bytes Un número entero comprendido entre
– 922.337.203.685.477,5808 y 922.337.203.685.477,5807.
DATETIME DATE 8 bytes Una valor de fecha u hora entre los años 100 y 9999
TIME
UNIQUEIDENTIFIER GUID 128 bits Un número de identificación único utilizado con llamadas a
procedimientos remotos.
DECIMAL NUMERIC 17 bytes Un tipo de datos numérico exacto con valores
DEC comprendidos entre 1028 - 1 y - 1028 - 1. Puede definir la
precisión (1 - 28) y la escala (0 - precisión definida). La
precisión y la escala predeterminadas son 18 y 0,
respectivamente.
REAL SINGLE 4 bytes Un valor de coma flotante de precisión simple con un

Lic. Fernando Román Vega 83


ACCESS II

FLOAT4 intervalo comprendido entre – 3,402823E38 y –


IEEESINGLE 1,401298E-45 para valores negativos, y desde 1,401298E-
45 a 3,402823E38 para valores positivos, y 0.
FLOAT DOUBLE 8 bytes Un valor de coma flotante de precisión doble con un
FLOAT8 intervalo comprendido entre – 1,79769313486232E308 y –
IEEEDOUBLE 4,94065645841247E-324 para valores negativos, y desde
NUMBER 4,94065645841247E-324 a 1,79769313486232E308 para
valores positivos, y 0.
SMALLINT SHORT 2 bytes Un entero corto entre – 32.768 y 32.767.
INTEGER2
INTEGER LONG 4 bytes Un entero largo entre – 2.147.483.648 y 2.147.483.647.
INT
INTEGER4
IMAGE LONGBINARY Lo que se Desde cero hasta un máximo de 2.14 gigabytes.
GENERAL requiera Se utiliza para objetos OLE.
OLEOBJECT
TEXT LONGTEXT 2 bytes Desde cero hasta un máximo de 2.14 gigabytes.
LONGCHAR por
MEMO carácter.
NOTE
NTEXT
CHAR TEXT(n) 2 bytes
ALPHANUMERIC por
CHARACTER
carácter.
STRING
VARCHAR
CHARACTER
VARYING
NCHAR
NATIONAL
CHARACTER
NATIONAL CHAR
NATIONAL
CHARACTER
VARYING
NATIONAL CHAR
VARYING

Lic. Fernando Román Vega 84


ACCESS II

Una restricción de tipo 1 se utiliza para indicar una característica de la columna que estamos
definiendo, tiene la siguiente sintaxis:

La cláusula NOT NULL indica que la columna no podrá contener un valor nulo, es decir que se
deberá rellenar obligatoriamente y con un valor válido (equivale a la propiedad requerido Sí de las
propiedades del campo).

La cláusula CONSTRAINT sirve para definir una restricción que se podrá eliminar cuando queramos
sin tener que borrar la columna. A cada restricción se le asigna un nombre que se utiliza para
identificarla y para poder eliminarla cuando se quiera.

Como restricciones tenemos la de clave primaria (clave principal), la de índice único (sin
duplicados), la de valor no nulo, y la de clave foránea.
La cláusula PRIMARY KEY se utiliza para definir la columna como clave principal de la tabla. Esto
supone que la columna no puede contener valores nulos ni pueden haber valores duplicados en
esa columna, es decir que dos filas no pueden tener el mismo valor en esa columna.
En una tabla no pueden haber varias claves principales, por lo que no podemos incluir la cláusula
PRIMARY KEY más de una vez, en caso contrario la sentencia da un error. No hay que confundir la
definición de varias claves principales con la definición de una clave principal compuesta por varias
columnas, esto último sí está permitido y se define con una restricción de tipo 2.

La cláusula UNIQUE sirve para definir un índice único sobre la columna. Un índice único es un
índice que no permite valores duplicados, es decir que si una columna tiene definida un restricción
de UNIQUE no podrán haber dos filas con el mismo valor en esa columna. Se suele emplear para
que el sistema compruebe el mismo que no se añaden valores que ya existen, por ejemplo si en
una tabla de clientes queremos asegurarnos que dos clientes no puedan tener el mismo D.N.I. y la
tabla tiene como clave principal un código de cliente, definiremos la columna dni con la restricción
de UNIQUE.

Lic. Fernando Román Vega 85


ACCESS II

La cláusula NOT NULL indica que la columna no puede contener valores nulos, cuando queremos
indicar que una columna no puede contener el valor nulo lo podemos hacer sin poner la cláusula
CONSTRAINT, o utilizando una cláusula CONSTRAINT.

La última restricción que podemos definir sobre una columna es la de clave foránea, una clave
foránea es una columna o conjunto de columnas que contiene un valor que hace referencia a una
fila de otra tabla, en una restricción de tipo 1 se puede definir con la cláusula REFERENCES,
después de la palabra reservada indicamos a qué tabla hace referencia, opcionalmente podemos
indicar entre paréntesis el nombre de la columna donde tiene que buscar el valor de referencia,
por defecto coge la clave principal de la tabla2, si el valor que tiene que buscar se encuentra en
otra columna de tabla2, entonces debemos inidicar el nombre de esta columna entre paréntesis,
además sólo podemos utilizar una columna que esté definida con una restricción de UNIQUE, si la
columna2 que indicamos no está definida sin duplicados, la sentencia CREATE nos dará un error.

Ejemplo:
CREATE TABLE tab1 (
col1 INTEGER CONSTRAINT pk PRIMARY KEY,
col2 CHAR(25) NOT NULL,
col3 CHAR(10) CONSTRAINT uni1 UNIQUE,
col4 INTEGER,
col5 INT CONSTRAINT fk5 REFERENCES tab2 );

Con este ejemplo estamos creando la tabla tab1 compuesta por: una columna llamada col1 de tipo
entero definida como clave principal, una columna col2 que puede almacenar hasta 25 caracteres
alfanuméricos y no puede contener valores nulos, una columna col3 de hasta 10 caracteres que no
podrá contener valores repetidos, una columna col4 de tipo entero sin ninguna restricción, y una
columna col5 de tipo entero clave foránea que hace referencia a valores de la clave principal de la
tabla tab2.

3.6.2 ALTER TABLE

La sentencia ALTER TABLE sirve para modificar la estructura de una tabla que ya existe. Mediante
esta instrucción podemos añadir columnas nuevas, eliminar columnas. Ten cuenta que cuando
eliminamos una columna se pierden todos los datos almacenados en ella.

También nos permite crear nuevas restricciones o borrar algunas existentes. La sintaxis puede
parecer algo complicada pero sabiendo el significado de las palabras reservadas la sentencia se
aclara bastante; ADD (añade), ALTER (modifica), DROP (elimina), COLUMN (columna),
CONSTRAINT (restricción).
La sintaxis es la siguiente:

Lic. Fernando Román Vega 86


ACCESS II

La sintaxis de restriccion1 es idéntica a la restricción1 de la sentencia CREATE TABLE, te la


describimos a continuación, si tienes alguna duda repasa la sentencia CREATE TABLE.

La sintaxis de restriccion2 es idéntica a la restricción2 de la sentencia CREATE TABLE, te la


describimos a continuación, si tienes alguna duda repasa la sentencia CREATE TABLE.

La cláusula ADD COLUMN (la palabra COLUMN es opcional) permite añadir una columna nueva a la
tabla. Como en la creación de tabla, hay que definir la columna indicando su nombre, tipo de
datos que puede contener, y si lo queremos alguna restricción de valor no nulo, clave primaria,
clave foránea, e índice único, restriccion1 es opcional e indica una restricción de tipo 1 que afecta
a la columna que estamos definiendo.

Lic. Fernando Román Vega 87


ACCESS II

Ejemplo:

ALTER TABLE tab1 ADD COLUMN col3 integer NOT NULL CONSTRAINT c1 UNIQUE

Con este ejemplo estamos añadiendo a la tabla tab1 una columna llamada col3 de tipo entero,
requerida (no admite nulos) y con un índice sin duplicados llamado c1.

Cuando añadimos una columna lo mínimo que se puede poner sería:


ALTER TABLE tab1 ADD col3 integer

En este caso la nueva columna admite valores nulos y duplicados.


Para añadir una nueva restricción en la tabla podemos utilizar la cláusula ADD restriccion2 (ADD
CONSTRAINT...).

Ejemplo:
ALTER TABLE tab1 ADD CONSTRAINT c1 UNIQUE (col3)

Con este ejemplo estamos añadiendo a la tabla tab1 un índice único (sin duplicados) llamado c1
sobre la columna col3.

Para borrar una columna basta con utilizar la cláusula DROP COLUMN (COLUMN es opcional) y el
nombre de la columna que queremos borrar, se perderán todos los datos almacenados en la
columna.

Ejemplo:
ALTER TABLE tab1 DROP COLUMN col3

También podemos escribir:

ALTER TABLE tab1 DROP col3

El resultado es el mismo, la columna col3 desaparece de la tabla tab1.

Lic. Fernando Román Vega 88


ACCESS II

Para borrar una restricción basta con utilizar la cláusula DROP CONSTRAINT y el nombre de la
restricción que queremos borrar, en este caso sólo se elimina la definición de la restricción pero
los datos almacenados no se modifican ni se pierden.

Ejemplo:
ALTER TABLE tab1 DROP CONSTRAINT c1

Con esta sentencia borramos el índice c1 creado anteriormente pero los datos de la columna col3
no se ven afectados por el cambio.

3.6.3 DROP TABLE


La sentencia DROP TABLE sirve para eliminar una tabla. No se puede eliminar una tabla si está
abierta, tampoco la podemos eliminar si el borrado infringe las reglas de integridad referencial (si
interviene como tabla padre en una relación y tiene registros relacionados).
La sintaxis es la siguiente:

Ejemplo:
DROP TABLE tab1

Elimina de la base de datos la tabla tab1.

3.6.4 CREATE INDEX


La sentencia CREATE INDEX sirve para crear un índice sobre una o varias columnas de una tabla. La
sintaxis es la siguiente:

Lic. Fernando Román Vega 89


ACCESS II

nbindi: nombre del índice que estamos definiendo. En una tabla no pueden haber dos índices con
el mismo nombre de lo contrario da error.

nbtabla: nombre de la tabla donde definimos el índice. A continuación entre paréntesis se indica la
composición del índice (las columnas que lo forman).

nbcol: nombre de la columna que indexamos. Después del nombre de la columna podemos indicar
cómo queremos que se ordenen las filas según el índice mediante las cláusulas ASC/DESC.

ASC: la cláusula ASC es la que se asume por defecto e indica que el orden elegido para el índice es
ascendente (en orden alfabético si la columna es de tipo texto, de menor a mayor si es de tipo
numérico, en orden cronológico si es de tipo fecha).

DESC: indica orden descendente, es decir el orden inverso al ascendente.

Podemos formar un índice basado en varias columnas, en este caso después de indicar la primera
columna con su orden, se escribe una coma y la segunda columna también con su orden, así
sucesivamente hasta indicar todas las columnas que forman el índice.

Opcionalmente se pueden indicar las cláusulas:

 WITH PRIMARY indica que el índice define la clave principal de la tabla, si la tabla ya tiene
una clave principal, la sentencia CREATE INDEX dará error.
 WITH DISALLOW NULL indica que no permite valores nulos en las columnas que forman el
índice.
 WITH IGNORE NULL indica que las filas que tengan valores nulos en las columnas que
forman el índice se ignoran, no aparecen cuando recuperamos las filas de la tabla
utilizando ese índice.
Lic. Fernando Román Vega 90
ACCESS II

Ejemplo:
CREATE UNIQUE INDEX ind1 ON clientes (provincia, poblacion ASC, fecha_nacimiento DESC)

Crea un índice llamado ind1 sobre la tabla clientes formado por las columnas provincia, población
y fecha_nacimiento. Este índice permite tener ordenadas las filas de la tabla clientes de forma que
aparezcan los clientes ordenados por provincia, dentro de la misma provincia por población y
dentro de la misma población por edad y del más joven al más mayor.
Al añadir la cláusula UNIQUE el índice no permitirá duplicados por lo que no podría tener dos
clientes con la misma fecha de nacimiento en la misma población y misma provincia, para evitar el
poblema sería mejor utilizar:

CREATE INDEX ind1 ON clientes (provincia, poblacion ASC, fecha_nacimiento DESC)

3.6.5 DROP INDEX

La sentencia DROP INDEX sirve para eliminar un índice de una tabla. Se elimina el índice pero no
las columnas que lo forman.

La sintaxis es la siguiente:

Ejemplo:

DROP INDEX ind1 ON clientes

Elimina el índice que habíamos creado en el ejemplo anterior.

3.6.6 Ejercicios. El DDL Lenguaje de Definición de Datos

Lic. Fernando Román Vega 91


ACCESS II

1 Crear la tabla empleados y definir su clave principal en la misma instrucción de creación.

2 Crear la tabla oficinas con su clave principal y su clave foránea ( la columna dir contiene el código
de empleado del director de la oficina luego es un campo que hace referencia a un empleado
luego es clave foránea y hace referencia a la tabla empleados).

3 Crear la tabla productos con su clave principal.

4 Crear la tabla clientes también con todas sus claves y sin la columna limitecredito.

5 Crear la tabla pedidos sin clave principal, con la clave foránea que hace referencia a los
productos, la que hace referencia a clientes y la que indica el representante (empleado) que ha
realizado el pedido.

6 Añadir a la definición de clientes la columna limitecredito.

7 Añadir a la tabla empleados las claves foráneas que le faltan. (Si no tienes claro cuales son te lo
decimos ahora: la columna oficina indica la oficina donde trabaja el empleado y la columna
director indica quién dirige al empleado, su jefe inmediato).

8 Hacer que no puedan haber dos empleados con el mismo nombre.

9 Añadir a la tabla de pedidos la definición de clave principal.

10 Definir un índice sobre la columna region de la tabla de oficinas.

10 Eliminar el índice creado.

Solución ejercicios. El DDL

Lic. Fernando Román Vega 92


ACCESS II

Ejercicio 1

CREATE TABLE empleados ( La solución propuesta es una de la muchas


numemp INTEGER PRIMARY KEY, posibles ya que cada uno puede elegir el tipo
nombre TEXT(30) NOT NULL, de datos que prefiera siempre y cuando ese
edad INTEGER, tipo permita introducir los datos que tenemos
oficina INTEGER, en las tablas de ejemplo. También la cláusula
titulo CHAR(20), NOT NULL se puede poner en más campos de
contrato DATETIME NOT NULL, los que tiene la solución excepto en las
director INTEGER, columnas que tengan filas sin valor en las tablas
cuota CURRENCY, de ejemplo. Por ejemplo en oficina (el
ventas MONEY); empleado 110 no tiene oficina), en director (el
empleado 106 no tiene director) y en cuota (el
empleado 110 no tiene cuota asignada. Pero las
columnas edad, titulo y ventas sí las podemos
definir con la restricción NOT NULL. Para definir
las columnas cuota y ventas hemos elegido el
tipo moneda (CURRENCY y MONEY son
sinónimos).

Ejercicio 2

CREATE TABLE oficinas ( Para definir la columna dir como clave foránea hemos
oficina INT PRIMARY KEY, elegido una restricción1 (poner la definición dentro
ciudad TEXT(30), de la definición de la columna).
region TEXT(20),
dir INT CONSTRAINT cf_dir REFERENCES
empleados,
objetivo CURRENCY,
ventas CURRENCY );

Ejercicio 3

CREATE TABLE productos ( En este caso la clave principal está formada por dos
idfab TEXT(10), columnas idfab e idproducto luego para definirla
Lic. Fernando Román Vega 93
ACCESS II

idproducto TEXT(20), tenemos que utilizar necesariamente una


descripcion TEXT(30) NOT NULL, restricción2.
precio CURRENCY NOT NULL,
existencias INT ,
CONSTRAINT cp PRIMARY KEY
(idfab,idproducto) );

Ejercicio 4

CREATE TABLE clientes ( La clave principal se puede definir en una restricción2


numclie INT , aunque esté compuesta por una sola columna.
nombre TEXT(30) NOT NULL,
repclie INT CONSTRAINT cf_repclie
REFERENCES empleados,
CONSTRAINT cp PRIMARY KEY (numclie) ) ;

Ejercicio 5

CREATE TABLE pedidos ( Para exponer más formas de definir una tabla aquí te
codigo COUNTER, hemos definido todas las claves como restricción2 la
numpedido INT PRIMARY KEY, única que es obligatoria en una restricción2 es la
fechapedido DATETIME NOT NULL, cf_prod ya que está compuesta por varias columnas.
clie INT NOT NULL,
rep INT NOT NULL,
fab TEXT(10) NOT NULL,
producto TEXT(20) NOT NULL,
cant INT NOT NULL,
importe CURRENCY NOT NULL,
CONSTRAINT cf_clie FOREIGN KEY (clie)
REFERENCES clientes,
CONSTRAINT cf_rep FOREIGN KEY (rep)
REFERENCES empleados,
CONSTRAINT cf_prod FOREIGN KEY
(fab,producto) REFERENCES productos );

Lic. Fernando Román Vega 94


ACCESS II

Ejercicio 6

ALTER TABLE clientes Para añadir una nueva columna a una tabla que ya
ADD COLUMN limitecredito MONEY; existe debemos emplear la sentencia ALTER TABLE, y
en nuestro caso la cláusula ADD COLUMN (COLUMN
es opcional).

Ejercicio 7

ALTER TABLE empleados Para añadir una definición de clave foránea hay que
ADD CONSTRAINT cf_oficina FOREIGN KEY añadir una restricción2, se pueden añadir varias
(oficina) REFERENCES oficinas, restricciones en la misma sentencia ALTER TABLE.
CONSTRAINT cf_director FOREIGN KEY
(director) REFERENCES empleados;

Ejercicio 8

Solución 1 Para que no se puedan repetir los valores en la


columna nombre hay que definir un índice único, o
ALTER TABLE empleados bien definiendo una restricción sobre la columna
ADD CONSTRAINT u_nombre UNIQUE como te indicamos en la solución 1 o bien creando el
(nombre); índice único como te indicamos en la solución 2.

Solución 2

CREATE UNIQUE INDEX u_nombre ON


empleados (nombre);

Ejercicio 9

Solución 1 Para añadir una definición de clave primaria hay que


ALTER TABLE pedidos añadir una restricción2.
ADD CONSTRAINT cp PRIMARY KEY
(numpedido);

Solución 2 Otra solución es crear un índice con la cláusula WITH

Lic. Fernando Román Vega 95


ACCESS II

CREATE INDEX cp ON pedidos (numpedido) PRIMARY.


WITH PRIMARY ;

Ejercicio 10

CREATE INDEX i_region ON oficinas (region)


;

Ejercicio 11

DROP INDEX i_region ON oficinas ;

Lic. Fernando Román Vega 96


ACCESS II

UNIDAD 4. Seguridad y Privacidad

Lic. Fernando Román Vega 97


ACCESS II

4.1 Office Access 2007 y seguridad de nivel de usuario

Office Access 2007 no proporciona seguridad de nivel de usuario para las bases de datos creadas
con el nuevo formato de archivo (.accdb y .accde). No obstante, si se abre una base de datos de
una versión anterior de Access en Office Access 2007 y esa base de datos tiene aplicada la
seguridad de nivel de usuario, esa configuración seguirá vigente.

Si se convierte una base de datos de una versión anterior de Access con seguridad de nivel de
usuario aplicada al nuevo formato de archivo, Access quita automáticamente toda la configuración
de seguridad y se aplican las reglas de protección de archivos .accdb o .accde.

Por último, recuerde que todos los usuarios pueden ver en todo momento todos los objetos de
base de datos cuando se abren bases de datos creadas en Office Access 2007.

4.1.1 Arquitectura de seguridad de Office Access 2007

Para comprender la arquitectura de seguridad de Office Access 2007, recuerde que una base de
datos de Access no es un archivo como un libro de Microsoft Office Excel 2007 o un documento de
Microsoft Office Word 2007. Una base de datos de Access es un conjunto de objetos, es
decir, tablas, formularios, consultas, macros, informes, etc., que a menudo dependen los unos de
los otros para su funcionamiento. Por ejemplo, si se crea un formulario de entrada de datos, no se
pueden proporcionar ni almacenar datos con ese formulario a menos que se enlacen (vinculen) los
controles del formulario a una tabla.

Varios componentes de Access pueden representar un riesgo para la seguridad, inclusive las
consultas de acción (consultas que insertan, eliminan o cambian datos), macros, expresiones
(funciones que devuelven un solo valor) y código de VBA. Para ayudar a que los datos sean más
seguros, Office Access 2007 y el Centro de confianza realizan una serie de comprobaciones de
seguridad cada vez que se abre una base de datos. El proceso es el siguiente:

Lic. Fernando Román Vega 98


ACCESS II

 Cuando se abre un archivo .accdb o .accde en Office Access 2007, Access envía la ubicación de
la base de datos al Centro de confianza. Si se trata de una ubicación de confianza, la base de
datos se ejecutará con toda su funcionalidad. Si se abre una base de datos de una versión
anterior de Access en Office Access 2007, Access envía la ubicación y los detalles de la firma
digital eventualmente aplicada a la base de datos.

El Centro de confianza comprueba esas "pruebas" para evaluar si la base de datos es de


confianza y, a continuación, informa a Access de cómo abrir la base de datos. Access
deshabilita la base de datos, o bien, la abre con toda su funcionalidad.

Centro de confianza controla las decisiones que se toman cuando Access abre una base de
datos.
Para obtener más información sobre el uso del Centro de confianza, vea el artículo Ver la
configuración de seguridad y privacidad en el Centro de confianza.

 Si el Centro de confianza deshabilita contenido, aparece la barra de mensajes cuando se abre


la base de datos.

Para habilitar contenido deshabilitado, haga clic en Opciones y, a continuación, elija las
opciones en el cuadro de diálogo que aparece. Access habilita el contenido deshabilitado y la
base de datos vuelve a abrirse con toda su funcionalidad. En caso contrario, no funcionarán los
componentes deshabilitados.

 Si se abre una base de datos creada con el formato de archivo anterior (.mdb o .mde) y esa
base de datos no está firmada ni es de confianza, Access deshabilita todo el contenido
ejecutable de forma predeterminada.

Modo Deshabilitado

Lic. Fernando Román Vega 99


ACCESS II

Cuando el Centro de confianza evalúa que una base de datos no es de confianza, Office Access
2007 la abre en modo Deshabilitado, es decir, desactiva todo el contenido ejecutable. Esto se
aplica a las bases de datos creadas con el nuevo formato de archivo de Office Access 2007 y a los
archivos creados en las versiones anteriores de Access.

Office Access 2007 deshabilita los componentes siguientes:

 Código de VBA y referencias en código de VBA, además de expresiones inseguras.

 Acciones inseguras en todas las macros. Las acciones "inseguras" son las que permiten a un
usuario modificar la base de datos u obtener acceso a recursos ubicados fuera de la base de
datos. No obstante, las acciones que Access deshabilita pueden considerarse a veces como
"seguras". Por ejemplo, si se confía en la persona que creó la base de datos, se puede confiar
en todas las acciones de macro inseguras.

 Varios tipos de consulta:

o Consultas de acción Agregan, actualizan y eliminan datos.


o Consultas DDL (Lenguaje de definición de datos) Crean o alteran objetos de una base
de datos, como tablas y procedimientos.
o Consultas de paso a través de SQL Envían los comandos directamente a un servidor
de base de datos que admite el estándar ODBC (Conectividad abierta de bases de
datos). Las consultas de paso a través funcionan con las tablas en el servidor y no
implican el motor de base de datos de Access.

 Controles ActiveX.

4.2 Empaquetar, firmar y distribuir una base de datos de Office Access 2007

Office Access 2007 permite firmar y distribuir una base de datos con mayor facilidad y rapidez.
Cuando se crea un archivo .accdb o .accde, se puede empaquetar el archivo, aplicar al paquete
una firma digital y, a continuación, distribuir el paquete firmado a otros usuarios. La característica

Lic. Fernando Román Vega 100


ACCESS II

Empaquetar y firmar coloca la base de datos en un archivo .accdc, firma el paquete y, a


continuación, coloca el paquete de código firmado en una ubicación determinada por el usuario.
Después, los usuarios pueden extraer la base de datos desde el paquete y trabajar directamente
en la base de datos en vez del archivo de paquete.

Definir firma digital

Tenemos que tener presente lo siguiente:

 Empaquetar una base de datos y firmar el paquete son formas de transmitir confianza.
Cuando se recibe el paquete, la firma confirma que no se ha alterado la base de datos. Si se
confía en el autor, se puede habilitar el contenido.
 La nueva característica Empaquetar y firmar se aplica únicamente a las bases de datos con el
formato de archivo de Office Access 2007.Office Access 2007 incluye las herramientas
anteriores para firmar y distribuir las bases de datos creadas con el formato de archivo de las
versiones anteriores. Las herramientas anteriores no se pueden usar para firmar e
implementar los archivos creados con el nuevo formato de archivo.
 Se puede agregar sólo una base de datos a un paquete.
 El proceso firma el código de todos los objetos de las bases de datos y no sólo las macros o los
módulos de código. El proceso comprime asimismo el archivo de paquete con el fin de ayudar
a reducir los tiempos de descarga.
 Se pueden extraer bases de datos de los archivos de paquete ubicados en los servidores de
Windows SharePoint Services 3.0.

4.2.1 Crear un paquete firmado

1. Abra la base de datos que desee empaquetar y firmar.

2. Haga clic en el botón de Microsoft Office , haga clic en Publicar y después, elija
Paquete y firmar.
3. Aparece el cuadro de diálogo Seleccionar certificado.
4. Seleccione un certificado digital y, a continuación, haga clic en Aceptar.

Lic. Fernando Román Vega 101


ACCESS II

5. Aparece el cuadro de diálogo Crear paquete firmado de Microsoft Office Access.


6. En la lista Guardar en, seleccione una ubicación para el paquete de base de datos firmado.
7. Escriba un nombre para el paquete firmado en el cuadro Nombre de archivo y, a
continuación, haga clic en Crear.
8. Access crea el archivo .accdc y lo coloca en la ubicación seleccionada

4.2.2 Extraer y usar un paquete firmado

1. Abra la base de datos que desee empaquetar y firmar.

2. Haga clic en el Botón Microsoft Office y, a continuación, haga clic en Abrir.


Aparece el cuadro de diálogo Abrir.
3. En la lista Tipo de archivo, seleccione Paquete firmado de Microsoft Office Access
(*.accdc).
4. Use la lista Buscar en para localizar la carpeta que contiene el archivo .accdc, seleccione el
archivo y haga clic en Abrir.
5. Siga uno de estos procedimientos:
 Si optó por confiar en el certificado digital aplicado al paquete de implementación,
aparecerá el cuadro de diálogo Extraer base de datos a. Vaya al siguiente paso.
 Si aún no ha optado por confiar en el certificado digital, aparecerá un mensaje de
advertencia.

Lic. Fernando Román Vega 102


ACCESS II

Si confía en la base de datos, haga clic en Abrir. Si confía en cualquier certificado de ese
proveedor, haga clic en Confiar en todo contenido del editor. Aparece el cuadro de
diálogo Extraer base de datos a.
6. De manera opcional, en la lista Guardar en, seleccione una ubicación para la base de datos
extraída y, a continuación, en el cuadro Nombre de archivo, especifique otro nombre para
la base de datos extraída.
7. Haga clic en Aceptar.

4.3 Cifrar una base de datos mediante una contraseña

La herramienta de cifrado de Office Access 2007 combina y mejora dos herramientas anteriores: el
cifrado y las contraseñas para bases de datos. Cuando se usa una contraseña para cifrar una base
de datos, todos los datos se vuelven ilegibles para otras herramientas y se obliga a los usuarios a
escribir una contraseña para poder usar la base de datos. El cifrado aplicado en Office Access 2007
usa un algoritmo más seguro que el usado en las versiones anteriores de Access.

Cifrar mediante contraseña

1. Abra la base de datos que desee cifrar en modo Exclusivo.

a. Haga clic en el Botón Microsoft Office y, a continuación, haga clic en Abrir.


b. En el cuadro de diálogo Abrir, busque el archivo que desee abrir y, a continuación,
seleccione el archivo.
c. Haga clic en la flecha situada junto al botón Abrir y, a continuación, haga clic en Abrir
en modo exclusivo.

Lic. Fernando Román Vega 103


ACCESS II

2. En la ficha Herramientas de base de datos, en el grupo Herramientas de base de datos, haga


clic en Cifrar con contraseña.
Aparece el cuadro de diálogo Establecer contraseña para la base de datos.

3. Escriba la contraseña en el cuadro Contraseña y escríbala de nuevo en el campo Confirmar.

4. Haga clic en Aceptar.

Descifrar y abrir una base de datos

1. Abra la base de datos cifrada como suele abrirse cualquier otra base de datos.
a. Aparece el cuadro de diálogo Solicitud de contraseña.

2. Escriba la contraseña en el cuadro Escriba la contraseña de la base de datos y, a continuación,


haga clic en Aceptar.

Quitar una contraseña

1. En la ficha Herramientas de base de datos, en el grupo Herramientas de base de datos, haga


clic en Descifrar base de datos.
a. Aparece el cuadro de diálogo Anular la contraseña establecida para la base de datos.
2. Escriba la contraseña en el cuadro Contraseña y, a continuación, haga clic en Aceptar.

Lic. Fernando Román Vega 104

También podría gustarte