Copyright: Copyright (c) 1996 Microsoft Corporation
Citation: Copyright (c) 1996 Microsoft Corporation


ALTER TABLE (Instrucción, Microsoft Jet SQL)
ALTER TABLE (Instrucción)

Modifica el diseño de una taba después de que se haya creado con la instrucción CREATE TABLE.

Nota   El motor de base de datos Microsoft Jet no permite el uso de la instrucción ALTER TABLE, o cualquiera de las instrucciones del lenguaje de definición de datos (DDL), con bases de datos que no sean Microsoft Jet. En vez de ello utilice los métodos Create de DAO.

Sintaxis

ALTER TABLE tabla {ADD {COLUMN campo tipo [(tamaño)] [NOT NULL] [CONSTRAINT índice] |
CONSTRAINT índicemúltiplescampos} |
DROP {COLUMN campoI CONSTRAINT nombreíndice} }

La instrucción ALTER TABLE consta de las siguientes partes:

Parte	Descripción
tabla	El nombre de la tabla que se va a modificar.
campo	El nombre del campo que se va a agregar o eliminar de tabla.
tipo	El tipo de datos del campo.
tamaño	El tamaño del campo en caracteres (solamente campos tipo Text y Binary).
índice	El índice de campo. Para obtener más información acerca de cómo construir este índice, vea el tema de la cláusula CONSTRAINT.
índicemúltiplescampos	La definición de un índice de múltiples campos que se va a agregar a tabla. Para obtener más información acerca de cómo construir esta cláusula, vea el tema de la cláusula CONSTRAINT.
nombreíndice	El nombre del índice de múltiples campos que se va a quitar.
Comentarios

Utilizando la instrucción ALTER TABLE, puede modificar una tabla existente de diferentes formas. Puede:

•	Utilizar ADD COLUMN para agregar un campo nuevo a la tabla. Especifique el nombre del campo, el tipo de datos y un tamaño opcional (para campos tipo Text y Binary). Por ejemplo, la siguiente instrucción agrega una campo tipo Text de 25 caracteres llamado Notas a la tabla Empleados:

ALTER TABLE Empleados ADD COLUMN Notas TEXT(25)

También puede definir un índice en ese campo. Para obtener más información, vea el tema de la cláusula CONSTRAINT.

Si especifica NOT NULL para un campo, se exige que los registros nuevos tengan datos válidos en ese campo.

•	Utilice la instrucción ADD CONSTRAINT para agregar un índice de múltiples campos. Para obtener más información acerca de los índices de múltiples campos, vea el tema de la cláusula CONSTRAINT.

•	Utilice la instrucción DROP COLUMN para eliminar un campo. Especifique solamente el nombre del campo.

•	Utilice la instrucción DROP CONSTRAINT para eliminar un índice de múltiples campos. Especifique solamente el nombre del índice a continuación de la palabra reservada CONSTRAINT.

Notas

•	No puede agregar o eliminar más de un campo o índice a la vez.

•	Puede utilizar la instrucción CREATE INDEX para agregar un índice de uno o múltiples campos a una tabla, y puede utilizar la instrucción ALTER TABLE o DROP para eliminar un índice creado con la instrucción ALTER TABLE o CREATE INDEX.

•	Puede utilizar NOT NULL en un campo único o dentro de una cláusula CONSTRAINT con nombre que se aplique a uno o varios campos en una cláusula CONSTRAINT con nombre. Sin embargo, sólo puede aplicar la limitación NOT NULL a un campo o cuando se produce un error en tiempo de ejecución.


CONSTRAINT (Cláusula, Microsoft Jet SQL)
CONSTRAINT (Cláusula)

Una limitación es similar a un índice, aunque también se puede utilizar para establecer una relación con otra tabla.

Puede utilizar la cláusula CONSTRAINT en las instrucciones ALTER TABLE y CREATE TABLE para crear o eliminar limitaciones. Hay dos tipos de cláusulas CONSTRAINT: una para crear una limitación en un único campo y otra para crear una limitación en más de un campo.

Nota   El motor de base de datos Microsoft Jet no permite el uso de la cláusula CONSTRAINT, o cualquier instrucción del lenguaje de definición de datos (DDL), con base de datos que no sean de Microsoft Jet. En vez de ello utilice los métodos Create de DAO.

Sintaxis

Limitación de un único campo:

CONSTRAINT nombre {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES tablaexterna [(campoexterno1, campoexterno2)]}

Limitación de múltiples campos:

CONSTRAINT nombre
{PRIMARY KEY (principal1[,principal2 [, ...]]) |
UNIQUE (único1[,único2 [, ...]]) |
NOT NULL (negadonulo1 [, negadonulo2 [, ...]]) |
FOREIGN KEY (referencia1 [, referencia2 [, ...]]) REFERENCES tablaexterna [(campoexterno1 [,campoexterno2 [, ...]])]}

La cláusula CONSTRAINT consta de las siguientes partes:

Parte	Descripción
nombre	El nombre de la limitación que se va a crear.
principal1, principal2	El nombre del campo o de los campos que se van a designar como clave principal.
único1, único2	El nombre del campo o de los campos que se van a designar como clave única.
negadonulo1, negadonulo2	El nombre del campo o de los campos que se van a limitar a valores no Null.
referencia1, referencia2	El nombre del campo o de los campos de la clave externa a los que se hace referencia en otra tabla.
tablaexterna	El nombre de la tabla externa que contiene el campo o los campos especificados por campoexterno.
campoexterno1, campoexterno2	El nombre del campo o de los campos en tablaexterna especificados por referencia1, referencia2. Puede omitir esta cláusula si el campo al que se hace referencia es la clave principal de tablaexterna.
Comentarios

Puede utilizar la sintaxis de una limitación de un único campo en la cláusula de definición de campo de una instrucción ALTER TABLE o CREATE TABLE inmediatamente a continuación de la especificación de tipo de datos del campo.

Utilice la sintaxis de limitación de múltiples campos siempre que utilice la palabra reservada CONSTRAINT fuera de la cláusula de definición de campo en una instrucción ALTER TABLE o CREATE TABLE.

Utilizando CONSTRAINT, puede designar un campo como uno de los siguientes tipos de limitaciones:

•	Puede utilizar la palabra reservada UNIQUE para designar un campo como una clave única. Esto quiere decir que no puede haber dos registros en la tabla con el mismo valor en este campo. Puede limitar cualquier campo o lista de campos como único. Si se designa un limitación de múltiples campos como una clave única, los valores combinados de todos los campos del índice deben ser únicos, incluso si dos o más registros tienen el mismo valor en uno de los campos.

•	Puede utilizar las palabras reservadas PRIMARY KEY para designar como clave principal un campo o un conjunto de campos de una tabla. Todos los valores de la clave principal deben ser únicos y no Null, y solamente puede haber una clave principal para una tabla.

Nota   No establezca una limitación PRIMARY KEY en una tabla que ya tenga una clave principal; si lo hace, se produce un error.

•	Puede utilizar las palabras reservadas FOREIGN KEY para designar un campo como clave externa. Si la clave principal de la tabla externa contiene más de un campo, debe utilizar una definición de limitación de múltiples campos, enumerando todos los campos a los que hace referencia, el nombre de la tabla externa y los nombres de los campos a los que se hace referencia en la tabla externa en el mismo orden en el que se enumeran los campos a los que hace referencia. Si el campo o los campos a los que se hace referencia son la clave principal de la tabla externa, no tiene que especificar los campos a los que se hace referencia; de forma predeterminada, el motor de la base de datos se comporta como si la clave principal de la tabla externa son los campos a los que se hace referencia.


CREATE INDEX (Instrucción, Microsoft Jet SQL)
CREATE INDEX (Instrucción)

Crea un índice nuevo en una tabla existente.

Nota   Para bases de datos que no sean de Microsoft Jet, el motor de base de datos Microsoft Jet no permite el uso de la instrucción CREATE INDEX (excepto para crear un pseudo índice en una tabla vinculada de ODBC) o cualquiera de las instrucciones de lenguaje de definición de datos (DDL). En vez de ello, utilice los métodos Create de DAO. Para obtener más información, vea la sección Comentarios.

Sintaxis

CREATE [ UNIQUE ] INDEX índice
ON tabla(campo [ASC|DESC][, campo [ASC|DESC], ...])
[WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]

La instrucción CREATE INDEX consta de las siguientes partes:

Parte	Descripción
índice	El nombre del índice que se va a crear.
tabla	El nombre de la tabla existente que contendrá el índice.
campo	El nombre del campo o de los campos que se van a indexar. Para crear un índice de único campo, escriba el nombre del campo entre paréntesis a continuación del nombre de la tabla. Para crear un índice de múltiples campos, enumere el nombre de cada campo que se va a incluir en el índice. Para crear índices descendentes, utilice la palabra reservada DESC; de lo contrario, se supone que los índices son ascendentes.
Comentarios

Para no permitir valores duplicados en el campo o campos de índice de diferentes registros, utilice la palabra reservada UNIQUE.

En la cláusula opcional WITH puede hacer cumplir reglas de validación. Puede:

•	No permitir entradas Null en el campo o campos de índice de los registros nuevos utilizando la opción DISALLOW NULL.

•	Impedir que se incluyan registros con valores Null en el campo o los campos de índice utilizando la opción IGNORE NULL.

•	Designar el campo o los campos de índice como la clave principal utilizando la palabra reservada PRIMARY. Esto significa que la clave es única, por lo que puede omitir la palabra reservada UNIQUE.

Puede utilizar CREATE INDEX para crear un pseudo índice en una tabla vinculada en un origen de datos ODBC, como SQL Server, que no tenga todavía un índice. No necesita permiso ni tener acceso al servidor remoto para crear un pseudo índice, y la base de datos remota ignora y no le afecta el pseudo índice. Utilice la misma sintaxis para las tablas vinculadas y nativas. Esto se puede especialmente útil para crear un índice en una tabla que sea habitualmente de sólo lectura debido a la carencia de un índice.

También puede utilizar la instrucción ALTER TABLE para agregar un índice de uno o varios campos a una tabla y puede utilizar la instrucción ALTER TABLE o la instrucción DROP para quitar un índice creado con la instrucción ALTER TABLE o CREATE INDEX.

Nota   No utilice la palabra reservada PRIMARY cuando cree un nuevo índice en una tabla que ya tenga una clave principal; si lo hace, se produce un error.


CREATE TABLE (Instrucción, Microsoft Jet SQL)
CREATE TABLE (Instrucción)

Crea una tabla nueva.

Nota   El motor de base de datos Microsoft Jet no permite el uso de la instrucción CREATE TABLE, o cualquiera de las instrucciones de lenguaje de definición de datos (DDL), con motores de base de datos que no sean Microsoft Jet. En vez de ello utilice los métodos Create de DAO.

Sintaxis

CREATE TABLE tabla (campo1 tipo [(tamaño)] [NOT NULL] [índice1] [, campo2 tipo [(tamaño)] [NOT NULL] [índice2] [, ...]] [, CONSTRAINT índicemultiplescampos [, ...]])

La instrucción CREATE TABLE consta de las siguientes partes:

Parte	Descripción
tabla	El nombre de la tabla que se va a crear.
campo1, campo2	El nombre del campo o de los campos que se van a crear en la nueva tabla. Debe crear al menos un campo.
tipo	El tipo de datos de campo en la tabla nueva.
tamaño	El tamaño del campo en caracteres (solamente campos de tipo Text o Binary).
índice1, índice2	Una cláusula CONSTRAINT que define el índice de campo único. Vea el tema de la cláusula CONSTRAINT para obtener más información acerca de cómo crear este índice.
índicemultiplescampos	Una cláusula CONSTRAINT que define un índice de múltiples campos. Vea el tema de la cláusula CONSTRAINT para obtener más información acerca de cómo crear este índice.
Comentarios

Utilice la instrucción CREATE TABLE para definir una tabla nueva, sus campos y limitaciones de campo. Si se especifica NOT NULL para un campo, se exige que los registros nuevos tengan datos válidos en ese campo.

Una cláusula CONSTRAINT establece varias limitaciones en un campo y se puede utilizar para establecer la clave principal. También puede utilizar la instrucción CREATE INDEX para crear una clave principal o índices adicionales en tablas existentes.

Puede utilizar NOT NULL en un único campo o dentro de una cláusula CONSTRAINT con nombre que se aplique a CONSTRAINT de uno o varios campos con nombre. Sin embargo, puede aplicar la limitación NOT NULL solamente a un campo o cuando se produce un error en tiempo de ejecución.


DROP (Instrucción, Microsoft Jet SQL)
DROP (Instrucción)

Elimina una tabla existente de una base de datos o elimina un índice existente de una tabla.

Nota   El motor de base de datos Microsoft Jet no permite el uso de la instrucción DROP, o cualquiera de las instrucciones del lenguaje de definición de datos (DDL), con bases de datos que no sean de Microsoft Jet. En vez de ello utilice el método Delete de DAO.

Sintaxis

DROP {TABLE tabla | INDEX índice ON tabla}

La instrucción DROP consta de las siguientes partes:

Parte	Descripción
tabla	El nombre de la tabla que se va a eliminar o la tabla de la cual se va a eliminar un índice.
índice	El nombre del índice que se va a eliminar de tabla.
Comentarios

Debe cerrar la tabla antes de eliminarla o quitar el índice de ella.

También puede utilizar la instrucción ALTER TABLE para eliminar un índice de una tabla.

Puede utilizar la instrucción CREATE TABLE para crear una tabla y las instrucciones CREATE INDEX o ALTER TABLE para crear un índice. Para modificar una tabla, utilice la instrucción ALTER TABLE.


SELECT (Instrucción, Microsoft Jet SQL)
SELECT (Instrucción)

Pide al motor de base de datos Microsoft Jet que devuelva información de la base de datos como un conjunto de registros.

Sintaxis

SELECT [predicado] { * | tabla.* | [tabla.]campo1 [AS alias1] [, [tabla.]campo2 [AS alias2] [, ...]]}
FROM expresióntabla [, ...] [IN basededatosexterna]
[WHERE... ]
[GROUP BY... ]
[HAVING... ]
[ORDER BY... ]
[WITH OWNERACCESS OPTION]

La sintaxis de la instrucción SELECT consta de las siguientes partes:

Parte	Descripción
predicado	Uno de los siguientes predicados: ALL, DISTINCT, DISTINCTROW o TOP. Puede utilizar el predicado para limitar el número de registros devueltos. Si no especifica ninguno, el valor predeterminado es ALL.
*	Especifica que se seleccionan todos los campos de la tabla o tablas especificadas.
tabla	El nombre de la tabla que contiene los campos de la que se van a seleccionar los registros.
campo1, campo2	Los nombres de los campos que contienen los datos que desea recuperar. Si incluye más de un campo, éstos se recuperan en el orden enumerado.
alias1, alias2	Los nombres que se van a utilizar como encabezados de columnas en vez de los nombres de columnas originales en tabla.
expresióntabla	El nombre de la tabla o las tablas que contienen los datos que desea recuperar.
basededatosexterna	El nombre de la base de datos que contiene las tablas en expresióntabla si no están en la base de datos activa.
Comentarios

Para realizar esta operación, el motor de base de datos Microsoft Jet busca la tabla o las tablas especificadas, extrae las columnas elegidas, selecciona las filas que cumplen los criterios y ordena o agrupa las filas resultantes en el orden especificado.

Las instrucciones SELECT no modifican los datos de la base de datos.

La instrucción SELECT suele ser la primera palabra en una instrucción SQL. La mayoría de las instrucciones SQL son instrucciones SELECT o SELECT...INTO.

La sintaxis mínima para una instrucción SELECT es:

SELECT campos FROM tabla

Puede utilizar un asterisco (*) para seleccionar todos los campos de una tabla. El ejemplo siguiente selecciona todos los campos de la tabla Empleados:

SELECT * FROM Empleados;

Si se incluye un nombre de campo en más de una tabla en la instrucción FROM, escriba delante el nombre de la tabla y el operador . (punto). En el siguiente ejemplo, el campo Departamento está en la tabla Empleados y en la tabla Supervisores. La instrucción SQL selecciona los departamentos de la tabla Empleados y los nombres de supervisores de la tabla Supervisores:

SELECT Empleados.Departamento, Supervisores.NombreSupervisor

FROM Empleados INNER JOIN Supervisores

WHERE Empleados.Departamento = Supervisores.Departamento;

Cuando se crea un objeto Recordset, el motor de base de datos Microsoft Jet utiliza el nombre de campo de la tabla como el nombre de objeto Field en el objeto Recordset. Si desea un nombre de campo diferente o un nombre que no participe en la expresión utilizada para generar el campo, utilice la palabra reservada AS. El siguiente ejemplo utiliza el título Nacimiento para dar nombre al objeto Field devuelto en el objeto Recordset resultante:

SELECT FechaNacimiento

AS Nacimiento FROM Empleados;

Siempre que utilice funciones de dominio agregado o consultas que devuelvan nombres de objetos Field ambiguos o duplicados, debe utilizar la cláusula AS para proporcionar un nombre alternativo para el objeto Field. El siguiente ejemplo utiliza el título CuentaEncabezado para dar nombre al objeto Field devuelto del objeto Recordset resultante:

SELECT COUNT(IdEmpleado)

AS CuentaEncabezado FROM Empleados;

Puede utilizar otras cláusulas en una instrucción SELECT para limitar y organizar aún más los datos devueltos. Para obtener más información al respecto, vea el tema de Ayuda relativo a las cláusulas que esté utilizando.


FROM (Cláusula, Microsoft Jet SQL)
FROM (Cláusula)

Especifica las tablas o consultas que contienen la lista de campos enumerados en la instrucción SELECT.

Sintaxis

SELECT listacampos
FROM expresióntabla [IN basededatosexterna]

Una instrucción SELECT que contiene una cláusula FROM consta de las siguientes partes:

Parte	Descripción
listacampos	El nombre del campo o de los campos que se van a recuperar junto con cualquier alias de nombre de campo, funciones de dominio agregado de SQL, predicados de selección (ALL, DISTINCT, DISTINCTROW o TOP) u otras opciones de la instrucción SELECT.
expresióntabla	Una expresión que identifica a una o más tablas de las que se van a recuperar datos. La expresión puede ser un nombre de tabla único, un nombre de consulta guardada o una composición resultante de una cláusula INNER JOIN, LEFT JOIN o RIGHT JOIN.
basededatosexterna	La ruta completa de una base de datos externa que contiene todas las tablas en expresióntabla.
Comentarios

La cláusula FROM es obligatoria y sigue a cualquier instrucción SELECT.

El orden de los nombres de las tablas en expresióntabla no es importante.

Para mejorar el rendimiento y facilitar el uso, se recomienda que utilice una tabla vinculada en lugar de una cláusula IN para recuperar datos de una base de datos externa.

El siguiente ejemplo muestra cómo puede recuperar datos de la tabla Empleados:

SELECT Apellidos, Nombre

FROM Empleados;


IN (Cláusula, Microsoft Jet SQL)
IN (Cláusula)

Identifica las tablas en cualquier base de datos externa a la que el motor de base de datos Microsoft Jet se puede conectar, como una base de datos dBASE o Paradox, o una base de datos externa de Microsoft Jet.

Sintaxis

Para identificar una tabla de destino:

[SELECT | INSERT] INTO destino IN
{ruta| ["ruta " "tipo"] | ["" [tipo; DATABASE = ruta]]}

Para identificar una tabla de origen:

FROM expresióntabla IN
{ruta | ["ruta" "tipo"] | ["" [tipo; DATABASE = ruta]]}

Una instrucción SELECT que contiene una cláusula IN consta de las siguientes partes:

Parte	Descripción
destino	El nombre de la tabla externa en la que se van a insertar los datos.
expresióntabla	El nombre de la tabla o de las tablas de las que se van a recuperar los datos. Este argumento puede ser un nombre de tabla único, una consulta guardada o una composición resultante de una cláusula INNER JOIN, LEFT JOIN o RIGHT JOIN.
ruta	La ruta completa del directorio o archivo que contiene tabla.
tipo	El nombre del tipo de base de datos utilizado para crear tabla si no es una base de datos de Microsoft Jet (por ejemplo, dBASE III, dBASE IV, Paradox 3.x o Paradox 4.x).
Comentarios

Puede utilizar la cláusula IN para conectarse solamente a una base de datos externa cada vez.

En algunos casos, el argumento ruta hace referencia al directorio que contiene los archivos de bases de datos. Por ejemplo, cuando trabaja con tablas de bases de datos de dBASE, FoxPro o Paradox, el argumento ruta especifica el directorio que contiene los archivos .dbf o .db. El nombre del archivo de tabla se deriva del argumento destino o expresióntabla.

Para especificar una base de datos que no sea de Microsoft Jet, agregue un punto y coma (;) al nombre y escríbalo entre comillas simples (' ') o dobles (" "). Por ejemplo, se aceptan 'dBASE IV;' o "dBASE IV;".

También puede utilizar la palabra reservada DATABASE para especificar la base de datos externa. Por ejemplo, las siguientes líneas especifican la misma tabla:

... FROM Tabla IN "" [dBASE IV; DATABASE=C:\DBASE\DATOS\VENTAS;];

... FROM Tabla IN "C:\DBASE\DATOS\VENTAS" "dBASE IV;"

Notas

•	Para mejorar el rendimiento y facilitar el uso, utilice una tabla vinculada en lugar de la cláusula IN.

•	También puede utilizar la palabra reservada IN como un operador de comparación en una expresión. Para obtener más información al respecto, vea el operador In.


WHERE (Cláusula, Microsoft Jet SQL)
WHERE (Cláusula)

Especifica qué registros de las tablas enumeradas en la cláusula FROM se ven afectados por la instrucción SELECT, UPDATE o DELETE.

Sintaxis

SELECT listacampos
FROM expresióntabla
WHERE criterio

Un instrucción SELECT que contiene una cláusula WHERE consta de las siguientes partes:

Parte	Descripción
listacampos	El nombre del campo o de los campos que se van a recuperar con cualquier alias de nombre de campo, predicado de selección (ALL, DISTINCT, DISTINCTROW o TOP) u otras opciones de la instrucción SELECT.
expresióntabla	El nombre de la tabla o de las tablas de las que se van a recuperar los datos.
criterio	Una expresión que deben cumplir los registros para que se incluyan en el resultado de la consulta.
Comentarios

El motor de base de datos Microsoft Jet selecciona los registros que cumplen las condiciones enumeradas en la cláusula WHERE. Si no especifica una cláusula WHERE, la consulta devuelve todas las filas de la tabla. Si especifica más de una tabla en la consulta y no ha incluido una cláusula WHERE o una cláusula JOIN, la consulta genera un producto cartesiano de las tablas.

La cláusula WHERE es opcional, pero cuando se incluye, sigue a la cláusula FROM. Por ejemplo, puede seleccionar todos los empleados del departamento de ventas (WHERE Dept = 'Ventas') o todos los clientes que tengan entre 18 y 30 años (WHERE Edad Between 18 And 30).

Si no utiliza una cláusula JOIN para realizar operaciones de combinación SQL en múltiples tablas, el objeto Recordset resultante no podrá actualizar.

La cláusula WHERE es similar a la cláusula HAVING. La cláusula WHERE determina qué registros se seleccionan. De forma parecida, una vez que los registros se agrupan con la cláusula GROUP BY, la cláusula HAVING determina qué registros se van a mostrar.

Utilice la cláusula WHERE para eliminar registros que no desea que se agrupen mediante una cláusula GROUP BY.

Utilice varias expresiones para determinar qué registros devuelve la instrucción SQL. Por ejemplo, la siguiente instrucción SQL selecciona todos los empleados cuyos salarios son superiores a $21,000:

SELECT Apellidos, Salario

FROM Empleados

WHERE Salario > 21000;

Una cláusula WHERE puede contener hasta 40 expresiones vinculadas por operadores lógicos, como And y Or.

Cuando introduce un nombre de campo que contiene un espacio en blanco o un signo de puntuación, escriba el nombre entre corchetes ([ ]). Por ejemplo, una tabla de información de clientes podría incluir información acerca de unos clientes concretos:

SELECT [Restaurante favorito del cliente]

Cuando especifica el argumento criterio, los literales de fecha deben estar en el formato de EE.UU., incluso si no está utilizando la versión norteamericana del motor de base de datos Microsoft Jet. Por ejemplo, el 10 de mayo de 1996, se escribe 10/5/96 en España y Latinoamérica, y 5/10/96 en Estados Unidos de América. Asegúrese de escribir los literales de fecha entre signos # como se muestra en los siguientes ejemplos.

Para encontrar registros con fecha 10 de mayo de 1996 en una base de datos española o latinoamericana, debe utilizar la siguiente instrucción SQL:

SELECT *

FROM Pedido

WHERE Fecha de envío = #5/10/96#;

También puede utilizar la función DateValue, que reconoce las configuraciones internacionales establecidas por Microsoft Windows. Por ejemplo, utilice este código para Estados Unidos de América:

SELECT *

FROM Pedidos

WHERE Fecha de envío = DateValue('5/10/96');

Y utilice este código para España y Latinoamérica:

SELECT *

FROM Pedidos

WHERE Fecha de envío = DateValue('10/5/96');

Nota   Si la columna a la que hace referencia en la cadena de criterio es de tipo GUID, la expresión de criterio utiliza una sintaxis ligeramente diferente:

WHERE IdRéplica = {GUID {12345678-90AB-CDEF-1234-567890ABCDEF}}

Asegúrese de incluir las llaves anidadas ({}) y los guiones como se muestran.


GROUP BY (Cláusula, Microsoft Jet SQL)
GROUP BY (Cláusula)

Combina en un único registro los registros con valores idénticos en la lista de campos especificada. Se creará un valor de resumen para cada registro si incluye una función agregada de SQL, como Sum o Count, en la instrucción SELECT.

Sintaxis

SELECT listacampos
FROM tabla
WHERE criterio
[GROUP BY grupolistacampos]

Una instrucción SELECT que contiene una cláusula GROUP BY consta de las siguientes partes:

Parte	Descripción
listacampos	El nombre del campo o de los campos que se van a recuperar junto con cualquier alias de nombre de campo, predicado de selección (ALL, DISTINCT, DISTINCTROW o TOP) u otras opciones de la instrucción SELECT.
tabla	El nombre de la tabla o tablas de las que se van a recuperar los datos. Para obtener más información al respecto, vea la cláusula FROM.
criterio	Criterio de selección. Si la instrucción incluye una cláusula WHERE, el motor de base de datos Microsoft Jet agrupa los valores después de aplicar las condiciones de la cláusula WHERE a los registros.
grupolistacampos	Los nombres de hasta 10 campos que se van a utilizar para agrupar registros. El orden de los nombres de los campos en grupolistacampos determina los niveles de agrupamiento desde el más alto hasta el más bajo.
Comentarios

La cláusula GROUP BY es opcional.

Los valores de resumen se omiten si no hay ninguna función agregada de SQL en la instrucción SELECT.

Los valores Null en los campos de GROUP BY se agrupan y no se omiten. Sin embargo, los valores Null no se calculan en ninguna función agregada de SQL.

Utilice la cláusula WHERE para excluir las filas por las que no desea agrupar, y utilice la cláusula HAVING para filtrar los registros una vez agrupados.

A menos que contenga datos tipo Memo u Objeto OLE, un campo de la lista de campos GROUP BY puede hacer referencia a cualquier campo de cualquier tabla enumerada en la cláusula FROM, incluso si el campo no se incluye en la instrucción SELECT, suponiendo que la instrucción SELECT incluya al menos una función agregada de SQL. El motor de base de datos Microsoft Jet no puede agrupar por campos tipo Memo u Objeto OLE.

Todos los campos incluidos en la lista de campos de SELECT se deben incluir en la cláusula GROUP BY o se deben incluir como argumentos en una función agregada de SQL.


HAVING (Cláusula, Microsoft Jet SQL)
HAVING (Cláusula)

Especifica qué registros agrupados se van a mostrar en una instrucción SELECT con una cláusula GROUP BY. Después de que la cláusula GROUP BY combina los registros, la cláusula HAVING muestra los registros agrupados por la cláusula GROUP BY que cumplen las condiciones de la cláusula HAVING.

Sintaxis

SELECT listacampos
FROM tabla
WHERE criterioselección
GROUP BY grupolistacampos
[HAVING grupocriterio]

Una instrucción SELECT que contiene una cláusula HAVING consta de las siguientes partes:

Parte	Descripción
listacampos	El nombre del campo o de los campos que se van a recuperar junto con cualquier alias de nombre de campo, funciones de dominio agregado de SQL , predicado de selección (ALL, DISTINCT, DISTINCTROW o TOP) u otras opciones de la instrucción SELECT.
tabla	El nombre de la tabla o tablas de las que se van a recuperar los datos. Para obtener más información al respecto, vea la cláusula FROM.
criterioselección	Criterio de selección. Si la instrucción incluye una cláusula WHERE, el motor de base de datos Microsoft Jet agrupa los valores después de aplicar las condiciones de la cláusula WHERE a los registros.
grupolistacampos	Los nombres de hasta 10 campos que se van a utilizar para agrupar registros. El orden de los nombres de los campos en grupolistacampos determina los niveles de agrupamiento desde el más alto hasta el más bajo.
grupocriterio	Una expresión que determina qué registros agrupados se van a mostrar.
Comentarios

La cláusula HAVING es opcional.

La cláusula HAVING es similar a WHERE, que determina qué registros se van a seleccionar. Una vez agrupados los registros con la cláusula GROUP BY, la cláusula HAVING determina qué registros se van a mostrar:

SELECT IdCategoría, Sum(UnidadesEnExistencia)

FROM Productos

GROUP BY IdCategoría

HAVING Sum(UnidadesEnExistencia) > 100 And Like "BOS*";

Una cláusula HAVING puede contener hasta 40 expresiones vinculadas por operados lógicos, como And y Or.


ORDER BY (Cláusula, Microsoft Jet SQL)
ORDER BY (Cláusula)

Ordena los registros resultantes de una consulta por un campo o unos campos especificados en sentido ascendente o descendente.

Sintaxis

SELECT listacampos
FROM tabla
WHERE criterioselección
[ORDER BY campo1 [ASC | DESC ][, campo2 [ASC | DESC ]][, ...]]]

Una instrucción SELECT que contenga una cláusula ORDER BY consta de las siguientes partes:

Apartado	Descripción
listacampos	El nombre del campo o de los campos que se van a recuperar junto con cualquier alias de nombre de campo, funciones de dominio agregado de SQL , predicado de selección (ALL, DISTINCT, DISTINCTROW o TOP) u otras opciones de la instrucción SELECT.
tabla	El nombre de la tabla o tablas de las que se van a recuperar los datos. Para obtener más información al respecto, vea la cláusula FROM.
criterioselección	Criterio de selección. Si la instrucción incluye una cláusula WHERE, el motor de base de datos Microsoft Jet ordena los valores después de aplicar las condiciones de la cláusula WHERE a los registros.
campo1, campo2	Los nombres de los campos por los que se va a ordenar.
Comentarios

La cláusula ORDER BY es opcional. Sin embargo, si desea que su datos se muestren ordenados, debe utilizar la cláusula ORDER BY.

El orden predeterminado es ascendente (A a Z, 0 a 9). Los dos ejemplos siguientes ordenan los nombres de los empleados por su apellido:

SELECT Apellidos, Nombre

FROM Empleados

ORDER BY Apellidos;

SELECT Apellidos, Nombre

FROM Empleados

ORDER BY Apellidos ASC;

Para ordenar en sentido descendente (de Z a A,y de 9 a 0), agregue la palabra reservada DESC al final de cada campo por el que desee ordenar en sentido descendente. El siguiente ejemplo selecciona los sueldos y los ordena en sentido descendente:

SELECT Apellidos, Salario

FROM Empleados

ORDER BY Salario DESC, Apellidos;

Si especifica un campo que contiene datos de tipo Memo u Objeto OLE en la cláusula ORDER BY, se produce un error. El motor de base de datos Microsoft Jet no ordena campos de estos tipos.

La cláusula ORDER BY suele ser el último elemento de una instrucción SQL.

Puede incluir campos adicionales en la cláusula ORDER BY. Los registros se ordenan primero por el primer campo enumerado después de la cláusula ORDER BY. Los registros que tengan valores iguales en ese campo se ordenan entonces por el valor del segundo campo, y así sucesivamente.


ALL, DISTINCT, DISTINCTROW, TOP (Predicados, Microsoft Jet SQL)
ALL, DISTINCT, DISTINCTROW, TOP (Predicados)

Especifican los registros seleccionados en las consultas SQL.

Sintaxis

SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]]
FROM tabla

Una instrucción SELECT que contiene estos predicados consta de las siguientes partes:

Parte	Descripción
ALL	El valor asumido si no incluye ninguno de los predicados. El motor de base de datos Microsoft Jet selecciona todos los registros que cumplen las condiciones de la instrucción SQL. Los dos ejemplos siguientes son equivalentes y devuelven todos los registros de la tabla Empleados: SELECT ALL * FROM Empleados ORDER BY IdEmpleado; SELECT * FROM Empleados ORDER BY IdEmpleado;
DISTINCT	Omite los registros que contienen datos duplicados en los campos seleccionados. Para que se incluyan en el resultado de la consulta, los valores para cada campo enumerado en la instrucción SELECT debe ser único. Por ejemplo, varios empleados contenidos en una tabla Empleados pueden tener el mismo apellido. Si dos registros contienen Alonso en el campo Apellidos, la instrucción SQL siguiente devuelve solamente un registro que contiene Alonso: SELECT DISTINCT Apellidos FROM Empleados; Si omite el predicado DISTINCT, esta consulta devuelve los dos registros Alonso. Si la cláusula SELECT contiene más de un campo, la combinación de valores de todos los campos debe ser única para un registro concreto que se va a incluir en el resultado. El resultado de una consulta que utiliza el predicado DISTINCT no se puede actualizar y no refleja cambios subsiguientes realizados por otros usuarios.
DISTINCTROW	Omite los datos basados en registros duplicados completos, no sólo campos duplicados. Por ejemplo, puede crear una consulta que combine las tablas Clientes y Pedidos por el campo IdCliente. La tabla Clientes no contiene ningún campo IdCliente duplicado, pero la tabla Pedidos sí los tiene porque cada cliente puede tener varios pedidos. La instrucción SQL siguiente muestra cómo puede utilizar el predicado DISTINCTROW para crear una lista de compañías que tengan al menos un pedido pero sin obtener detalles acerca de los mismos: SELECT DISTINCTROW NombreCompañía FROM Clientes INNER JOIN Pedidos ON Clientes. IdCliente = Pedidos.IdCliente ORDER BY NombreCompañía; Si omite el predicado DISTINCTROW, esta consulta crea múltiples filas por cada compañía que tenga más de un pedido. El predicado DISTINCTROW tiene efecto solamente cuando selecciona campos desde algunas tablas, pero no todas, utilizadas en la consulta. El predicado DISTINCTROW se ignora si su consulta incluye solamente una tabla o si da salida a campos de todas las tablas.
TOP n [PERCENT]	Devuelve cierto número de registros que se encuentran entre la parte superior e inferior de un intervalo especificado por una cláusula ORDER BY. Suponga que desea obtener los nombres de los primeros 25 alumnos de la promoción de 1994: SELECT TOP 25 Nombre, Apellidos FROM Alumnos WHERE AñoGraduación = 1994 ORDER BY NotasMedias DESC; Si no incluye la cláusula ORDER BY, el resultado de la consulta devolverá un conjunto aleatorio de 25 registros de la tabla Alumnos que cumplan la cláusula WHERE. El predicado TOP no elige entre valores iguales. En el ejemplo anterior, si las notas medias de los registros número veinticinco y veintiseis son iguales, la consulta devolverá 26 registros. También puede utilizar la palabra reservada PERCENT para devolver un determinado porcentaje de registros que se encuentran entre la parte superior e inferior de un intervalo especificado en una cláusula ORDER BY. Suponga que, en lugar de los 25 primeros estudiantes, desea el último 10 por ciento de la clase: SELECT TOP 10 PERCENT Nombre, Apellidos FROM Alumnos WHERE AñoGraduación = 1994 ORDER BY NotasMedias ASC; El predicado ASC especifica una devolución de los valores inferiores. El valor que sigue a TOP debe se un número tipo Integer sin signo. Al predicado TOP no le afecta si la consulta es o no se puede actualizar.
tabla	El nombre de la tabla de la que se van a recuperar los registros.


DELETE (Instrucción, Microsoft Jet SQL)
DELETE (Instrucción)

Crea una consulta de eliminación que elimina registros de una o más tablas enumeradas en la cláusula FROM y que cumplen la cláusula WHERE.

Sintaxis

DELETE [tabla.*]
FROM tabla
WHERE criterio

La instrucción DELETE consta de las siguientes partes:

Parte	Descripción
tabla	El nombre opcional de la tabla cuyos registros se van a eliminar.
tabla	El nombre de la tabla cuyos registros se van a eliminar.
criterio	Una expresión que determina qué registros se van a eliminar.
Comentarios

La instrucción DELETE es especialmente útil cuando desea eliminar muchos registros.

Para eliminar una tabla completa de la base de datos, puede utilizar el método Execute con la instrucción DROP. Sin embargo, si elimina la tabla, se pierde la estructura. En cambio, cuando utiliza DELETE sólo se elimina el dato; la estructura de la tabla y todas sus propiedades, como los atributos y los índices de los campos, permanecen intactos.

Puede utilizar DELETE para quitar registros de las tablas que están en una relación uno a varios con otras tablas. Las operaciones de eliminación en cascada hacen que los registros de las tablas que están en el lado varios de la relación se eliminen cuando el registro correspondiente del lado uno de la relación se elimina en la consulta. Por ejemplo, en la relación entre las tablas Clientes y Pedidos, la tabla Clientes está en el lado uno y la tabla Pedidos está en el lado varios de la relación. La eliminación de un registro de la tabla Clientes provoca que los registros correspondientes de la tabla Pedidos se eliminen si se especifica la opción de eliminación en cascada.

Una consulta de eliminación suprime registros completos, y no sólo los datos de los campos específicos. Si desea eliminar valores de un campo específico, cree una consulta de actualización que cambie los valores a Null.

Importante

•	Después de quitar registros utilizando una consulta de eliminación, no puede deshacer la operación. Si desea saber qué registros se eliminaron, primero examine el resultado con una consulta de selección que utilice el mismo criterio y después ejecute la consulta de eliminación.

•	Mantenga siempre copias de seguridad de sus datos. Si elimina los registros por equivocación, podrá recuperarlos de sus copias de seguridad.


INNER JOIN (Operación, Microsoft Jet SQL)
INNER JOIN (Operación)

Combina registros de dos tablas siempre que existan valores coincidentes en un campo común.

Sintaxis

FROM tabla1 INNER JOIN tabla2 ON tabla1.campo1 operadorcomp tabla2.campo2

La operación INNER JOIN consta de las siguientes partes:

Parte	Descripción
tabla1, tabla2	Los nombres de las tablas cuyos registros se van a combinar.
campo1, campo2	Los nombres de los campos que se van a combinar. Si no son numéricos, los campos deben ser del mismo tipo de datos y contener la misma clase de datos, pero no tienen porqué tener el mismo nombre.
operadorcomp	Cualquier operador de comparación relacional: "=," "<," ">," "<=," ">=," o "<>."
Comentarios

Puede utilizar una operación INNER JOIN en cualquier cláusula FROM. Esta es el tipo de combinación más común. Las combinaciones internas combinan los registros de dos tablas siempre que tengan valores coincidentes en un campo común a ambas tablas.

Puede utilizar INNER JOIN con las tablas Departamentos y Empleados para seleccionar todos los empleados de cada departamento. En cambio, para seleccionar todos los departamentos (aunque alguno no tenga empleados asignados) o todos los empleados (aunque alguno no esté asignado a ningún departamento), puede utilizar una operación LEFT JOIN o RIGHT JOIN para crear una combinación externa.

Si intenta combinar campos que contienen datos de tipo Memo o Objeto OLE, se produce un error.

Puede combinar dos campos numéricos cualesquiera de tipos similares. Por ejemplo, puede combinar campos AutoNumber y Long puesto que son tipos similares. Sin embargo, no puede combinar campos de tipo Single y Double.

El siguiente ejemplo muestra cómo podría combinar las tablas Categorías y Productos por el campo IdCategoría:

SELECT NombreCategoría, NombreProducto

FROM Categorías INNER JOIN Productos

ON Categorías.IdCategoría = Productos.IdCategoría;

En el ejemplo anterior, IdCategoría es el campo combinado, pero no se incluye en la salida de la consulta porque no está incluido en la instrucción SELECT. Para incluir el campo combinado, incluya el nombre de campo en la instrucción SELECT; en este caso, Categorías. IdCategoría.

También puede vincular varias cláusulas ON en una instrucción JOIN, utilizando la sintaxis siguiente:

SELECT campos
FROM tabla1 INNER JOIN tabla2
ON tabla1.campo1 operadorcomp tabla2.campo1 AND
ON tabla1.campo2 operadorcomp tabla2.campo2) OR
ON tabla1.campo3 operadorcomp tabla2.campo3)];

También puede anidar instrucciones JOIN utilizando la sintaxis siguiente:

SELECT campos
FROM tabla1 INNER JOIN
(tabla2 INNER JOIN [( ]tabla3
[INNER JOIN [( ]tablax [INNER JOIN ...)]
ON tabla3.campo3 operadorcomp tablax.campox)]
ON tabla2.campo2 operadorcomp tabla3.campo3)
ON tabla1.campo1 operadorcomp tabla2.campo2;

Una operación LEFT JOIN o RIGHT JOIN se puede anidar dentro de una operación INNER JOIN, pero una operación INNER JOIN no se puede anidar dentro de LEFT JOIN o RIGHT JOIN.


INSERT INTO (Instrucción, Microsoft Jet SQL)
INSERT INTO (Instrucción)

Agrega uno o varios registros a una tabla. Esto se conoce como una consulta de datos añadidos.

Sintaxis

Consulta de datos añadidos para múltiples registros:

INSERT INTO destino [IN basededatosexterna] [(campo1[, campo2[, ...]])]
SELECT [origen.]campo1[, campo2[, ...]
FROM expresióntabla

Consulta de datos añadidos para un registro:

INSERT INTO destino [(campo1[, campo2[, ...]])]
VALUES (valor1[, valor2[, ...])

La instrucción INSERT INTO consta de las siguientes partes:

Parte	Descripción
destino	El nombre de la tabla o consulta donde se van a añadir registros.
basededatosexterna	La ruta de una base de datos externa. Si desea una descripción de la ruta de acceso, vea la cláusula IN.
origen	El nombre de la tabla o consulta de donde se van a copiar registros.
campo1, campo2	Los nombres de los campos donde se van a añadir los datos, si está a continuación del argumento destino, o los nombres de los campos de donde se obtienen los datos, si está a continuación de un argumento origen.
expresióntabla	El nombre de la tabla o las tablas de donde se van a insertar los registros. Este argumento puede ser un nombre de tabla sencillo o uno compuesto resultante de una operación INNER JOIN, LEFT JOIN o RIGHT JOIN, o una consulta guardada.
valor1, valor2	Los valores que se van a insertar en los campos específicos del nuevo registro. Cada valor se inserta en el campo que corresponde a la posición del valor en la lista: valor1 se inserta en campo1 del nuevo registro, valor2 dentro de campo2, y así sucesivamente. Debe separar los valores con una coma y escribir los campos de texto entre comillas (' ').
Comentarios

Puede utilizar la instrucción INSERT INTO para agregar un único registro a una tabla utilizando la sintaxis de consulta de datos añadidos para un único registro como se muestra anteriormente. En este caso, su código especifica el nombre y valor de cada campo del registro. Debe especificar cada uno de los campos del registro a los que se va a asignar un valor y dicho valor para ese campo. Cuando no especifique cada campo, se inserta el valor predeterminado o Null en las columnas no especificadas. Los registros se agregan al final de la tabla.

También puede utilizar la instrucción INSERT INTO para añadir un conjunto de registros de otra tabla o consulta utilizando la cláusula SELECT ... FROM tal y como se muestra anteriormente en la sintaxis de consulta de datos añadidos para múltiples registros. En este caso, la cláusula SELECT especifica los campos a añadir a la tabla destino especificada.

La tabla origen o destino puede especificar una tabla o una consulta. Si especifica una consulta, el motor de base de datos Microsoft Jet añade registros a cualquiera y a todas las tablas especificadas en la consulta.

La instrucción INSERT INTO es opcional pero cuando se incluye, debe preceder a la instrucción SELECT.

Si su tabla de destino contiene una clave principal, asegúrese de que añade un valor único y distinto de  Null al campo o campos de la clave principal; si no, el motor de base de datos Microsoft Jet no añadirá los registros.

Si añade registros a una tabla con un campo de tipo AutoNumber y desea volver a numerar los registros añadidos, no incluya el campo AutoNumérico en su consulta. Incluya el campo Autonumérico en la consulta si desea conservar los valores originales del campo.

Utilice la cláusula IN para añadir registros a una tabla de otra base de datos.

Para crear una nueva tabla, utilice la instrucción SELECT... INTO en lugar de crear una consulta de creación de tabla.

Para ver qué registros se van a añadir antes de ejecutar la consulta de datos añadidos, ejecute primero una consulta de selección que utilice el mismo criterio de selección para ver los resultados.

Una consulta de datos añadidos copia los registros de una o más tablas a otra. Las tablas que contienen los registros que añade no se ven afectadas por la consulta de datos añadidos.

En lugar de añadir registros existentes de otra tabla, puede especificar el valor de cada campo en un registro nuevo utilizando la cláusula VALUES. Si omite la lista de campos, la cláusula VALUES debe incluir un valor para cada campo de la tabla o; de lo contrario; la instrucción INSERT fallará. Utilice una instrucción INSERT INTO adicional con una cláusula VALUES para cada registro adicional que desee crear.


LEFT JOIN, RIGHT JOIN (Operaciones, Microsoft Jet SQL)
LEFT JOIN, RIGHT JOIN (Operaciones)

Combinan registros de la tabla de origen cuando se utiliza en cualquier cláusula FROM.

Sintaxis

FROM tabla1 [ LEFT | RIGHT ] JOIN tabla2
ON tabla1.campo1 operadorcomp tabla2.campo2

Las operaciones LEFT JOIN y RIGHT JOIN consta de las siguientes partes:

Parte	Descripción
tabla1, tabla2	El nombre de las tablas cuyos registros se van a combinar.
campo1, campo2	Nombres de los campos que se combinan. Los campos deben ser del mismo tipo de datos y contener la misma clase de dato, pero no necesitan tener el mismo nombre.
operadorcomp	Cualquier operador de comparación relacional: "=," "<," ">," "<=," ">=," or "<>."
Comentarios

Utilice una operación LEFT JOIN para crear una combinación externa por la izquierda. Las combinaciones externas por la izquierda pueden incluir todos los registros de la primera (parte izquierda) de dos tablas, aunque no haya valores coincidentes para los registros de la segunda tabla (parte derecha).

Utilice una operación RIGHT JOIN para crear una combinación externa por la derecha. Las combinaciones externas por la izquierda pueden incluir todos los registros de la segunda (parte derecha) de dos tablas, aunque no haya valores coincidentes para los registros de la primera tabla (parte izquierda).

Por ejemplo, podría utilizar LEFT JOIN con las tablas Departamentos (parte izquierda) y Empleados (parte derecha) para seleccionar todos los departamentos, incluyendo aquellos que no tengan empleados asignados a ellos. Para seleccionar todos los empleados, incluyendo aquellos que no estén asignados a ningún departamento, podría utilizar RIGHT JOIN.

El siguiente ejemplo muestra cómo podría combinar las tablas Categorías y Productos mediante el campo IdCategoría. La consulta produce una lista de todas las categorías, incluyendo aquellas que no contienen productos:

SELECT NombreCategoría,

NombreProducto

FROM Categorías LEFT JOIN Productos

ON Categorías.IdCategoría = Productos.IdCategoría;

En este ejemplo, el campo combinado es IdCategoría pero no se incluye en el resultado de la consulta porque no está incluido en la instrucción SELECT. Para incluir el campo combinado, introduzca el nombre del campo en la instrucción SELECT; en este caso, Categorías.IdCategoría.

Notas

•	Para crear una consulta que incluya sólo los registros en los cuales los datos de los campos combinados son los mismos, utilice una operación INNER JOIN.

•	Una operación LEFT JOIN o RIGHT JOIN se puede anidar en una INNER JOIN, pero una INNER JOIN no se puede anidar en una LEFT JOIN o RIGHT JOIN. Vea la explicación del anidamiento en el tema dedicado a INNER JOIN para ver cómo se anidan combinaciones dentro de otras combinaciones.

•	Puede vincular múltiples cláusulas ON. Vea la explicación de la vinculación de cláusulas en el tema dedicado a INNER JOIN para ver cómo se hace.

•	Si intenta combinar campos que contienen datos tipo Memo u Objeto OLE, se produce un error.


PARAMETERS (Declaración, Microsoft Jet SQL)
PARAMETERS (Declaración)

Declara el nombre y el tipo de datos de cada parámetro en una consulta de parámetros.

Sintaxis

PARAMETERS nombre tipodedatos [, nombre tipodedatos [, ...]]

La declaración PARAMETERS consta de las siguientes partes:

Parte	Descripción
nombre	El nombre del parámetro. Asignado a la propiedad Name del objeto Parameter y utilizado para identificar este parámetro en la colección Parameters. Puede utilizar nombre como una cadena que se muestra en un cuadro de diálogo mientras su aplicación ejecuta la consulta. Utilice los corchetes ([ ]) para encerrar texto que contenga espacios en blanco o signos de puntuación. Por ejemplo, [Precio bajo] y [¿En qué mes quiere empezar el informe?] son nombres de argumentos nombre válidos.
tipodedatos	Uno de los principales tipos de datos de Microsoft Jet SQL  o sus sinónimos.
Comentarios

Para consultas que ejecute periódicamente, puede utilizar una declaración PARAMETERS para crear una consulta de parámetros. Una consulta de parámetros puede ayudar a automatizar el proceso de cambio de criterio. En una consulta de parámetros, el código necesitará proporcionar los parámetros cada vez que se ejecute la consulta.

La declaración PARAMETERS es opcional, pero cuando se incluye precede a cualquier otra instrucción, incluyendo SELECT.

Si la declaración incluye más de un parámetro, sepárelos con comas. El siguiente ejemplo incluye dos parámetros:

PARAMETERS [Precio bajo] Currency, [Fecha inicio] DateTime;

Puede utilizar nombre pero no tipodedatos en una cláusula WHERE o HAVING. El siguiente ejemplo espera que se le proporcionen dos parámetros y después aplica el criterio a los registros de la tabla Pedidos:

PARAMETERS [Precio bajo] Currency,

[Fecha inicio] DateTime;

SELECT IdPedido, ImportePedido

FROM Pedidos

WHERE ImportePedido > [Precio bajo]

AND FechaPedido >= [Fecha inicio];


PROCEDURE (Cláusula, Microsoft Jet SQL)
PROCEDURE (Cláusula)

Define un nombre y parámetros opcionales de una consulta.

Sintaxis

PROCEDURE nombre [parámetro1 tipodedatos[, parámetro2 tipodedatos[, ...]]

La cláusula PROCEDURE consta de las siguientes partes:

Parte	Descripción
nombre	Un nombre de procedimiento. Debe seguir las convenciones de nombres estándar.
parámetro1, parámetro2	Uno o más nombres de campo o parámetros. Por ejemplo: PROCEDURE Ventas_por_país [Fecha Inicio] DateTime, [Fecha Fin] DateTime; Para obtener más información acerca de los parámetros, vea la declaración PARAMETERS.
tipodedatos	Uno de los principales tipos de datos de Microsoft Jet SQL  o sus sinónimos.
Comentarios

Un procedimiento SQL consta de una cláusula PROCEDURE (que especifica el nombre del procedimiento), una lista opcional de definiciones de parámetros y una instrucción SQL única. Por ejemplo, el procedimiento Obtener_Nombre_Producto podría ejecutar una consulta que recuperara un nombre de producto específico.

Notas

•	Si la cláusula incluye más de una definición de campo (parejas parámetro-tipodedatos), sepárelos con comas.

•	La cláusula PROCEDURE debe estar seguida de una instrucción SQL (por ejemplo, una instrucción SELECT o UPDATE).


SELECT...INTO (Instrucción, Microsoft Jet SQL)
SELECT...INTO (Instrucción)

Crea una consulta de creación de tabla.

Sintaxis

SELECT campo1[, campo2[, ...]] INTO nuevatabla [IN basededatosexterna]
FROM origen

La instrucción SELECT...INTO consta de las siguientes partes:

Parte	Descripción
campo1, campo2	El nombre de los campos que se van a copiar a la nueva tabla.
nuevatabla	El nombre de la tabla que se va a crear. Debe ser conforme con las convenciones de nombres estándar. Si nuevatabla es la misma que el nombre de una tabla ya existente se produce un error interceptable.
basededatosexterna	La ruta de una base de datos externa. Si desea una descripción de la ruta de acceso, vea la cláusula IN.
origen	El nombre de la tabla existente de la cual se seleccionan registros. Puede ser una o varias tablas, o una consulta.
Comentarios

Puede utilizar las consultas de creación de tabla para archivar registros, hacer copias de seguridad de sus tablas o hacer copias para exportar a otra base de datos o utilizar en informes que muestren los datos de un periodo de tiempo concreto. Por ejemplo, podría producir un informe Ventas mensuales por región ejecutando la misma consulta de creación de tabla cada mes.

Notas

•	Puede que desee definir una clave principal para la nueva tabla. Cuando cree la tabla, los campos de la nueva tabla heredan el tipo de datos y el tamaño de cada campo de las tablas subyacentes de la consulta, pero no se transfiere ninguna otra propiedad del campo o de la tabla.

•	Para agregar datos a una tabla ya existente, utilice la instrucción INSERT INTO en lugar de crear una consulta de datos añadidos.

•	Para ver qué registros se seleccionarán antes de ejecutar la consulta de creación de tabla, primero examine el resultado de una instrucción SELECT que utilice el mismo criterio de selección.


Subconsultas SQL

Una subconsulta es una instrucción SELECT anidada dentro de una instrucción SELECT, SELECT...INTO, INSERT...INTO, DELETE, o UPDATE, o dentro de otra subconsulta.

Sintaxis

Puede utilizar tres formas de sintaxis para crear una subconsulta:

comparación [ANY | ALL | SOME] (instrucciónsql)

expresión [NOT] IN (instrucciónsql)

[NOT] EXISTS (instrucciónsql)

Una subconsulta consta de las siguientes partes:

Parte	Descripción
comparación	Una expresión y un operador de comparación que compara la expresión con el resultado de la subconsulta.
expresión	Una expresión para la que se busca el conjunto de resultado de la subconsulta.
instrucciónsql	Una instrucción SELECT, que sigue el mismo formato y reglas que cualquier otra instrucción SELECT. Debe estar entre paréntesis.
Comentarios

Puede utilizar una subconsulta en lugar de una expresión en la lista de campos de una instrucción SELECT, o en una cláusula WHERE o HAVING. En una subconsulta, utilice una instrucción SELECT para proporcionar un conjunto de uno o más valores específicos para  evaluar en la expresión de la cláusula WHERE o HAVING.

Utilice los predicados ANY o SOME, que son sinónimos, para recuperar registros de la consulta principal que satisfagan la comparación con otros registros recuperados en la subconsulta. El siguiente ejemplo devuelve todos los productos cuyo precio por unidad es mayor que cualquier producto vendido con un descuento del 25 por ciento o mayor:

SELECT * FROM Productos

WHERE PrecioUnidad > ANY

(SELECT PrecioUnidad FROM Detalles de pedidos

WHERE Descuento >= .25);

Utilice el predicado ALL para recuperar sólo los registros de la consulta principal que satisfagan la comparación con todos los registros recuperados en la subconsulta. Si cambia ANY a ALL en el ejemplo anterior, la consulta devolvería sólo aquellos productos cuyo precio por unidad fuese mayor que el de todos los productos vendidos con un descuento del 25 por ciento o mayor. Esto es mucho más restrictivo.

Utilice el predicado IN para recuperar sólo aquellos registros de la consulta principal para los cuales algún registro de la subconsulta contenga un valor igual. El siguiente ejemplo devuelve todos los productos con descuento del 25 por ciento o mayor:

SELECT * FROM Productos

WHERE IdProducto IN

(SELECT IdProducto FROM Detalles de pedidos

WHERE Descuento >= .25);

Además, puede utilizar NOT IN para recuperar solamente aquellos registros de la consulta principal para los que ningún registro de la subconsulta contenga un valor igual.

Utilice el predicado EXISTS (con la palabra reservada opcional NOT) en comparaciones verdadero/falso para determinar si la subconsulta devuelve algún registro.

También puede utilizar alias de los nombres de las tablas en la subconsulta para referirse a las tablas enumeradas en una cláusula FROM fuera de la subconsulta. El siguiente ejemplo devuelve los nombres de los empleados cuyos salarios son iguales o mayores que la media de los salarios de todos los empleados que tienen la misma categoría laboral. A la tabla Empleados se le da el alias "T1":

SELECT Apellidos,

Nombre, Cargo, Salario

FROM Empleados AS T1

WHERE Salario >=

(SELECT Avg(Salario)

FROM Empleados

WHERE T1.Cargo= Empleados.Cargo) Order by Cargo;

En el ejemplo anterior, la palabra reservada AS es opcional.

En algunas subconsultas se permiten consultas de tabla de referencias cruzadas, específicamente, como predicados (las de la cláusula WHERE). A las subconsultas de salida (las de la lista SELECT) no se les permite consultas de tabla de referencias cruzadas.


TRANSFORM (Instrucción, Microsoft Jet SQL)
TRANSFORM (Instrucción)

Crea una consulta de tabla de referencias cruzadas.

Sintaxis

TRANSFORM funcióndedominioagregado
instrucciónselect
PIVOT campodinámico [IN (valor1[, valor2[, ...]])]

La instrucción TRANSFORM consta de las siguientes partes:

Parte	Descripción
funcióndedominioagregado	Una función de dominio agregado de SQL que actúa sobre los datos seleccionados.
instrucciónselect	Una instrucción SELECT.
campodinámico	El campo o la expresión que desea utilizar para crear encabezados de columnas en el conjunto de resultado de la consulta.
valor1, valor2	Valores fijos utilizados para crear los encabezados de columnas.
Comentarios

Cuando resume datos utilizando una consulta de tabla de referencias cruzadas, selecciona valores de los campos o expresiones especificadas como encabezados de columna de forma que puede ver los datos en un formato más compacto que con una consulta de selección.

La instrucción TRANSFORM es opcional, pero cuando se incluye es la primera instrucción en una cadena SQL. Precede a una instrucción SELECT que especifica los campos utilizados como encabezados de fila y una cláusula GROUP BY que especifica la agrupación de filas. Opcionalmente, puede incluir otras cláusulas, como WHERE, que especifiquen selecciones adicionales o criterios de selección. También puede utilizar subconsultas como predicados (específicamente, los de la cláusula WHERE) en una consulta de tabla de referencias cruzadas.

Los valores devueltos en campodinámico se utilizan como cabeceras de columna en el conjunto de resultado de la consulta. Por ejemplo, haciendo dinámicas las cifras de ventas en el mes de la venta en una consulta de tabla de referencias cruzadas podría crear 12 columnas. Puede restringir campodinámico para crear encabezados de valores fijos (valor1, valor2 ) enumerados en la cláusula opcional IN. También puede incluir valores fijos para los cuales no existan datos para crear columnas adicionales.


UNION (Operación, Microsoft Jet SQL)
UNION (Operación)

Crea una consulta de unión, que combina el resultado de dos o más consultas o tablas independientes.

Sintaxis

[TABLE] consulta1 UNION [ALL] [TABLE] consulta2 [UNION [ALL] [TABLE] consultan [ ... ]]

La operación UNION consta de las siguientes partes:

Parte	Descripción
consulta1-n	Una instrucción SELECT, el nombre de una consulta almacenada o el nombre de una tabla almacenada precedido por la palabra clave TABLE.
Comentarios

Puede mezclar el resultado de dos o más consultas, tablas e instrucciones SELECT, en cualquier combinación, en una operación UNION única. El siguiente ejemplo mezcla una tabla existente llamada Nuevas cuentas y una instrucción SELECT:

TABLE [Nuevas cuentas] UNION ALL

SELECT *

FROM Clientes

WHERE ImportePedido > 1000;

De forma predeterminada, no se devuelven los registros duplicados cuando utiliza una operación UNION; sin embargo, puede incluir el predicado ALL para asegurar que se devuelven todos los registros. Esto también hace que la consulta se ejecute más rápidamente.

Todas las consultas de una operación UNION deber requerir el mismo número de campos. Sin embargo, los campos no tienen que ser del mismo tamaño o tipo de datos.

Utilice alias solamente en la primera cláusula SELECT porque en las demás se ignora. En la cláusula ORDER BY, haga referencia a los campos por cómo se les llama en la primera cláusula SELECT.

Notas

•	Puede utilizar la cláusula GROUP BY o HAVING en cada argumento consulta para agrupar los datos devueltos.

•	Puede utilizar una cláusula ORDER BY al final del último argumento consulta para mostrar los datos devueltos en un orden específico.


UPDATE (Instrucción, Microsoft Jet SQL)
UPDATE (Instrucción)

Crea una consulta de actualización que cambia los valores de los campos en una tabla específica según un criterio específico.

Sintaxis

UPDATE tabla
SET nuevovalor
WHERE criterio;

La instrucción UPDATE consta de las siguientes partes:

Parte	Descripción
tabla	El nombre de la tabla cuyos datos desea modificar.
nuevovalor	Una expresión que determina el valor que se va insertar en un campo concreto de los registros actualizados.
criterio	Una expresión que determina qué registros se actualizarán. Sólo se actualizan los registros que satisfacen la expresión.
Comentarios

La instrucción UPDATE es especialmente útil desea cambiar muchos registros o cuando los registros que desea cambiar están en múltiples tablas.

Puede cambiar varios campos al mismo tiempo. El ejemplo siguiente aumenta los valores de Importe Pedido en un 10 por ciento y los valores de Cargo en un 3 por ciento para las compañías de envío de México:

UPDATE Pedidos

SET ImportePedido = ImportePedido * 1.1,

Cargo = Cargo * 1.03

WHERE PaísDestinatario = 'México';

Importante

•	La instrucción UPDATE no genera un conjunto de resultado. Además, después de actualizar registros utilizando una consulta de actualización, no puede deshacer la operación. Si desea saber qué registros se actualizaron, examine primero el resultado de una consulta de selección que utilice el mismo criterio y después ejecute la consulta de actualización.

•	Mantenga siempre copias de seguridad de sus datos. Si actualiza registros equivocados, puede recuperarlos desde sus copias de seguridad.


WITH OWNERACCESS OPTION (Declaración, Microsoft Jet SQL)
WITH OWNERACCESS OPTION (Declaración)

En un entorno multiusuario con un grupo de trabajo seguro, utilice esta declaración con una consulta para conceder al usuario que la ejecute los mismos permisos que el propietario de la consulta.

Sintaxis

instrucciónsql
WITH OWNERACCESS OPTION

Comentarios

La declaración WITH OWNERACCESS OPTION es opcional.

El siguiente ejemplo permite al usuario ver información sobre el salario (incluso si el usuario no tiene permiso para ver la tabla Nómina), proporcionado por el propietario de la consulta que tenga ese permiso:

SELECT Apellidos,

Nombre, Salario

FROM Empleados

ORDER BY Apellidos

WITH OWNERACCESS OPTION;

Si a un usuario se le impide la creación de una tabla o la agregación de datos a ella, puede utilizar WITH OWNERACCESS OPTION para permitir que el usuario ejecute una consulta de creación de tabla o una consulta de datos añadidos.

Si desea exigir la configuración de la seguridad de su grupo de trabajo y los permisos de los usuarios, no incluya la declaración WITH OWNERACCESS OPTION.

Esta opción requiere que tenga acceso al archivo System.mdw asociado a la base de datos. Es realmente útil sólo en implementaciones seguras de entornos multiusuario.


Funciones de dominio agregado de SQL (SQL)
Funciones de dominio agregado de SQL

Utilizando las funciones de dominio agregado de SQL puede determinar varias estadísticas sobre conjuntos de valores. Puede utilizar estas funciones en cualquier consulta y expresión de agregado en la propiedad SQL de un objeto QueryDef o cuando crea un objeto Recordset basado en una consulta SQL.

Función Avg

Función Count

Funciones Min, Max

Funciones StDev, StDevP

Función Sum

Funciones Var, VarP


Avg (Función, Microsoft Jet SQL)
Avg (Función)

Calcula la media aritmética de un conjunto de valores contenido en un campo especificado de una consulta.

Sintaxis

Avg(expresión)

El marcador de posición expresión representa una expresión de cadena que identifica el campo que contiene los datos numéricos de los que desea obtener la media o una expresión que ejecuta un cálculo utilizando los datos de ese campo. Los operandos de expresión pueden incluir el nombre del campo de una tabla, una constante o una función (que puede ser intrínseca o definida por el usuario, pero ninguna de las demás funciones de dominio agregado de SQL).

Comentarios

La media calculada por la función Avg es la media aritmética (la suma de los valores dividido entre el número de valores). Podría utilizar la función Avg, por ejemplo, para calcular el costo medio de envío.

La función Avg no incluye ningún campo Null en el cálculo.

Puede utilizar la función Avg en una expresión de consulta y en la propiedad SQL de un objeto QueryDef o cuando crea un objeto Recordset basado en una consulta SQL.


Count (Función, Microsoft Jet SQL)
Count (Función)

Calcula el número de registros devueltos por una consulta.

Sintaxis

Count(expresión)

El marcador de posición expresión representa una expresión de cadena que identifica el campo que contiene los datos que desea contar o una expresión que ejecuta un cálculo utilizando los datos de ese campo. Los operandos de expresión pueden incluir el nombre del campo de una tabla o una función (que puede ser intrínseca o definida por el usuario, pero ninguna de las demás funciones de dominio agregado de SQL). Puede contar cualquier tipo de datos, incluido tipo texto.

Comentarios

Puede utilizar la función Count para contar el número de registros de una consulta base. Por ejemplo, podría utilizar la función Count para contar el número de pedidos enviados a un país determinado.

Aunque expresión puede ejecutar un cálculo sobre un campo, la función Count simplemente mide el número de registros. No importan los valores que están almacenados en los registros.

La función Count no cuenta registros que tengan campos Null a menos que expresión sea el carácter comodín asterisco (*). Si utiliza un asterisco, la función Count calcula el número total de registros, incluyendo los que contienen campos Null. Count(*) es considerablemente más rápido que Count([Nombre de columna]). No escriba el asterisco entre comillas (' '). El siguiente ejemplo calcula el número de registros de la tabla Pedidos:

SELECT Count(*)

AS TotalPedidos FROM Pedidos;

Si expresión identifica múltiples campos, la función Count cuenta un registro solamente si al menos uno de los campos no es Null. Si todos los campos especificados son Null, no se cuenta el registro. Separe los nombres de los campos con un símbolo &. El siguiente ejemplo muestra cómo puede limitar la cuenta de registros a aquellos en los que los valores de FechaEnvío o FechaEntrega no sean Null:

SELECT

Count('FechaEnvío & FechaEntrega')

AS [Not Null] FROM Pedidos;

Puede utilizar la función Count en una expresión de consulta. También puede usar esta expresión en la propiedad de SQL de un objeto QueryDef o cuando crea un objeto Recordset basado en una consulta SQL.


First, Last (Funciones, Microsoft Jet SQL)
First, Last (Funciones)

Devuelven el valor del campo del primer o último registro del conjunto de resultado, devuelto por una consulta.

Sintaxis

First(expresión)

Last(expresión)

El marcador de posición expresión representa una expresión de cadena que identifica el campo que contiene los datos que desea utilizar o una expresión que ejecuta un cálculo utilizando los datos de ese campo. Los operandos de expresión pueden incluir el nombre del campo de una tabla, una constante o una función (que puede ser intrínseca o definida por el usuario, pero ninguna de las demás funciones de dominio agregado de SQL).

Comentarios

Las funciones First y Last son análogas a los métodos MoveFirst y MoveLast de un objeto Recordset del DAO. Simplemente devuelven el valor de un campo especificado en el primer o el último registro, respectivamente, del conjunto de resultados devuelto por una consulta. Puesto que los registros se devuelven habitualmente sin un orden concreto (a menos que la consulta incluya una cláusula ORDER BY), los registros devueltos por estas funciones serán arbitrarios.


Min, Max (Funciones, Microsoft Jet SQL)
Min, Max (Funciones)

Devuelven el valor mínimo o máximo de un conjunto de valores contenidos en un campo especificado de una consulta.

Sintaxis

Min(expresión)

Max(expresión)

El marcador de posición expresión representa una expresión de cadena que identifica el campo que contiene los datos que desea calcular o una expresión que ejecuta un cálculo utilizando los datos de ese campo. Los operandos de expresión pueden incluir el nombre del campo de una tabla, una constante o una función (que puede ser intrínseca o definida por el usuario, pero ninguna de las demás funciones de dominio agregado de SQL).

Comentarios

Puede utilizar las funciones Min y Max para determinar los valores mayor y menor de un campo basándose en el agregado o agrupamiento especificado. Por ejemplo, podría utilizar estas funciones para devolver el menor y el mayor costo de envío. Si no se especifica ningún agregado, se utiliza toda la tabla.

Puede utilizar las funciones Min y Max en una expresión de consulta y en la propiedad de SQL de un objeto QueryDef o cuando crea un objeto Recordset basado en una consulta SQL.


StDev, StDevP (Funciones, Microsoft Jet SQL)
StDev, StDevP (Funciones)

Devuelve n estimaciones de la desviación estándar de una población o una muestra de población representada como un conjunto de valores contenidos en un campo especificado de una consulta.

Sintaxis

StDev(expresión)

StDevP(expresión)

El marcador de posición expresión representa una expresión de cadena que identifica el campo que contiene los datos numéricos que desea calcular o una expresión que ejecuta un cálculo utilizando los datos de ese campo. Los operandos de expresión pueden incluir el nombre del campo de una tabla, una constante o una función (que puede ser intrínseca o definida por el usuario, pero ninguna de las demás funciones de dominio agregado de SQL).

Comentarios

La función StDevP evalúa una población y la función StDev evalúa una muestra de población.

Si la consulta base contiene menos de dos registros (o no contiene registros, para la función StDevP), estas funciones devuelven un valor Null (que indica que no se puede calcular la desviación estándar).

Puede utilizar las funciones StDev y StDevP en una expresión de consulta. También puede utilizar esta expresión en la propiedad de SQLde un objeto QueryDef o cuando crea un objeto Recordset basado en una consulta SQL.


Sum (Función, Microsoft Jet SQL)
Sum (Función)

Devuelve la suma de un conjunto de valores contenidos en un campo especificado de una consulta.

Sintaxis

Sum(expresión)

El marcador de posición expresión representa una expresión de cadena que identifica el campo que contiene los datos numéricos que desea sumar o una expresión que ejecuta un cálculo utilizando los datos de ese campo. Los operandos de expresión pueden incluir el nombre del campo de una tabla, una constante o una función (que puede ser intrínseca o definida por el usuario, pero ninguna de las demás funciones de dominio agregado de SQL).

Comentarios

La función Sum totaliza los valores de un campo. Por ejemplo, podría utilizar la función Sum para determinar el costo total de los gastos de envío.

La función Sum ignora los registros que contienen campos Null. El siguiente ejemplo muestra cómo calcular la suma de los productos de los campos PrecioUnidad y Cantidad:

SELECT

Sum(PrecioUnidad * Cantidad)

AS [Total Ingresos] FROM [Detalles de pedidos];

Puede utilizar la función Sum en una expresión de consulta. También puede usar esta expresión en la propiedad de SQL de un objeto QueryDef o cuando crea un objeto Recordset basado en una consulta SQL.


Var, VarP (Funciones, Microsoft Jet SQL)
Var, VarP (Funciones)

Devuelve n estimaciones de la varianza de una población o una muestra de población representada como un conjunto de valores contenidos en un campo especificado de una consulta.

Sintaxis

Var(expresión)

VarP(expresión)

El marcador de posición expresión representa una expresión de cadena que identifica el campo que contiene los datos numéricos que desea evaluar o una expresión que ejecuta un cálculo utilizando los datos de ese campo. Los operandos de expresión pueden incluir el nombre del campo de una tabla, una constante o una función (que puede ser intrínseca o definida por el usuario, pero ninguna de las demás funciones de dominio agregado de SQL).

Comentarios

La función VarP evalúa una población y la función Var evalúa una muestra de población.

Si la consulta base contiene menos de dos registros, las funciones Var y VarP devuelven un valor Null, que indica que no se puede calcular la varianza.

Puede utilizar las funciones Var y VarP en una expresión de consulta o en una instrucción SQL.


Calcular campos en funciones SQL

Puede utilizar el argumento expresión de cadena en una función de dominio agregado de SQL para realizar un cálculo sobre valores de un campo. Por ejemplo, podría calcular un porcentaje (como un recargo o un impuesto sobre ventas) mediante la multiplicación del valor de un campo por una fracción.

La siguiente tabla proporciona ejemplos de cálculos sobre campos de las tablas Pedidos y Detalles de pedidos en la base de datos Neptuno.mdb.

Cálculo	Ejemplo
Sumar un número a un campo	Cargo + 5
Restar un número de un campo	Cargo - 5
Multiplicar un campo por un número	PrecioUnidad * 2
Dividir un campo por un número	Cargo / 2
Sumar un campo a otro	UnidadesEnExistencia + UnidadesEnPedido
Restar un campo de otro	NivelNuevoPedido - UnidadesEnExistencia
El siguiente ejemplo calcula el importe del descuento medio de todos los pedidos de la base de datos Neptuno.mdb. Multiplica los valores de los campos PrecioUnidad y Descuento para determinar el importe del descuento de cada pedido y después calcula la media. Puede utilizar esta expresión en una instrucción SQL en código de Visual Basic:

SELECT Avg(PrecioUnidad * Descuento) AS [Descuento medio] FROM [Detalles de pedidos];


Between...And (Operador, Microsoft Jet SQL)
Between...And (Operador)

Determina si el valor de una expresión se encuentra entre un intervalo de valores especificado. Puede utilizar este operador dentro de una instrucción SQL.

Sintaxis

expresión [Not] Between valor1 And valor2

La sintaxis del operador Between...And consta de las siguientes partes:

Parte	Descripción
expresión	Expresión que identifica el campo que contiene los datos que desea calcular.
valor1, valor2	Expresiones sobre las que desea calcular expresión.
Comentarios

Si el valor de expresión está entre valor1 y valor2 (inclusive), el operador Between...And devuelve True; de lo contrario, devuelve False. Puede incluir el operador lógico Not para calcular la condición inversa (es decir, si expresión está fuera del intervalo definido por valor1 y valor2).

Puede utilizar el operador Between...And para determinar si el valor de un campo se encuentra dentro de un intervalo numérico especificado. El siguiente ejemplo determina si un pedido se envió a un lugar dentro de un intervalo de códigos postales. Si el código postal está entre 98101 y 98199, la función IIf devuelve "Local". De lo contrario, devuelve "No local".

SELECT IIf(CódPostal Between 98101 And 98199, "Local", "No local")

FROM Editores

Si expresión, valor1 o valor2 son Null, Between...And devuelve un valor Null.

Puesto que los caracteres comodín, como el asterisco (*), se tratan como literales, no los puede utilizar con el operador Between...And. Por ejemplo, no puede utilizar 980* y 989* para encontrar todos los códigos postales que empiecen desde 980 hasta 989. En su lugar, tiene dos alternativas para conseguir esto. Puede agregar una expresión a la consulta que obtenga los tres caracteres de la izquierda del campo de texto y utilizar Between...And con estos caracteres. O bien puede rellenar los valores superiores e inferiores con caracteres adicionales; en este caso, 98000 hasta 98999 ó 98000 hasta 98999 - 9999 si utiliza códigos postales extendidos.


Comparación del SQL del motor de base de datos Microsoft Jet y el SQL de ANSI

El SQL del motor de base de datos Microsoft Jet cumple generalmente la norma ANSI-89 Level 1. Sin embargo, ciertas características del SQL de ANSI no están implementadas en el SQL de Microsoft Jet. A la inversa, el SQL de Microsoft Jet incluye palabras reservadas y características no permitidas en el SQL de ANSI.

Principales diferencias

•	El SQL de Microsoft Jet y el de ANSI tienen palabras reservadas y tipos de datos diferentes. Para obtener más información, vea Palabras reservadas del SQL del motor de base de datos Microsoft Jet y Tipos de datos equivalentes del SQL de ANSI.

•	Se aplican reglas diferentes en la estructura del operador Between...And, que tiene la sintaxis siguiente:

expresión1 [NOT] Between valor1 And valor2

En el SQL de Microsoft Jet, valor1 puede ser mayor que valor2; en el SQL de ANSI, valor1 debe ser igual o menor que valor2.

•	Se utilizan diferentes caracteres comodín con el operador Like.

Carácter coincidente	Microsoft Jet SQL	ANSI SQL
Un carácter cualquiera	?	_ (subrayado)
Cero o más caracteres	*	%
•	El SQL de Microsoft Jet suele ser menos restrictivo. Por ejemplo, permite agrupamientos y ordenamientos en expresiones.

•	El SQL de Microsoft Jet permite expresiones más potentes.

Características mejoradas del SQL de Microsoft Jet

El SQL de Microsoft Jet proporciona las características mejoradas siguientes:

•	La instrucción TRANSFORM, que proporciona compatibilidad para consultas de tabla de referencias cruzadas

•	Funciones de dominio agregado adicionales, como StDev yVarP

•	La declaración PARAMETERS para definir consultas de parámetros

Características del SQL de ANSI no permitidas en el SQL de Microsoft Jet

El SQL de Microsoft Jet no permite las siguientes características del SQL de ANSI:

•	Instrucciones de seguridad, como COMMIT, GRANT y LOCK.

•	Referencias a la función de dominio agregado DISTINCT. Por ejemplo, el SQL de Microsoft Jet no permite SUM(DISTINCT nombrecolumna).

•	La claúsula LIMIT TO nn ROWS utilizada para limitar el número de filas devueltas por una consulta. Solamente puede utilizar la claúsula WHERE para limitar el alcance de una consulta.


Tipos de datos equivalentes del SQL de ANSI

La tabla siguiente enumera los tipos de datos del SQL de ANSI y los tipos de datos equivalentes del SQL del motor de base de datos de Microsoft Jet y sus sinónimos válidos.

Tipo de datos del SQL de ANSI	Tipo de datos del SQL de Microsoft Jet	Sinónimo
BIT, BIT VARYING	BINARY (Vea Notas)	VARBINARY
No permitido	BIT (Vea Notas)	BOOLEAN, LOGICAL, LOGICAL1, YESNO
No permitido	BYTE	INTEGER1
No permitido	COUNTER	AUTOINCREMENT
No permitido	CURRENCY	MONEY
DATE, TIME, TIMESTAMP	DATETIME	DATE, TIME, TIMESTAMP
No permitido	GUID
DECIMAL	No permitido
REAL	SINGLE	FLOAT4, IEEESINGLE, REAL
DOUBLE PRECISION, FLOAT	DOUBLE	FLOAT, FLOAT8, IEEEDOUBLE, NUMBER, NUMERIC
SMALLINT	SHORT	INTEGER2, SMALLINT
INTEGER	LONG	INT, INTEGER, INTEGER4
INTERVAL	No permitido
No permitido	LONGBINARY	GENERAL, OLEOBJECT
No permitido	LONGTEXT	LONGCHAR, MEMO, NOTE
CHARACTER, CHARACTER VARYING	TEXT	ALPHANUMERIC, CHAR, CHARACTER, STRING, VARCHAR
No permitido	VALUE (Vea Notas)
Notas

•	El tipo de datos BIT del SQL de ANSI no corresponde al tipo de datos BIT del SQL de Microsoft Jet, sino al tipo de datos BINARY. No hay equivalente en el SQL de ANSI a ningún tipo de datos BIT del SQL de Microsoft Jet.

•	La palabra reservada VALUE no representa ningún tipo de datos definido por el motor de base de datos Microsoft Jet.


In (Operador, Microsoft Jet SQL)
In (Operador)

Determina si el valor de una expresión es igual a cualquiera de los diversos valores de una lista especificada.

Sintaxis

expresión [Not] In(valor1, valor2,  . . .)

Comentarios

La sintaxis del operador In consta de las siguientes partes:

Parte	Descripción
expresión	Expresión que identifica el campo que contiene los datos que quiere calcular.
valor1, valor2	Expresión o lista de expresiones sobre las que desea calcular expresión.
Si expresión se encuentra en la lista de valores, el operador In devuelve True; de lo contrario, devuelve False. Puede incluir el operador lógico Not para calcular la condición inversa (es decir, si expresión no está en la lista de valores).

Por ejemplo, puede utilizar el operador In para determinar qué pedidos se enviaron a una serie de regiones específicas:

SELECT *

FROM Pedidos

WHERE RegiónDestinatario In ('Sevilla','Vigo','Santander')


Like (Operador, Microsoft Jet SQL)
Like (Operador)

Compara una expresión de cadena con un modelo en una expresión SQL.

Sintaxis

expresión Like "modelo"

La sintaxis del operador Like consta de las siguientes partes:

Parte	Descripción
expresión	Expresión SQL utilizada en una cláusula WHERE.
modelo	Cadena o literal de cadena de caracteres con la que se compara expresión.
Comentarios

Puede utilizar el operador Like para encontrar valores en un campo que coincidan con el modelo que se especificó. Para modelo, puede especificar el valor completo (por ejemplo , Like "García") o puede utilizar caracteres comodín para encontrar un intervalo de valores (por ejemplo, Like "Ga*").

En una expresión, puede utilizar el operador Like para comparar un valor de campo con una expresión de cadena. Por ejemplo, si introduce Like "C*" en una consulta SQL, la consulta devuelve todos los valores de campo que empiecen con la letra C. En una consulta de parámetros, puede pedir al usuario que introduzca el modelo para buscar.

El siguiente ejemplo devuelve los datos que empiezan con la letra P seguida de cualquier letra entre A y F, y tres números:

Like "P[A-F]###"

La tabla siguiente muestra cómo puede utilizar el operador Like para probar expresiones de diferentes método modelos.

Tipo de coincidencia	Modelo	Coincide (devuelve True)	No coincide (devuelve False)
Múltiples caracteres	a*a	aa, aBa, aBBBa	aBC
	*ab*	abc, AABB, Xab	aZb, bac
Carácter especial	a[*]a	a*a	aaa
Múltiples caracteres	ab*	abcdefg, abc	cab, aab
Un único carácter	a?a	aaa, a3a, aBa	aBBBa
Un único número	a#a	a0a, a1a, a2a	aaa, a10a
Intervalo de caracteres	[a-z]	f, p, j	2, &
Fuera de un intervalo	[!a-z]	9, &, %	b, a
Distinto de número	[!0-9]	A, a, &, ~	0, 1, 9
Combinado	a[!b-m]#	An9, az0, a99	abc, aj0


Tipos de datos del SQL del motor de base de datos de Microsoft Jet

Los tipos de datos del SQL del motor de base de datos Microsoft Jet consisten en 13 tipos de datos principales definidos por el motor de base de datos Microsoft Jet y varios sinónimos válidos reconocidos para estos tipos de datos.

La tabla siguiente muestra los tipos de datos principales. Los sinónimos se identifican en Palabras reservadas del SQL del motor de base de datos Microsoft Jet.

Tipo de datos	Tamaño de almacenamiento	Descripción
BINARY	1 byte por carácter	Se puede almacenar cualquier tipo de datos en un campo de este tipo. Los datos no se traducen (por ejemplo, a texto). La forma en que se introducen los datos en un campo binario indica cómo aparecerán al mostrarlos.
BIT	1 byte	Valores Sí y No, y campos que contienen solamente uno de dos valores.
BYTE	1 byte	Un número entero entre 0 y 255.
COUNTER	4 bytes	Un número que el motor de base de datos Microsoft Jet incrementa automáticamente siempre que se agrega un registro nuevo a una tabla. En el motor de base de datos Microsoft Jet, el tipo de datos para este valor es Long.
CURRENCY	8 bytes	Un número entero comprendido entre  – 922.337.203.685.477,5808 y 922.337.203.685.477,5807.
DATETIME (Vea DOUBLE)	8 bytes	Una valor de fecha u hora entre los años 100 y 9999
GUID	128 bits	Un número de identificación único utilizado con llamadas a procedimientos remotos.
SINGLE	4 bytes	Un valor de signo flotante de precisión simple con un intervalo comprendido entre  – 3,402823E38 y  – 1,401298E-45 para valores negativos, y desde 1,401298E-45 a 3,402823E38 para valores positivos, y 0.
DOUBLE	8 bytes	Un valor de signo flotante de precisión doble con un intervalo comprendido entre  – 1,79769313486232E308 y  – 4,94065645841247E-324 para valores negativos, y desde 4,94065645841247E-324 a 1,79769313486232E308 para valores positivos, y 0.
SHORT	2 bytes	Un entero corto, entre  – 32.768 y 32.767.
LONG	4 bytes	Un entero largo entre  – 2.147.483.648 y 2.147.483.647.
LONGTEXT	1 byte por carácterr	Desde cero hasta un máximo de 1,2 gigabytes.
LONGBINARY	Lo que se requiera	Desde cero hasta un máximo de 1,2 gigabytes. Se utiliza para objetos OLE.
TEXT	1 byte por carácter	Desde cero a 255 caracteres.
Nota   También puede utilizar la palabra reservada VALUE en instrucciones SQL.


Palabras reservadas del SQL del motor de base de datos Microsoft Jet

La lista siguiente incluye todas las palabras reservadas del motor de base de datos de Microsoft Jet que se pueden utilizar en instrucciones SQL. Las palabras de la lista que no están completamente en mayúsculas también son reservadas para otras aplicaciones. Por tanto, los temas de Ayuda individuales para estas palabras proporcionan descripciones generales que no se centran en el uso de SQL.

Nota  Las palabra seguidas de un asterisco (*) están reservadas, pero actualmente no tienen significado en el contexto de una instrucción SQL del motor de base de datos Microsoft Jet (por ejemplo, Level y TableID).

A

ADD ALL  Alphanumeric — Vea TEXT ALTER  And	ANY  AS  ASC AUTOINCREMENT — Vea COUNTER Avg
B-C

Between BINARY  BIT  BOOLEAN — Vea BIT BY BYTE  CHAR, CHARACTER — Vea TEXT	COLUMN CONSTRAINT  Count COUNTER CREATE  CURRENCY
D

DATABASE DATE — Vea DATETIME DATETIME  DELETE DESC	DISALLOW DISTINCT  DISTINCTROW  DOUBLE   DROP
E-H

Eqv EXISTS FLOAT, FLOAT8 — Vea DOUBLE FLOAT4 — Vea SINGLE FOREIGN	FROM  GENERAL — Vea LONGBINARY GROUP GUID HAVING
I

IEEEDOUBLE — Vea DOUBLE IEEESINGLE — Vea SINGLE IGNORE Imp In IN INDEX	INNER  INSERT INT, INTEGER, INTEGER4 — Vea LONG INTEGER1 — Vea BYTE INTEGER2 — Vea SHORT INTO Is
J-M

JOIN KEY LEFT Level* Like LOGICAL, LOGICAL1 — Vea BIT LONG	LONGBINARY  LONGTEXT  Max  MEMO — Vea LONGTEXT Min  Mod MONEY — Vea CURRENCY
N-P

Not NULL  NUMBER — Vea DOUBLE NUMERIC — Vea DOUBLE OLEOBJECT — Vea LONGBINARY ON OPTION Or	ORDER  Outer* OWNERACCESS  PARAMETERS  PERCENT  PIVOT  PRIMARY  PROCEDURE
Q-S

REAL — Vea SINGLE  REFERENCES  RIGHT  SELECT  SET  SHORT  SINGLE	SMALLINT — Vea SHORT SOME  StDev StDevP  STRING — Vea TEXT Sum
T-Z

TABLE TableID* TEXT  TIME — Vea DATETIME TIMESTAMP — Vea DATETIME TOP TRANSFORM UNION UNIQUE UPDATE	VALUE  VALUES  Var  VARBINARY — Vea BINARY VARCHAR — Vea TEXT VarP  WHERE  WITH  Xor YESNO — Vea BIT


Expresiones SQL

Una expresión SQL es una cadena que contiene toda o una parte de una instrucción SQL. Por ejemplo, el método FindFirst en un objeto Recordset utiliza una expresión SQL que consiste en el criterio de selección que se encuentra en una claúsula WHERE de SQL.

El motor de base de datos Microsoft Jet  utiliza el servicio de expresiones de Visual Basic for Applications (o VBA) para realizar cálculos aritméticos sencillos y evaluación de funciones. Todos los operadores utilizados en expresiones del SQL de Microsoft Jet (excepto Between, In y Like) están definidos por el servicio de expresiones de VBA. Además, el servidor de expresiones de VBA ofrece más de 100 funciones VBA que se pueden utilizar en expresiones SQL. Por ejemplo, puede utilizar estas funciones VBA para crear una consulta SQL en la ventana de Diseño de consulta en Microsoft Access y también puede utilizar estas funciones en una consulta SQL en el método OpenRecordset del DAO dentro de código de Microsoft Visual C++, Microsoft Visual Basic y Microsoft Excel.


Usar caracteres comodín en la comparación de cadenas

Los modelos de coincidencia incorporados proporcionan una herramienta versátil para realizar comparaciones de cadenas. La tabla siguiente muestra los caracteres comodín que puede utilizar con el operador Like y el número de dígitos o cadenas que comparan.

Carácter (es)  en modelo	Coincide con expresión
?	Cualquier carácter
*	Cero o más caracteres
#	Cualquier número (0 – 9)
[listacaracteres]	Cualquier carácter que esté en listacaracteres
[!listacaracteres]	Cualquier carácter que no esté en listacaracteres
Puede utilizar un grupo de uno o más caracteres (listacaracteres) entre corchetes ([ ]) para que coincida con cualquier carácter en expresión y listacaracteres puede incluir casi cualquier carácter del juego de caracteres ANSI, incluidos los números. De hecho, puede utilizar los caracteres especiales de corchete de apertura ([ ), interrogación (?), signo de número (#) y el asterisco (*) para que coincidan consigo mismos directamente sólo si van entre corchetes. No puede utilizar el signo de corchete de cierre ( ]) dentro de un grupo para que coincida consigo mismo, pero puede utilizarlo fuera de un grupo como un carácter individual.

Además de una sencilla lista de caracteres entre corchetes, listacaracteres puede especificar un intervalo de caracteres utilizando un guión (-) para separar los límite superior e inferior del intervalo. Por ejemplo, utilizar [A-Z] en modelo produce una coincidencia si el carácter correspondiente en expresión a esa posición contiene cualquier letra mayúscula entre A y Z. Se pueden incluir múltiples intervalos dentro de los corchetes, sin ninguna limitación. Por ejemplo [a-zA-Z0-9] hace coincidir cualquier carácter alfanumérico.

Otras reglas importantes sobre la coincidencia con un modelo incluyen lo siguiente:

•	Un signo de exclamación (!) al principio de listacaracteres significa que hay una coincidencia si se encuentra en expresión cualquier carácter excepto los de listacaracteres. Cuando se utiliza fuera de los corchetes, el signo de exclamación coincide con él mismo.

•	Puede utilizar el guión (-) al principio (después de un signo de exclamación si lo utiliza) o al final de listacaracteres para hacerse coincidir consigo mismo. En cualquier otra ubicación, el guión identifica un intervalo de caracteres ANSI.

•	Cuando especifica un intervalo de caracteres, éstos deben aparecer en orden ascendente (A-Z o 0-100). [A-Z] es un modelo válido, pero no lo es [Z-A].

•	Se considera que la secuencia de caracteres [ ] es una cadena de longitud cero ("").


ALTER TABLE (Ejemplo de la instrucción, DAO)
ALTER TABLE (Ejemplo de la instrucción)

Este ejemplo agrega un campo Salario con un tipo de datos Currency a la tabla Empleados.

Sub AlterTableX1()

Dim dbs As Database

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Agrega el campo Salario a la tabla Empleados

' y lo hace de tipo de datos Currency.

dbs.Execute "ALTER TABLE Empleados " _

& "ADD COLUMN Salario CURRENCY;"

dbs.Close

End Sub

Este ejemplo quita el campo Salario de la tabla Empleados.

Sub AlterTableX2()

Dim dbs As Database

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' elimina el campo Salario de la tabla Empleados.

dbs.Execute "ALTER TABLE Empleados " _

& "DROP COLUMN Salario;"

dbs.Close

End Sub

Este ejemplo agrega una clave externa a la tabla Pedidos. La clave externa se basa en el campo ID de empleado y se refiere al campo ID de empleado de la tabla Empleados. En este ejemplo, no puede enumerar el campo ID de empleado después de la tabla Empleados en la cláusula REFERENCES porque ID de empleado es la clave principal de la tabla Empleados.

Sub AlterTableX3()

Dim dbs As Database

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Agrega una clave externa a la tabla Pedidos.

dbs.Execute "ALTER TABLE Pedidos " _

& "ADD CONSTRAINT RelaciónDePedidos " _

& "FOREIGN KEY ([ID de empleado]) " _

& "REFERENCES Empleados ([ID de empleado]);"

dbs.Close

End Sub

Este ejemplo quita la clave externa de la tabla Pedidos.

Sub AlterTableX4()

Dim dbs As Database

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Elimina la clave externa Relacióndepedidos de

' la tabla Pedidos.

dbs.Execute "ALTER TABLE Pedidos " _

& "DROP CONSTRAINT RelaciónDePedidos;"

dbs.Close

End Sub


CREATE INDEX (Ejemplo de la instrucción, DAO)
CREATE INDEX (Ejemplo de la instrucción)

Este ejemplo crea un índice con los campos Tel domicilio y Extensión tel de la tabla Empleados.

Sub CreateIndexX1()

Dim dbs As Database

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Crea el índice ÍndNue en la tabla Empleados.

dbs.Execute "CREATE INDEX ÍndNue ON Empleados " _

& "([Tel domicilio], [Extensión tel]);"

dbs.Close

End Sub

Este ejemplo crea un índice en la tabla Clientes utilizando el campo ID de cliente. Ninguno de los dos registros pueden tener los mismos datos en el campos ID de cliente y no se permiten valores Null.

Sub CreateIndexX2()

Dim dbs As Database

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Crea un índice único, IdClie, con el campo

' ID de cliente.

dbs.Execute "CREATE UNIQUE INDEX IdClie " _

& "ON Clientes ([ID de cliente]) " _

& "WITH DISALLOW NULL;"

dbs.Close

End Sub


CREATE TABLE, cláusula CONSTRAINT (Ejemplo de la instrucción, DAO)
CREATE TABLE, cláusula CONSTRAINT (Ejemplo de la instrucción)

Este ejemplo crea una tabla nueva llamada EstaTabla con dos campos de tipo Text.

Sub CreateTableX1()

Dim dbs As Database

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Crea una tabla con dos campos de texto.

dbs.Execute "CREATE TABLE EstaTabla " _

& "(Nombre TEXT, Apellidos TEXT);"

dbs.Close

End Sub

Este ejemplo crea una tabla nueva llamada MiTabla con dos campos tipo Text, un campo de tipo Fecha/Hora y un índice único hecho con estos tres campos.

Sub CreateTableX2()

Dim dbs As Database

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Crea una tabla con tres campos y un índice

' único hecho con estos tres campos.

dbs.Execute "CREATE TABLE MiTabla " _

& "(Nombre TEXT, Apellidos TEXT, " _

& "FechaNacimiento DATETIME, " _

& "CONSTRAINT MiTablaRestringida UNIQUE " _

& "(Nombre, Apellidos, FechaNacimiento));"

dbs.Close

End Sub

Este ejemplo crea una nueva tabla con dos campos de tipo Texto y un campo de tipo Entero. El campo NSS es la clave principal.

Sub CreateTableX3()

 	Dim dbs As Database

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Crea una tabla con tres campos y una

' clave principal.

dbs.Execute "CREATE TABLE NuevaTabla " _

& "(Nombre TEXT, Apellidos TEXT, " _

& "NSS INTEGER CONSTRAINT MiCampoRestringido " _

& "PRIMARY KEY);"

dbs.Close

End Sub


DROP (Ejemplo de la instrucción, DAO)
DROP (Ejemplo de la instrucción)

El siguiente ejemplo supone la existencia de un índice ÍndNue hipotético en la tabla Empleados en la base de datos Neptuno.

Este ejemplo elimina el índice MiÍndice de la tabla Empleados.

Sub DropX1()

Dim dbs As Database

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Elimina ÍndNue de la tabla Empleados.

dbs.Execute "DROP INDEX ÍndNue ON Empleados;"

dbs.Close

End Sub

Este ejemplo elimina la tabla Empleados de la base de datos.

Sub DropX2()

Dim dbs As Database

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Elimina la tabla Empleados.

dbs.Execute "DROP TABLE Empleados;"

dbs.Close

End Sub


SELECT, cláusula FROM (Ejemplo de la instrucción, DAO)
SELECT, cláusula FROM (Ejemplo de la instrucción)

Alguno de los siguientes ejemplos supone la existencia de un campo Salario hipotético en la tabla Empleados. Observe que este campo no existe actualmente el la tabla Empleados de la base de datos Neptuno.

Este ejemplo crea un objeto Recordset de tipo Dynaset basado en una instrucción SQL que selecciona los campos Apellidos y Nombre de todos los registros de la tabla Empleados. Llama al procedimiento EnumCampos, que imprime el contenido del objeto Recordset en la ventana Debug.

Sub SelectX1()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Selecciona los valores del nombre y los apellidos

' de todos los registros de la tabla Empleados.

Set rst = dbs.OpenRecordset("SELECT Apellidos, " _

& "Nombre FROM Empleados;")

' Llena el recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset.

EnumCampos rst,12

dbs.Close

End Sub

Este ejemplo cuenta el número de registros que tienen una entrada en el campo CódPostal y los nombres del campo devuelto Cuenta.

Sub SelectX2()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Cuenta el número de registros con un valor en

' CódPostal y devuelve el total en el campo Cuenta.

Set rst = dbs.OpenRecordset("SELECT Count " _

& "([Cód postal]) AS Cuenta FROM Clientes;")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset. Especifica el tamaño del campo a = 12.

EnumCampos rst, 12

dbs.Close

End Sub

Este ejemplo muestra el número de empleados y el promedio de los salarios y el máximo.

Sub SelectX3()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Cuenta el número de empleados, calcula el

' promedio de los salarios y devuelve el más alto.

Set rst = dbs.OpenRecordset("SELECT Count (*) " _

& "AS TotalEmpleados, Avg(Salario) " _

& "AS PromedioSalario, Max(Salario) " _

& "AS SalarioMáximo FROM Empleados;")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset. Transfiere el objeto Recordset y el

' tamaño de campo deseado.

EnumCampos rst, 17

dbs.Close

End Sub

El procedimiento Sub EnumCampos se transfiere a un objeto Recordset desde el procedimiento que llama. El procedimiento da formato e imprime los campos del Recordset en la ventana Debug. La variable intLonCmp tiene el tamaño de campo impreso deseado. Algunos campos se podrían truncar.

Sub EnumCampos(rst As Recordset, intLonCmp As Integer)

Dim lngRegistros As Long, lngCampos As Long

Dim lngContadorReg As Long, lngContadorCmp As Long

Dim strTítulo As String, strTemp As String

' Establece en la variable lngRegistros el número

' de registros del Recordset.

lngRegistros = rst.RecordCount

' Establece en la variable lngCampos el número de

' campos del Recordset.

lngCampos = rst.Fields.Count

Debug.Print "Hay " & lngRegistros _

& " registros que contienen " & lngCampos _

& " campos en el recordset."

Debug.Print

' Genera una cadena para imprimir el encabezado de la columna.

strTítulo = "Registro  "

For lngContadorCmp = 0 To lngCampos - 1

strTítulo = strTítulo _

& Left(rst.Fields(lngContadorCmp).Name _

& Space(intLonCmp), intLonCmp)

Next lngContadorCmp

' Imprime el encabezado de la columna.

Debug.Print strTítulo

Debug.Print

' Hace un bucle entre el Recordset; imprime el

' número de registro y los valores del campo.

rst.MoveFirst

For lngContadorReg = 0 To lngRegistros - 1

Debug.Print Right(Space(6) & _

Str(lngContadorReg), 8) & "  ";

For lngContadorCmp = 0 To lngCampos - 1

' Comprueba los valores Null.

If IsNull(rst.Fields(lngContadorCmp)) Then

strTemp = "<null>"

Else

' Establece en strTemp el contenido del campo.

Select Case _

rst.Fields(lngContadorCmp).Type

Case 11

strTemp = ""

Case dbText, dbMemo

strTemp = _

rst.Fields(lngContadorCmp)

Case Else

strTemp = _

str(rst.Fields(lngContadorCmp))

End Select

End If

Debug.Print Left(strTemp _

& Space(intLonCmp), intLonCmp);

Next lngContadorCmp

Debug.Print

rst.MoveNext

Next lngContadorReg

End Sub


IN (Ejemplo de la cláusula, DAO)
IN (Ejemplo de la cláusula)

La siguiente tabla muestra cómo puede utilizar la cláusula IN para recuperar datos de una base de datos externa. En cada ejemplo, supone que la tabla Clientes hipotética se almacena en una base de datos externa.

Base de datos externa	Instrucción SQL
Base de datos de Microsoft Jet	SELECT IdCliente FROM Clientes IN OtraBD.mdb  WHERE IdCliente Like "A*";
dBASE III o IV. Para recuperar datos de una tabla de dBASE III, sustituya "dBASE III;" por "dBASE IV;".	SELECT IdCliente FROM Cliente IN "C:\DBASE\DATOS\VENTAS" "dBASE IV;" WHERE IdCliente Like "A*";
dBASE III o IV utilizando la sintaxis Database.	SELECT IdCliente FROM Cliente IN "" [dBASE IV; Database=C:\DBASE\DATOS\VENTAS;]  WHERE IdCliente Like "A*";
Paradox 3.x o 4.x. Para recuperar datos de una tabla de Paradox versión 3.x, sustituya "Paradox 3.x;" por "Paradox 4.x;".	SELECT IdCliente FROM Cliente IN "C:\PARADOX\DATOS\VENTAS" "Paradox 4.x;" WHERE IdCliente Like "A*";
Paradox 3.x o 4.x utilizando la sintaxis Database.	SELECT IdCliente FROM Cliente IN "" [Paradox 4.x;Database=C:\PARADOX\DATOS\VENTAS;]  WHERE IdCliente Like "A*";
Una hoja de cálculo de Microsoft Excel	SELECT IdCliente, Compañía FROM [Clientes$]  IN "c:\docs\xldatos.xls" "EXCEL 5.0;" WHERE IdCliente Like "A*" ORDER BY IdCliente;
Un intervalo con nombre en una hoja de cálculo	SELECT IdCliente, Compañía FROM IntervClientes IN "c:\docs\xldata.xls" "EXCEL 5.0;" WHERE IdCliente Like "A*" ORDER BY IdCliente;


In (Ejemplo del operador, DAO)
In (Ejemplo del operador)

El siguiente ejemplo utiliza la tabla Pedidos en la base de datos Neptuno.mdb para crear una campo que incluya todos los pedidos enviados a España y España y las fechas de envío.

Este ejemplo llama al procedimiento EnumCampos, que puede encontrar en el ejemplo de la instrucción SELECT.

Sub InX()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Seleciona registros de la tabla Pedidos que

' tienen el valor España o España en PaísDestinatario.

Set rst = dbs.OpenRecordset("SELECT " _

& "[ID de cliente], [Fecha de envío] FROM Pedidos " _

& "WHERE [País destinatario] In " _

& "('España','España');")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset.

EnumCampos rst, 15

dbs.Close

End Sub


WHERE (Ejemplo de la cláusula, DAO)
WHERE (Ejemplo de la cláusula)

El siguiente ejemplo supone la existencia de un campo Salario hipotético en la tabla Empleados. Observe que este campo no existe actualmente en la tabla Empleados de la base de datos Neptuno.

Este ejemplo selecciona los campos Apellidos y Nombre de cada registro cuyo apellido es King.

Este ejemplo llama al procedimiento EnumCampos, que puede encontrar en el ejemplo de la instrucción SELECT.

Sub WhereX()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Selecciona los registros de la tabla Empleados

' cuyo apellido es King.

Set rst = dbs.OpenRecordset("SELECT Apellidos, " _

& "Nombre FROM Empleados " _

& "WHERE Apellidos = 'King';")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset.

EnumCampos rst, 12

dbs.Close

End Sub


GROUP BY (Ejemplo de la cláusula, DAO)
GROUP BY (Ejemplo de la cláusula)

Este ejemplo crea una lista de cargos única y el número de empleados que hay en cada cargo.

Este ejemplo llama al procedimiento EnumCampos, que puede encontrar en el ejemplo de la instrucción SELECT.

Sub GroupByX1()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Para cada cargo, cuenta el número de empleados

' con ese cargo.

Set rst = dbs.OpenRecordset("SELECT Cargo, " _

& "Count([Cargo]) AS Cuenta " _

& "FROM Empleados GROUP BY Cargo;")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset. Transfiere el objeto Recordset y el

' tamaño de campo deseado.

EnumCampos rst, 25

dbs.Close

End Sub

Para cada cargo único, este ejemplo calcula el número de empleados en Washington que tienen ese cargo.

Sub GroupByX2()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Para cada cargo, cuenta el número de empleados

' con ese cargo. Sólo incluye los empleados de la

' región Washington (WA).

Set rst = dbs.OpenRecordset("SELECT Cargo, " _

& "Count(Cargo) AS Cuenta " _

& "FROM Empleados WHERE Región = 'WA' " _

& "GROUP BY Cargo;")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset. Transfiere el objeto Recordset y el

' tamaño de campo deseado.

EnumCampos rst, 25

dbs.Close

End Sub


HAVING (Ejemplo de la cláusula, DAO)
HAVING (Ejemplo de la cláusula)

Este ejemplo selecciona el cargo asignado a más de un empleado en la región de Washington.

Este ejemplo llama al procedimiento EnumCampos, que puede encontrar en el ejemplo de la instrucción SELECT.

Sub HavingX()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Selecciona el cargo asignado a más de un

' empleado en la región de Washington (WA).

Set rst = dbs.OpenRecordset("SELECT Cargo, " _

& "Count(Cargo) as Total FROM Empleados " _

& "WHERE Región = 'WA' " _

& "GROUP BY Cargo HAVING Count(Cargo) > 1;")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del recordset.

EnumCampos rst, 25

dbs.Close

End Sub


ORDER BY (Ejemplo de la cláusula, DAO)
ORDER BY (Ejemplo de la cláusula)

La instrucción SQL mostrada en el siguiente ejemplo utiliza la cláusula ORDER BY para ordenar registros por los apellidos en orden descendente (Z-A).

Este ejemplo llama al procedimiento EnumCampos, que puede encontrar en el ejemplo de la instrucción SELECT.

Sub OrderByX()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Selecciona los valores del nombre y los

' apellidos de la tabla Empleados y los ordena

' en orden descendente.

Set rst = dbs.OpenRecordset("SELECT Apellidos, " _

& "Nombre FROM Empleados " _

& "ORDER BY Apellidos DESC;")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido.

EnumCampos rst, 12

dbs.Close

End Sub


ALL, DISTINCT, DISTINCTROW, TOP (Ejemplo de los predicados, DAO)
ALL, DISTINCT, DISTINCTROW, TOP (Ejemplo de los predicados)

Este ejemplo crea una consulta que combina las tablas de Clientes y Pedidos mediante el campo ID de cliente. La tabla Clientes contiene ID de cliente no duplicados, pero la tabla Pedidos sí los tiene ya que cada cliente puede tener muchos pedidos. Al utilizar DISTINCTROW se produce una lista de compañías que tienen al menos un pedido, pero sin ningún detalle acerca de esos pedidos.

Sub AllDistinctX()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Combina las tablas Clientes y Pedidos mediante

' el campo ID de cliente. Selecciona una lista de

' compañías que tienen al menos un pedido.

Set rst = dbs.OpenRecordset("SELECT DISTINCTROW " _

& "[Nombre de compañía] FROM Clientes " _

& "INNER JOIN Pedidos " _

& "ON Clientes.[ID de cliente] = " _

& "Pedidos.[ID de cliente] " _

& "ORDER BY [Nombre de compañía];")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset. Transfiere el objeto Recordset y el

' tamaño de campo deseado.

EnumCampos rst, 25

dbs.Close

End Sub


DELETE (Ejemplo de la instrucción, DAO)
DELETE (Ejemplo de la instrucción)

Este ejemplo elimina todos los registros de empleados cuyo cargo es Aprendiz. Cuando la cláusula FROM incluye sólo una tabla, no tiene que enumerar el nombre de la misma en la instrucción DELETE.

Sub DeleteX()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Elimina los registros de empleados cuyo cargo es Aprendiz.

dbs.Execute "DELETE * FROM " _

& "Empleados WHERE Cargo = 'Aprendiz';"

dbs.Close

End Sub


INNER JOIN (Ejemplo de la operación, DAO)
INNER JOIN (Ejemplo de la operación)

Este ejemplo crea dos combinaciones equivalentes: una entre las tablas Detalles de pedidos y Pedidos y otra entre las tablas Pedidos y Empleados. Esto es necesario porque la tabla Empleados no contiene datos de ventas y la tabla Detalles de pedidos no contiene datos de empleados. La consulta produce una lista de empleados y sus ventas totales.

Este ejemplo llama al procedimiento EnumCampos, que puede encontrar en el ejemplo de la instrucción SELECT.

Sub InnerJoinX()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Crea una combinación entre las tablas Detalles de

' pedidos y Pedidos y otra entre las tablas Pedidos

' y Empleados. Obtiene una lista de empleados y sus

' ventas totales.

Set rst = dbs.OpenRecordset("SELECT DISTINCTROW " _

& "Sum(PrecioUnidad * Cantidad) AS Ventas, " _

& "(Nombre & Chr(32) & Apellidos) AS Nombre " _

& "FROM Empleados INNER JOIN(Pedidos " _

& "INNER JOIN [Detalles de pedidos] " _

& "ON [Detalles de pedidos].IdPedido = " _

& "Pedidos.IdPedido ) " _

& "ON Pedidos.IdEmpleado = " _

& "Empleados.IdEmpleado " _

& "GROUP BY (Nombre & Chr(32) & Apellidos);")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset. Transfiere el objeto Recordset y el

' tamaño de campo deseado.

EnumCampos rst, 20

dbs.Close

End Sub


INSERT INTO (Ejemplo de la instrucción, DAO)
INSERT INTO (Ejemplo de la instrucción)

Este ejemplo selecciona todos los registros de una tabla Nuevos Clientes y los agrega a la tabla Clientes. Cuando no se designan columnas individuales, la nombres de columna de la tabla SELECT deben coincidir exactamente con los de la tabla INSERT INTO.

Sub InsertIntoX1()

Dim dbs As Database

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' selecciona todos los registros de la tabla Nuevos

' Clientes y los agrega a la tabla Clientes.

dbs.Execute " INSERT INTO Clientes " _

& "SELECT * " _

& "FROM [Nuevos Clientes];"

dbs.Close

End Sub

Este ejemplo crea un registro nuevo en la tabla Empleados.

Sub InsertIntoX2()

Dim dbs As Database

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Crea un registro nuevo en la tabla Empleados. El

' nombre es Juan, los apellidos Pérez García y el

' cargo es Aprendiz.

dbs.Execute " INSERT INTO Empleados " _

& "(Nombre,Apellidos,Cargo) VALUES " _

& "('Juan', 'Pérez García', 'Aprendiz');"

dbs.Close

End Sub


LEFT JOIN, RIGHT JOIN (Ejemplo de las operaciones, DAO)
LEFT JOIN, RIGHT JOIN (Ejemplo de las operaciones)

Este ejemplo supone la existencia de unos campos NombreDepartamento y IdDepartamento hipotéticos en la tabla Empleados. Observe que este campo no existe actualmente el la tabla Empleados de la base de datos Neptuno.

Este ejemplo selecciona todos los departamentos, incluyendo aquellos que no tienen empleados.

Este ejemplo llama al procedimiento EnumCampos, que puede encontrar en el ejemplo de la instrucción SELECT.

Sub LeftRightJoinX()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' selecciona todos los departamentos, incluyendo

' aquellos que no tienen empleados.

Set rst = dbs.OpenRecordset _

("SELECT [NombreDepartamento], " _

& "Nombre & Chr(32) & Apellidos AS Name " _

& "FROM Departments LEFT JOIN Empleados " _

& "ON Departments.[IdDepartamento] = " _

& "Empleados.[IdDepartamento] " _

& "ORDER BY [NombreDepartamento];")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset. Transfiere el objeto Recordset y el

' tamaño de campo deseado.

EnumCampos rst, 20

dbs.Close

End Sub


PARAMETERS (Ejemplo de la declaración, DAO)
PARAMETERS (Ejemplo de la declaración)

Este ejemplo necesita que el usuario proporcione un cargo como criterio para la consulta.

Este ejemplo llama al procedimiento EnumCampos, que puede encontrar en el ejemplo de la instrucción SELECT.

Sub ParametersX()

Dim dbs As Database, qdf As QueryDef

Dim rst As Recordset

Dim strSql As String, strParám As String

Dim strMensaje As String

Dim intComando As Integer

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Define la cláusula parameters.

strParám = "PARAMETERS [Cargo del empleado] TEXT; "

' Define una instrucción SQL con la cláusula

' parameters.

strSql = strParám & "SELECT Apellidos, Nombre, " _

& "IdEmpleado " _

& "FROM Empleados " _

& "WHERE Cargo =[Cargo del empleado];"

' Crea un objeto QueryDef basado en la instrucción

' SQL.

Set qdf = dbs.CreateQueryDef _

("Encontrar empleados", strSql)

Do While True

strMensaje = "Encontrar empleados por " _

& "cargo:" & Chr(13) _

& "  Elija el cargo:" & Chr(13) _

& "   1 - Gerente de ventas " & Chr(13)

& "   2 - Representante de ventas " & Chr(13)

_

& "   3 - Coordinador de ventas interno "

intComando = Val(InputBox(strMensaje))

Select Case intComando

Case 1

qdf("Cargo del empleado") = _

"Gerente de ventas"

Case 2

qdf("Cargo del empleado") = _

"Representante de ventas"

Case 3

qdf("Cargo del empleado") = _

"Coordinador de ventas interno"

Case Else

Exit Do

End Select

' Creat un Recordset de tipo snapshot temporal.

Set rst = qdf.OpenRecordset(dbOpenSnapshot)

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset. Transfiere el objeto Recordset y el

' tamaño de campo deseado.

EnumCampos rst, 12

Loop

' Elimina el QueryDef porque esto es un ejemplo.

dbs.QueryDefs.Delete "Find Empleados"

dbs.Close

End Sub


PROCEDURE (Ejemplo de la cláusula, DAO)
PROCEDURE (Ejemplo de la cláusula)

Este ejemplo nombra a la consulta ListaCategorías.

Este ejemplo llama al procedimiento EnumCampos, que puede encontrar en el ejemplo de la instrucción SELECT.

Sub ProcedureX()

Dim dbs As Database, rst As Recordset

Dim qdf As QueryDef, strSql As String

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

strSql = "PROCEDURE ListaCategorías; " _

& "SELECT DISTINCTROW NombreCategoría, " _

& "IdCategoría FROM Categorías " _

& "ORDER BY NombreCategoría;"

' Crea un QueryDef con nombre basado en la

' instrucción SQL.

Set qdf = dbs.CreateQueryDef("NuevaCons", strSql)

' Crea un Recordset de tipo snapshot temporal.

Set rst = qdf.OpenRecordset(dbOpenSnapshot)

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset. Transfiere el objeto Recordset y el

' tamaño de campo deseado.

EnumCampos rst, 15

' Elimina el QueryDef porque esto es

' un ejemplo.

dbs.QueryDefs.Delete " NuevaCons"

dbs.Close

End Sub


SELECT...INTO (Ejemplo de la instrucción, DAO)
SELECT...INTO (Ejemplo de la instrucción)

Este ejemplo selecciona todos los registros de la tabla Empleados y los copia en una nueva tabla llamada Copia Empleados.

Sub SelectIntoX()

Dim dbs As Database

Dim qdf As QueryDef

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Selecciona todos los registros de la tabla

' Empleados y los copia en una nueva tabla Copia Empleados.

dbs.Execute "SELECT Empleados.* INTO " _

& "[Copia Empleados] FROM Empleados;"

' Elimina la tabla porque esto es un ejemplo.

dbs.Execute "DROP TABLE [Copia Empleados];"

dbs.Close

End Sub


TRANSFORM (Ejemplo de la instrucción, DAO)
TRANSFORM (Ejemplo de la instrucción)

Este ejemplo utiliza la cláusula SQL TRANSFORM para crear una consulta de tabla de referencias cruzadas que muestra el número de pedidos obtenidos por cada empleado para en cada trimestre de 1994. Es necesaria la función SalidaSQLTRANSFORM para ejecutar este procedimiento.

Sub TransformX1()

Dim dbs As Database

Dim strSQL As String

Dim qdfTRANSFORM As QueryDef

strSQL = "PARAMETERS MedAño SHORT; TRANSFORM " _

& "Count(IdPedido) " _

& "SELECT Nombre & "" "" & Apellidos AS " _

& "NomCompleto FROM Empleados INNER JOIN Pedidos " _

& "ON Empleados.IdEmpleado = " _

& "Pedidos.IdEmpleado WHERE DatePart " _

& "(""aaaa"", FechaPedido) = [MedAño] "

   	strSQL = strSQL & "GROUP BY Nombre & " _

& """ "" & Apellidos " _

& "ORDER BY Nombre & "" "" & Apellidos " _

& "PIVOT DatePart(""q"", FechaPedido)"

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

Set qdfTRANSFORM = dbs.CreateQueryDef _

("", strSQL)

SalidaSQLTRANSFORM qdfTRANSFORM, 1994

dbs.Close

End Sub

Este ejemplo utiliza la cláusula SQL TRANSFORM para crear a consulta de tabla de referencias cruzadas ligeramente más compleja para mostrar el importe total en dólares de los pedidos obtenidos por cada empleado para en cada trimestre de 1994. Es necesaria la función SalidaSQLTRANSFORM para ejecutar este procedimiento.

Sub TransformX2()

Dim dbs As Database

Dim strSQL As String

Dim qdfTRANSFORM As QueryDef

strSQL = "PARAMETERS MedAño SHORT; TRANSFORM " _

& "Sum(Subtotal) SELECT Nombre & "" """ _

& "& Apellidos AS FullName " _

& "FROM Empleados INNER JOIN " _

& "(Pedidos INNER JOIN [Subtotales de pedidos] " _

& "ON Pedidos.IdPedido = " _

& "[Subtotales de pedidos].IdPedido) " _

& "ON Empleados.IdEmpleado = " _

& "Pedidos.IdEmpleado WHERE DatePart" _

& "(""yyyy"", FechaPedido) = [MedAño] "

strSQL = strSQL & "GROUP BY Nombre & "" """ _

& "& Apellidos " _

& "ORDER BY Nombre & "" "" & Apellidos " _

& "PIVOT DatePart(""q"",FechaPedido)"

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

Set qdfTRANSFORM = dbs.CreateQueryDef _

("", strSQL)

SalidaSQLTRANSFORM qdfTRANSFORM, 1994

dbs.Close

End Sub

Function SalidaSQLTRANSFORM(qdfTemp As QueryDef, _

intAño As Integer)

Dim rstTRANSFORM As Recordset

Dim fldBucle As Field

Dim booPrimero As Boolean

qdfTemp.PARAMETERS!MedAño = intAño

Set rstTRANSFORM = qdfTemp.OpenRecordset()

Debug.Print qdfTemp.SQL

Debug.Print

Debug.Print , , "Trimestre"

With rstTRANSFORM

booPrimero = True

For Each fldBucle In .Fields

If booPrimero = True Then

Debug.Print fldBucle.Name

Debug.Print , ;

booPrimero = False

Else

Debug.Print , fldBucle.Name;

End If

Next fldBucle

Debug.Print

Do While Not .EOF

booPrimero = True

For Each fldBucle In .Fields

If booPrimero = True Then

Debug.Print fldBucle

Debug.Print , ;

booPrimero = False

Else

Debug.Print , fldBucle;

End If

Next fldBucle

Debug.Print

.MoveNext

Loop

End With

End Function


UPDATE (Ejemplo de la instrucción, DAO)
UPDATE (Ejemplo de la instrucción)

Este ejemplo cambia el valor del campo Enumerar de 5 de todos aquellos registros de empleados que actualmente tienen Enumerar con valor 2.

Sub UpdateX()

Dim dbs As Database

Dim qdf As QueryDef

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Cambia el valor del campo Enumerar de 5 de todos

' aquellos registros de empleados que actualmente

' tienen Enumerar con valor 2.

dbs.Execute "UPDATE Empleados " _

& "SET Enumerar = 5 " _

& "WHERE Enumerar = 2;"

dbs.Close

End Sub


UNION (Ejemplo de la operación, DAO)
UNION (Ejemplo de la operación)

Este ejemplo recupera los nombres y las ciudades de todos los proveedores y clientes de España.

Este ejemplo llama al procedimiento EnumCampos, que puede encontrar en el ejemplo de la instrucción SELECT.

Sub UnionX()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Recupera los nombres y las ciudades de todos los

' proveedores y clientes de España.

Set rst = dbs.OpenRecordset("SELECT Compañía," _

& "Ciudad FROM Proveedores" _

& "WHERE País = 'España' UNION" _

& "SELECT Compañía, Ciudad FROM Clientes" _

& "WHERE País = 'España';")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset Transfiere el objeto Recordset y el

' tamaño de campo deseado.

EnumCampos rst, 12

dbs.Close

End Sub


SQL (Ejemplo de las subconsultas, DAO)
SQL (Ejemplo de las subconsultas)

Este ejemplo enumera el los datos de los contactos de todos los clientes que han solicitado un pedido en el segundo trimestre de 1995.

Este ejemplo llama al procedimiento EnumCampos, que puede encontrar en el ejemplo de la instrucción SELECT.

Sub SubQueryX()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Enumera el nombre y el contacto de todos los

' clientes han solicitado un pedido en el segundo

' trimestre de 1995.

Set rst = dbs.OpenRecordset("SELECT NombreContacto," _

& "Compañía, CargoContacto, Teléfono" _

& "FROM Clientes" _

& "WHERE [ID de cliente]" _

& "IN (SELECT [ID de cliente] FROM Pedidos" _

& "WHERE FechaPedido Between #04/1/95#" _

& "And #07/1/95#);")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset. Transfiere el objeto Recordset y el

' tamaño de campo deseado.

EnumCampos rst, 25

dbs.Close

End Sub


Avg (Ejemplo de la función, DAO)
Avg (Ejemplo de la función)

Este ejemplo utiliza la tabla Pedidos para calcular el promedio de los cargos por envío por pedidos cuyos cargos por envío superen los 100 dólares.

Este ejemplo llama al procedimiento EnumCampos, que puede encontrar en el ejemplo de la instrucción SELECT.

Sub AvgX()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' calcular el promedio de los cargos por envío por

' pedidos cuyos cargos por envío superen los 100 dólares.

Set rst = dbs.OpenRecordset("SELECT Avg(Cargo)" _

& "AS [Promedio cargo]" _

& "FROM Pedidos WHERE Cargo > 100;")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset. Transfiere el objeto Recordset y el

' tamaño de campo deseado.

EnumCampos rst, 25

dbs.Close

End Sub


Count (Ejemplo de la función, DAO)
Count (Ejemplo de la función)

Este ejemplo utiliza la tabla Pedidos para calcular el número de pedidos enviados a España.

Este ejemplo llama al procedimiento EnumCampos, que puede encontrar en el ejemplo de la instrucción SELECT.

Sub CountX()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Calcula el número de pedidos enviados

' a España.

Set rst = dbs.OpenRecordset("SELECT" _

& "Count (País destinatario)" _

& "AS [Pedidos a España] FROM Pedidos" _

& "WHERE País destinatario = 'España';")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset. Transfiere el objeto Recordset y el

' tamaño de campo deseado.

EnumCampos rst, 25

dbs.Close

End Sub


First, Last (Ejemplo de la funciones, DAO)
First, Last (Ejemplo de la funciones)

Este ejemplo utiliza la tabla Empleados para devolver los valores del campo Apellidos del primer y del último registro de la tabla.

Este ejemplo llama al procedimiento EnumCampos, que puede encontrar en el ejemplo de la instrucción SELECT.

Sub FirstLastX1()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Devuelve los valores del campo Apellidos del

' primer y del último registro de la tabla.

Set rst = dbs.OpenRecordset("SELECT " _

& "First(Apellidos) as Primero, " _

& "Last(Apellidos) as Último FROM Empleados;")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset. Transfiere el objeto Recordset y el

' tamaño de campo deseado

EnumCampos rst, 12

dbs.Close

End Sub

El siguiente ejemplo compara el uso las funciones First y Last con el uso las funciones Min y Max para encontrar la fechas de nacimiento mayor y menor de Empleados.

Sub FirstLastX2()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Encuentra las fechas de nacimiento mayor y menor

' de Empleados.

Set rst = dbs.OpenRecordset("SELECT " _

& "First(FechaNacimiento) as PrimeraBD, " _

& "Last(FechaNacimiento) as ÚltimaBD FROM Empleados;")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset. Transfiere el objeto Recordset y el

' tamaño de campo deseado

EnumCampos rst, 12

Debug.Print

' Encuentra las fechas de nacimiento mayor y menor

' Empleados.

Set rst = dbs.OpenRecordset("SELECT " _
& "Min(FechaNacimiento) as MinBD," _

& "Max(FechaNacimiento) as MaxBD FROM Empleados;")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset. Transfiere el objeto Recordset y el

' tamaño de campo deseado

EnumCampos rst, 12

dbs.Close

End Sub


Min, Max (Ejemplo de la funciones, DAO)
Min, Max (Ejemplo de la funciones)

Este ejemplo utiliza la tabla Pedidos para devolver el cargo por envío mayor y menor de los pedidos enviados a España.

Este ejemplo llama al procedimiento EnumCampos, que puede encontrar en el ejemplo de la instrucción SELECT.

Sub MinMaxX()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Devuelve el cargo por envío mayor y menor de los

' pedidos enviados a España.

Set rst = dbs.OpenRecordset("SELECT " _

& "Min(Cargo) AS [Cargo menor], " _

& "Max(Cargo)AS [Cargo mayor] " _

& "FROM Pedidos WHERE País destinatario = 'España';")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset. Transfiere el objeto Recordset y el

' tamaño de campo deseado.

EnumCampos rst, 12

dbs.Close

End Sub


StDev, StDevP (Ejemplo de la funciones, DAO)
StDev, StDevP (Ejemplo de la funciones)

Este ejemplo utiliza la tabla Pedidos para estimar la desviación estándar de los cargos por envío de pedidos enviados a España.

Este ejemplo llama al procedimiento EnumCampos, que puede encontrar en el ejemplo de la instrucción SELECT.

Sub StDevX()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Calcula la desviación estándar de los cargos por

' pedidos de los pedidos enviados a España.

Set rst = dbs.OpenRecordset("SELECT " _

& "StDev(Cargo) " _

& "AS [Desviación de Cargo] FROM Pedidos " _

& "WHERE País destinatario = 'España';")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset. Transfiere el objeto Recordset y el

' tamaño de campo deseado.

EnumCampos rst, 15

Debug.Print

Set rst = dbs.OpenRecordset("SELECT " _

& "StDevP(Cargo) " _

& "AS [Desviación P de Cargo] FROM Pedidos " _

& "WHERE País destinatario = 'España';")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset. Transfiere el objeto Recordset y el

' tamaño de campo deseado.

EnumCampos rst, 15

dbs.Close

End Sub


Sum (Ejemplo de la función, DAO)
Sum (Ejemplo de la función)

Este ejemplo utiliza la tabla Pedidos para calcular las ventas totales de pedidos enviados a España.

Este ejemplo llama al procedimiento EnumCampos, que puede encontrar en el ejemplo de la instrucción SELECT.

Sub SumX()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Calcula las ventas totales de pedidos enviados a

' España.

Set rst = dbs.OpenRecordset("SELECT" _

& "Sum(PrecioUnidad*Cantidad)" _

& "AS [Total España Ventas] FROM Pedidos" _

& "INNER JOIN [Detalles de pedidos] ON" _

& "Pedidos.IdPedido = [Detalles de pedidos].IdPedido" _

& "WHERE (País destinatario = 'España');")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset. Transfiere el objeto Recordset y el

' tamaño de campo deseado.

EnumCampos rst, 15

dbs.Close

End Sub


Var, VarP (Ejemplo de la funciones, DAO)
Var, VarP (Ejemplo de la funciones)

Este ejemplo utiliza la tabla Pedidos para estimar la varianza de los cargos por envío de pedidos enviados a España.

Este ejemplo llama al procedimiento EnumCampos, que puede encontrar en el ejemplo de la instrucción SELECT.

Sub VarX()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Calcula la varianza de los cargos por envío de

' pedidos enviados a España.

Set rst = dbs.OpenRecordset("SELECT " _

& "Var(Cargo) " _

& "AS [Varianza de cargos a España] " _

& "FROM Pedidos WHERE País destinatario = 'España';")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset. Transfiere el objeto Recordset y el

' tamaño de campo deseado.

EnumCampos rst, 20

Debug.Print

Set rst = dbs.OpenRecordset("SELECT " _

& "VarP(Cargo) " _

& "AS [VarianzaP de cargos a España] " _

& "FROM Pedidos WHERE País destinatario = 'España';")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset. Transfiere el objeto Recordset y el

' tamaño de campo deseado.

EnumCampos rst, 20

dbs.Close

End Sub


Like (Ejemplo del operador, DAO)
Like (Ejemplo del operador)

Este ejemplo devuelve una lista de empleados cuyos nombres empiezan con las letras de la A hasta la D.

Este ejemplo llama al procedimiento EnumCampos, que puede encontrar en el ejemplo de la instrucción SELECT.

Sub LikeX()

Dim dbs As Database, rst As Recordset

' Modifique esta línea para incluir la ruta de

' acceso a la base de datos Neptuno en su equipo.

Set dbs = OpenDatabase("Neptuno.mdb")

' Devuelve una lista de empleados cuyos nombres

' empiezan con las letras de la A hasta la D.

Set rst = dbs.OpenRecordset("SELECT Apellidos," _

& "Nombre FROM Empleados" _

& "WHERE Apellidos Like '[A-D]*';")

' Llena el Recordset.

rst.MoveLast

' Llama a EnumCampos para imprimir el contenido del

' Recordset. Transfiere el objeto Recordset y el

' tamaño de campo deseado.

EnumCampos rst, 15

dbs.Close

End Sub


Personalización de los valores del Registro de Windows para objetos de acceso a datos (DAO)

Nota   Si su aplicación no puede trabajar adecuadamente con la funcionalidad predeterminada del motor de base de datos Microsoft Jet, es posible que tenga que cambiar los valores en el Registro de Windows para que se adapten a sus necesidades. El Registro de Windows también se puede utilizar para sintonizar la operación de ISAM instalable y el controlador de ODBC.

Puede modificar los valores en el Registro de Windows de tres maneras diferentes. Primera, simplemente utilizando Regedit.exe para sobrescribir los valores predeterminados que se establecen cuando se registra el motor de base de datos Microsoft Jet. Este método de modificación es el menos flexible, porque todas las aplicaciones que utilizan el motor de base de datos Microsoft Jet tienen estos nuevos valores predeterminados.

El segundo método para modificar los valores del Registro de Windows, es crear un fragmento de Microsoft Jet en el árbol de registro de su aplicación para administrar los valores del motor de base de datos Microsoft Jet. La manera más fácil de conseguir esto es exportar la clave existente de Microsoft Jet y luego importarla al árbol de sus aplicaciones con los comandos Exportar e Importar de Regedit.exe. Puede alterar cualquier valor que quiera especificar en su nuevo árbol de registro. Si ha suministrado algún valor a la subcarpeta Engines, Microsoft Jet carga estos valores cuando se inicia la aplicación. Todos los valores que no se introduzcan en el árbol de registro de su aplicación de cliente se cargan desde los valores en la sombra.

Para que su aplicación cargue el fragmento adecuado de la clave del Registro de Windows, debe especificar la ubicación con la propiedad INIPath de DAO. Su aplicación debe establecer la propiedad INIPath antes de ejecutar cualquier otro código de DAO. El alcance de este valor está limitado a la aplicación y no se puede cambiar sin reiniciar la aplicación.

Nota   Aunque crear un fragmento de Microsoft Jet en el registro de su aplicación es más flexible que sobrescribir las entradas predeterminadas de Microsoft Jet, todavía necesita que mantenga el árbol de registro. Cada vez que se requieran cambios en los valores predeterminados, tendrá que editar el registro. En versiones anteriores de Microsoft Jet estas eran las dos únicas estrategias para modificar el registro, DAO 3.5 proporciona una nueva manera de modificar los valores predeterminados. Los valores del registro se pueden modificar ahora en tiempo de ejecución con el método SetOption. Esta es la forma recomendada para ajustar los valores del registro para la aplicación. Este método es el enfoque más flexible y proporciona al programador el máximo control acerca de cómo cambia el registro. El método SetOption permite al usuario especificar los nuevos valores de cualquiera de los siguientes valores predeterminados.

•	Clave PageTimeout

•	Clave SharedAsyncDelay

•	Clave ExclusiveAsyncDelay

•	Clave LockRetry

•	Clave UserCommitSync

•	Clave ImplicitCommitSync

•	Clave MaxBufferSize

•	Clave MaxLocksPerFile

•	Clave LockDelay

•	RecycleLVs

•	Clave FlushTransactionTimeout

Utilizando el método SetOption, su aplicación obtiene la máxima flexibilidad y control. Este método le permite crear aplicaciones que más fáciles de mantener y ajustadas a un rendimiento máximo.

También puede editar el Registro de Windows para especificar lo siguiente:

•	Los valores utilizados para la interacción con las bases de datos de Microsoft FoxPro, Microsoft Excel, Lotus, Paradox y dBASE. Vea Inicialización del controlador de base de datos Paradox, Inicialización del controlador de base de datos Microsoft FoxPro Inicialización del controlador de Microsoft Excel, Inicialización del controlador de Lotus e Inicialización del controlador de base de datos dBASE.

•	Los valores utilizados por Microsoft ODBC para la interacción con bases de datos de SQL. Vea Inicialización del controlador de bases de datos Microsoft ODBC.

•	Valores que afectan a la manera en la que el motor de base de datos Microsoft Jet lee y guarda datos. Vea Inicialización del controlador del motor de base de datos Microsoft Jet2.5 e Inicialización del controlador del motor de base de datos Microsoft Jet 3.5.

•	Los valores utilizados para controlar la manera en la el motor de base de datos Microsoft Jet interacciona con Internet y Microsoft Exchange. Vea Inicialización del controlador de origen de datos HTML (Internet) e Inicialización del controlador de origen de datos Microsoft Exchange.

•	Los valores utilizados para controlar la manera en la el motor de base de datos Microsoft Jet interacciona con datos importados como texto sin formato. Vea Inicialización del controlador de origen de datos Texto.


Inicialización del controlador de la base de datos dBASE

Cuando instala un controlador de la base de datos dBASE, el programa de instalación escribe un conjunto de valores predeterminados en el Registro de Windows en las subclaves Engines y ISAM Formats. No debe modificar estos valores directamente, debe utilizar el programa de instalación de su aplicación para agregar, eliminar o cambiar estos valores. Las siguientes secciones describen los valores inicialización y de ISAM Formats para el controlador de la base de datos dBASE.

Valores de inicialización de dBASE

La carpeta Jet\3.5\Engines\Xbase contiene los valores de inicialización del controlador Msxbse35.dll, utilizado para el acceso a orígenes de datos externos de dbASE. Los valores habituales para las entradas en esta carpeta se muestran en el siguiente ejemplo.

win32=<path>\MSXBSE35.dll

NetworkAccess=On

PageTimeout=600

INFPath=C:\DBASE\SYSTEM

CollatingSequence=ASCII

DataCodePage=OEM

Deleted=On

Century=Off

Date=MDY

Mark=47

Exact=Off

El motor de base de datos Microsoft Jet utiliza las entradas de la carpeta Xbase de la siguiente manera:

Entrada	Descripción
win32	La ubicación de Msxbse35.dll. La ruta de acceso completa se determina en el momento de la instalación. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
NetworkAccess	Un indicador binario de preferencia de bloqueo de archivo. Si NetworkAccess se establece a 00, las tablas se abren para acceso en modo exclusivo, sin que se tengan en cuenta los valores del argumento exclusivo de los métodos OpenDatabase y OpenRecordse. El valor predeterminado es 01. Los valores son de tipo Binary para Windows 95 y Windows NT 4.0 y de tipo REG_BINARY para Windows NT 3.51.
PageTimeout	El período de tiempo entre que se colocan los datos en una memoria caché interna y cuando se invalidan. El valor se especifica en unidades de 100 milisegundos. El valor predeterminado es 600 unidades o 60 segundos. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
INFPath	La ruta de acceso completa al directorio del archivo .inf. El motor de base de datos Microsoft Jet primero busca un archivo .inf en el directorio que contiene la tabla. Si el archivo .inf no está en el directorio de la base de datos, busca en el INFPath. Si no hay un INFPath, utiliza cualquier archivo de índice (.cdx o .mdx) que encuentre en el directorio de la base de datos. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51. El procedimiento de instalación no escribe esta entrada.
CollatingSequence	La secuencia de ordenación para todas la tablas de dBASE creadas o abiertas utilizando el motor de base de datos Microsoft Jet. Los valores posibles son ASCII e Internacional. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
DataCodePage	Un indicador de cómo se almacenan las páginas de texto. Los posibles valores son: • OEM - Conversiones OemToAnsi y AnsiToOem realizadas. • ANSI - Conversiones OemToAnsi y AnsiToOem no realizadas. De manera predeterminada es OEM. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
Deleted	Un indicador binario que determina cómo el motor de base de datos Microsoft Jet controla los registros que marcados para eliminación. Un valor de 01 se corresponde con el comando SET DELETED ON de dBASE e indica que nunca se debe recuperar o colocar un registro eliminado. Un valor de 00 se corresponde con el comando SET DELETED OFF de dBASE e indica tratar a un registro eliminado como a cualquier otro registro. El valor predeterminado es 00. Los valores son de tipo Binary para Windows 95 y Windows NT 4.0 y de tipo REG_BINARY para Windows NT 3.51.
Century	Un indicador binario para dar formato al componente siglo de fechas en los casos en los que se utilizan funciones de fecha a cadena en expresiones de índice. Un valor de 01 se corresponde con el comando de SET CENTURY ON de dBASE y un valor de 00 se corresponde con el comando SER CENTURY OFF de dBASE. El predeterminado es 00. Los valores son de tipo Binary para Windows 95 y Windows NT 4.0 y de tipo REG_BINARY para Windows NT 3.51.
Date	El estilo de formato de la fecha que se utiliza en los casos en los que se utilizan funciones de fecha a cadena en expresiones de índice. Los posibles valores para esta entrada, que se corresponden con el comando SET DATE de dBASE, son americano, ANSI, británico, francés, DMA, alemán, italiano, japonés, MDA, EE.UU. y AMD. El predeterminado es MDA. Los vales son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
Mark	El valor decimal de los caracteres ASCII que se utiliza para separar las partes de la fecha. El predeterminado depende del valor de Date, tal y como se muestra a continuación: • "/" (Americano, MDA) • "." (ANSI) • "/" (Británico, francés, DMA) • "." (Alemán) • "-" (Italiano) • "/" (Japonés, AMD) • "-" (EE.UU.) Un valor de 0 especifica que el sistema debería utilizar el separador normalmente asociado al formato de fecha seleccionado. El predeterminado es 0. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
Exact	Un indicador binario para comparaciones de cadenas. Un valor de 01 se corresponde con el comando SET EXACT ON de dBASE. Un valor de 00 se corresponde con el comando SET EXACT OFF de dBASE. El predeterminado es 00. Los valores son de tipo Binary para Windows 95 y Windows NT 4.0 y de tipo REG_BINARY para Windows NT 3.51.
ISAM Formats de dBASE

La carpeta Jet\3.5\ISAM Formats\dBASE III contiene las siguientes entradas.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Xbase
ExportFilter	REG_SZ	String	dBASE III (*.dbf)
ImportFilter	REG_SZ	String	dBASE III (*.dbf)
CanLink	REG_BINARY	Binary	01
OneTablePerFile	REG_BINARY	Binary	01
IsamType	REG_DWORD	DWORD	0
IndexDialog	REG_BINARY	Binary	01
IndexFilter	REG_SZ	String	Índice dBASE (*.ndx)
CreateDBOnExport	REG_BINARY	Binary	00
ResultTextImport	REG_SZ	String	Importa datos desde el archivo externo a la base de datos actual. Al cambiar datos en la base de datos actual no se cambian los datos en el archivo externo.
ResultTextLink	REG_SZ	String	Crea una tabla en la base de datos activa que se vincula al archivo externo. Al cambiar datos en la base de datos actual se cambian los datos en el archivo externo.
ResultTextExport	REG_SZ	String	Exporta datos desde la base de datos actual al archivo de dBASE III. Este proceso sobrescribe los datos si se exporta a un archivo existente.
'

La carpeta Jet\3.5\ISAM Formats\dBASE IV contiene las siguientes entradas.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Xbase
ExportFilter	REG_SZ	String	dBASE IV (*.dbf)
ImportFilter	REG_SZ	String	dBASE IV (*.dbf)
CanLink	REG_BINARY	Binary	01
OneTablePerFile	REG_BINARY	Binary	01
IsamType	REG_DWORD	DWORD	0
IndexDialog	REG_BINARY	Binary	01
IndexFilter	REG_SZ	String	Índice dBASE (*.ndx; *.mdx)
CreateDBOnExport	REG_BINARY	Binary	00
ResultTextImport	REG_SZ	String	Importa datos desde el archivo externo a la base de datos actual. Al cambiar datos en la base de datos actual no se cambian los datos en el archivo externo.
ResultTextLink	REG_SZ	String	Crea una tabla en la base de datos activa que se vincula al archivo externo. Al cambiar datos en la base de datos actual se cambian los datos en el archivo externo.
ResultTextExport	REG_SZ	String	Exporta datos desde la base de datos actual al archivo de dBASE IV. Este proceso sobrescribe los datos si se exporta a un archivo existente.
La carpeta Jet\3.5\ISAM Formats\dBASE 5.x contiene las siguientes entradas.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Xbase
ExportFilter	REG_SZ	String	dBASE 5 (*.dbf)
ImportFilter	REG_SZ	String	dBASE 5 (*.dbf)
CanLink	REG_BINARY	String	01
OneTablePerFile	REG_BINARY	String	01
IsamType	REG_DWORD	DWORD	0
IndexDialog	REG_BINARY	Binary	01
IndexFilter	REG_SZ	String	Índice dBASE (*.ndx; *.mdx)
CreateDBOnExport	REG_BINARY	Binary	00
ResultTextImport	REG_SZ	String	Importa datos desde el archivo externo a la base de datos actual. Al cambiar datos en la base de datos actual no se cambian los datos en el archivo externo.
ResultTextLink	REG_SZ	String	Crea una tabla en la base de datos activa que se vincula al archivo externo. Al cambiar datos en la base de datos actual se cambian los datos en el archivo externo.
ResultTextExport	REG_SZ	String	Exporta datos desde la base de datos actual al archivo de dBASE 5. Esto proceso sobrescribe los datos si se exporta a un archivo existente.
Nota   Cuando cambia los valores del Registro de Windows tiene que salir y volver a iniciar el motor de la base de datos para que surtan efecto los nuevos valores.


Inicialización del controlador de Lotus

Cuando instala el controlador de la base de datos Lotus, el programa de instalación escribe un conjunto de valores en el Registro de Windows en las subclaves Engines y ISAM Formats. No debe modificar estos valores directamente, deber utilizar el programa de instalación para agregar, eliminar o cambiar estos valores. Las siguientes secciones describen los valores de inicialización y de los ISAM Formats para el controlador de la base de datos Lotus.

Valores de inicialización de Lotus

La carpeta Jet\3.5\Engines\Lotus contiene valores de inicialización para el controlador Msltus35.dll que se utiliza para el acceso externo a hojas de calculo de Lotus. En el siguiente ejemplo se muestran los valores habituales para las entradas en este tema.

win32=<path>\MSLTUS35.dll

TypeGuessRows=8

ImportMixedTypes=Text

AppendBlankRows=4

FirstRowHasNames=Yes

El motor de la base de datos de Microsoft jet utiliza las entradas de la carpeta de Lotus de la siguiente manera.

Entrada	Descripción
win32	La ubicación de Msltus35.dll. La ruta de acceso completa se determina en el momento de la instalación. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
TypeGuessRows	El número de filas que se comprobarán para el tipo de datos. El tipo de datos se determina en base al tipo de datos encontrado más frecuentemente en la selección. Si hay un empate, el tipo de datos se determina en el orden siguiente: Number, Currency, Date, Text y Long Text. Si los datos que se encuentran no coinciden con el tipo de datos que se ha adivinado para la columna, se devuelve como un valor Null. En una importación si una columna tiene tipos de datos mixtos, se convertirá la columna entera de acuerdo con el valor de ImportMixedTypes. El número predeterminado de filas que se comprueban es 8. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
ImportMixedTypes	Se puede establecer a Tipo mayoritario o Texto. Si se establece a Tipo mayoritario, las columnas de tipos de datos mixtos se encasillarán en el tipo de datos predominante en la importación. Si se establece en Texto, las columnas de tipos de datos mixtos se encasillarán en el Texto en la importación. De manera predeterminada es Texto. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
AppendBlankRows	El número de filas en blanco que se tienen que anexar al final de una hoja de trabajo WK1 antes de que se agreguen los nuevos datos. Por ejemplo, si AppendBlankRows se establece a 4, Microsoft Jet anexará 4 filas en blanco al final de la hoja de trabajo antes de anexar filas que contengan datos. Los valores enteros para este valor van de 0 a 16, el predeterminado es 01 (anexar una fila adicional). Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
FirstRowHasNames	Un valor binario que indica si la primera fila de la tabla contiene nombres de columnas. Un valor de 01 indica que durante la importación se obtienen los nombres de las columnas de la primera fila. Un valor de 00 indica que no hay nombres de columnas en la primera fila, los nombres de las columnas aparecen como F1, F2, F3, etc. El valor predeterminado es 01. Los valores son de tipo binario para Windows 95 y Windows NT 4.0 y de tipo REG_BINARY para Windows NT 3.51.
ISAM Formats de Lotus

La carpeta Jet\3.5\ISAM Formats\Lotus WK1 contiene las siguientes entradas.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Lotus
ExportFilter	REG_SZ	String	Lotus 1-2-3 WK1 (*.wk1)
ImportFilter	REG_SZ	String	Lotus 1-2-3 (*.wk*;*.wj* )
CanLink	REG_BINARY	String	00
OneTablePerFile	REG_BINARY	String	00
IsamType	REG_DWORD	DWORD	1
IndexDialog	REG_BINARY	Binary	00
CreateDBOnExport	REG_BINARY	Binary	01
ResultTextImport	REG_SZ	String	Importa datos desde el archivo externo a la base de datos actual. Al cambiar datos en la base de datos actual no se cambian los datos en el archivo externo.
ResultTextExport	REG_SZ	String	Exporta datos desde la base de datos actual al archivo de Lotus 1-2.3 versión 2. Este proceso sobrescribe los datos si se exporta a un archivo existente.
La carpeta \3.5\ISAM Formats\Lotus WK3 contiene las siguientes entradas.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Lotus
ExportFilter	REG_SZ	String	Lotus 1-2-3 WK3 (*.wk3)
CanLink	REG_BINARY	Binary	00
OneTablePerFile	REG_BINARY	Binary	00
IsamType	REG_DWORD	DWORD	1
IndexDialog	REG_BINARY	Binary	00
CreateDBOnExport	REG_BINARY	Binary	01
ResultTextExport	REG_SZ	String	Exporta datos desde la base de datos actual al archivo de Lotus 1-2-3 versión 3. Este proceso sobrescribe los datos si se exporta a un archivo existente.
La carpeta \3.5\ISAM Formats\Lotus WK4 contiene las siguientes entradas.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Lotus
CanLink	REG_BINARY	Binary	00
OneTablePerFile	REG_BINARY	Binary	00
IsamType	REG_DWORD	DWORD	1
IndexDialog	REG_BINARY	Binary	00
CreateDBOnExport	REG_BINARY	Binary	01
Nota   Cuando cambia los valores del Registro de Windows tiene que salir y volver a iniciar el motor de la base de datos para que surtan efecto los nuevos valores.


Inicialización del controlador de Microsoft Excel

Cuando instala el controlador de Microsoft Excel, el programa de instalación escribe un conjunto de valores en el Registro de Windows en las subclaves Engines y ISAM Formats. No debe modificar estos valores directamente, debe utilizar el programa de instalación para agregar, eliminar o cambiar estos valores. Las siguientes secciones describen los valores de inicialización y de los ISAM Formats para el controlador de la base de datos de Microsoft Excel.

Valores de inicialización de Microsoft Excel

La carpeta Jet\3.5\Engines\Excel incluye los valores de inicialización para el controlador Msexcl35.dll, que se utiliza para el acceso externo a hojas de trabajo de Microsoft Excel. En el siguiente ejemplo se muestran los valores habituales para las entradas en esta carpeta.

win32=<path>\MSEXCL35.dll

TypeGuessRows=8

ImportMixedTypes=Text

AppendBlankRows=1

FirstRowHasNames=Yes

El motor de base de datos Microsoft Jet utiliza las entradas de la carpeta de Excel como sigue.

Entrada	Descripción
win32	La ubicación de Msexc35.dll. La ruta de acceso completa se determina en el momento de la instalación. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
TypeGuessRows	El número de filas que se comprobarán para el tipo de datos. El tipo de datos está determinado por el número máximo de clases de datos encontrado. Si hay un empate, el tipo de datos se determina en el orden siguiente: Number, Currency, Date, Text y Boolean. Si los datos que se encuentran no coinciden con el tipo de datos que se ha adivinado para la columna, se devuelve como un valor Null. En una importación si una columna tiene tipos de datos mixtos, se encasillará la columna entera de acuerdo con el valor de ImportMixedTypes. El número predeterminado de filas que se comprueban es 8. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
ImportMixedTypes	Se puede establecer a MajorityType o Text. Si se establece a MajorityType, las columnas de tipos de datos mixtos se encasillarán en el tipo de datos predominante en la importación. Si se establece en Text, las columnas de tipos de datos mixtos se encasillarán en el Text en la importación. De manera predeterminada es Text. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
AppendBlankRows	El número de filas en blanco que se tienen que anexar al final de una hoja de trabajo versión 3.5 o versión 4.0 antes de que se agreguen los nuevos datos. Por ejemplo, si AppendBlankRows se establece a 4, Microsoft Jet anexará 4 filas en blanco al final de la hoja de trabajo antes de anexar filas que contengan datos. Los valores enteros para este valor van de 0 a 16, el predeterminado es 01 (anexar una fila adicional). Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
FirstRowHasNames	Un valor binario que indica si la primera fila de la tabla contiene nombres de columnas. Un valor de 01 indica que durante la importación se obtienen los nombres de las columnas de la primera fila. Un valor de 00 indica que no hay nombres de columnas en la primera fila, los nombres de las columnas aparecen como F1, F2, F3, etc. El valor predeterminado es 01. Los valores son de tipo Binary para Windows 95 y Windows NT 4.0 y de tipo REG_BINARY para Windows NT 3.51.
ISAM Formats de Microsoft Excel

La carpeta Jet\3.5\ISAM Formats\Excel 3.0 contiene las siguientes entradas.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Excel
ExportFilter	REG_SZ	String	Microsoft Excel 3 (*.xls)
CanLink	REG_BINARY	Binary	01
OneTablePerFile	REG_BINARY	Binary	00
IsamType	REG_DWORD	DWORD	1
IndexDialog	REG_BINARY	Binary	00
CreateDBOnExport	REG_BINARY	Binary	01
ResultTextExport	REG_SZ	String	Exporta datos desde la base de datos actual al archivo de Microsoft Excel 3.0. Este proceso sobrescribe los datos si se exporta a un archivo existente.
La carpeta Jet\3.5\ISAM Formats\Excel 4.0 contiene las siguientes entradas.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Excel
ExportFilter	REG_SZ	String	Microsoft Excel 4 (*.xls)
CanLink	REG_BINARY	Binary	01
OneTablePerFile	REG_BINARY	Binary	00
IsamType	REG_DWORD	DWORD	1
IndexDialog	REG_BINARY	Binary	00
CreateDBOnExport	REG_BINARY	Binary	01
ResultTextExport	REG_SZ	String	Exporta datos desde la base de datos actual al archivo de Microsoft Excel 4.0. Este proceso sobrescribe los datos si se exporta a un archivo existente.
La carpeta Jet\3.5\ISAM Formats\Excel 5.0 contiene las siguientes entradas, que son aplicables a Microsoft Excel versiones 5.0 y 7.0.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Excel
ExportFilter	REG_SZ	String	Microsoft Excel 5-7 (*.xls)
ImportFilter	REG_SZ	String	Microsoft Excel (*.xls)
CanLink	REG_BINARY	Binary	01
OneTablePerFile	REG_BINARY	Binary	00
IsamType	REG_DWORD	DWORD	1
IndexDialog	REG_BINARY	Binary	00
CreateDBOnExport	REG_BINARY	Binary	01
ResultTextImport	REG_SZ	String	Importa datos desde el archivo externo a la base de datos actual. Al cambiar datos en la base de datos actual no se cambian los datos en el archivo externo.
ResultTextLink	REG_SZ	String	Crea una tabla en la base de datos activa que se vincula al archivo externo. Al cambiar datos en la base de datos actual se cambian los datos en el archivo externo.
ResultTextExport	REG_SZ	String	Exporta datos desde la base de datos actual al archivo de Microsoft Excel 5.0. Este proceso sobrescribe los datos si se exporta a un archivo existente.
La carpeta Jet\3.5\ISAM Formats\Excel 8.0 contiene las siguientes entradas, que son aplicables a Microsoft Excel 97.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Excel
ExportFilter	REG_SZ	String	Microsoft Excel 97
CanLink	REG_BINARY	Binary	01
OneTablePerFile	REG_BINARY	Binary	00
IsamType	REG_DWORD	DWORD	1
IndexDialog	REG_BINARY	Binary	00
CreateDBOnExport	REG_BINARY	Binary	01
ResultTextExport	REG_SZ	String	Exporta datos desde la base de datos actual al archivo de Microsoft Excel 97. Este proceso sobrescribe los datos si se exporta a un archivo existente.
Nota   Cuando cambia los valores del Registro de Windows tiene que salir y volver a iniciar el motor de la base de datos para que surtan efecto los nuevos valores.


Inicialización del controlador de base de datos Microsoft FoxPro

Cuando instala el controlador de base de datos Microsoft FoxPro el programa de instalación escribe un conjunto de valores en el Registro de Windows en las subclaves Engines y ISAM Formats. No debe modificar estos valores directamente, debe utilizar el programa de instalación para agregar, eliminar o cambiar estos valores. Las siguientes secciones describen los valores de inicialización y de los ISAM Formats para el controlador de la base de datos Microsoft FoxPro

Valores de inicialización de Microsoft FoxPro

La carpeta Jet\3.5\Engines\Xbase incluye los valores de inicialización para el controlador Msxbse35.dll, que se utilizan para el acceso externo a orígenes de datos FoxPro. En el siguiente ejemplo se muestran los valores habituales para las entradas de en esta tabla.

win32=<path>\MSXBSE35.dll

NetworkAccess=On

PageTimeout=600

INFPath=C:\DBASE\SYSTEM

CollatingSequence=ASCII

DataCodePage=OEM

Deleted=Off

Century=Off

Date=MDY

Mark=47

Exact=Off

El motor de base de datos Microsoft Jet utiliza las entradas de la carpeta Xbase como sigue.

Entrada	Descripción
win32	La ubicación de Msxbse35.dll. La ruta de acceso completa se determina en el momento de la instalación. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
NetworkAccess	Un indicador binario de preferencia de bloqueo de archivo. Si NetworkAccess está establecido a 00, las tablas se abren para acceso exclusivo, sin que importen los valores del argumento exclusivo de los métodos OpenDatabase y OpenRecordse. El valor predeterminado es 01. Los valores son de tipo Binary para Windows 95 y Windows NT 4.0 y de tipo REG_BINARY para Windows NT 3.51.
PageTimeout	El período de tiempo entre que se colocan los datos en una memoria caché interna y cuando se invalidan. El valor se especifica en unidades de 100 milisegundos. El valor predeterminado es 600 unidades o 60 segundos. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
INFPath	La ruta de acceso completa al directorio del archivo .inf. El motor de base de datos Microsoft Jet primero busca un archivo .inf en el directorio que contiene la tabla. Si el archivo .inf no está en el directorio de la base de datos, busca en el INFPath. Si no hay un INFPath, utiliza cualquier archivo de índice (.cdx o .mdx) que encuentre en el directorio de la base de datos. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51. El procedimiento de instalación no escribe esta entrada.
CollatingSequence	La secuencia de ordenación para todas la tablas de Microsoft FoxPro creadas o abiertas utilizando el motor de base de datos Microsoft Jet. Los valores posibles son ASCII e Internacional. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
DataCodePage	Un indicador de cómo se almacenan las páginas de texto. Los posibles valores son: • OEM - Conversiones OemToAnsi y AnsiToOem realizadas. • ANSI - Conversiones OemToAnsi y AnsiToOem no realizadas. De manera predeterminada es OEM. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
Deleted	Un indicador binario que determina cómo el motor de base de datos Microsoft Jet controla los registros marcados para su eliminación. Un valor de 01 se corresponde con el comando SET DELETED ON de Microsoft FoxPro e indica que nunca se debe recuperar o colocar un registro eliminado. Un valor de 00 se corresponde con el comando SET DELETED OFF de Microsoft FoxPro e indica que Microsoft Jet tratará un registro eliminado como a cualquier otro registro. El valor por defecto es 00. Los valores son de tipo Binary para Windows 95 y Windows NT 4.0 y de tipo REG_BINARY para Windows NT 3.51.
Century	Un indicador binario para dar formato al componente siglo de fechas en los casos en los que se utilizan funciones de fecha a cadena en expresiones de índice. Un valor de 01 se corresponde con el comando de SET CENTURY ON de Microsoft FoxPro y un valor de 00 se corresponde con el comando SET CENTURY OFF de Microsoft FoxPro. El predeterminado es 00. Los valores son de tipo Binary para Windows 95 y Windows NT 4.0 y de tipo REG_BINARY para Windows NT 3.51.
Date	El estilo de formato de la fecha que se utiliza en los casos en los que se utilizan funciones de fecha a cadena en expresiones de índice. Los posibles valores para esta entrada, que se corresponden con el comando SET DATE de Microsoft FoxPro, son americano, ANSI, británico, francés, DMA, alemán, italiano, japonés, MDA, EE.UU. y AMD. El predeterminado es MDA. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
Mark	El valor decimal de los caracteres ASCII que se utiliza para separar las partes de la fecha. El predeterminado depende del valor de Date, tal y como se muestra a continuación: • "/" (Americano, MDA) • "." (ANSI) • "/" (Británico, francés, DMA) • "." (Alemán) • "-" (Italiano) • "/" (Japonés, AMD) • "-" (EE.UU.) Un valor de 0 especifica que el sistema debería utilizar el separador normalmente asociado al formato de fecha seleccionado. El predeterminado es 0. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
Exact	Un indicador binario para comparaciones de cadenas. Un valor de 01 se corresponde con el comando SET EXACT ON de Microsoft FoxPro. Un valor de 00 se corresponde con el comando SET EXACT OFF de Microsoft FoxPro. El predeterminado es 00. Los valores son de tipo Binary para Windows 95 y Windows NT 4.0 y de tipo REG_BINARY para Windows NT 3.51.
ISAM Formatos de FoxPro

La carpeta Jet\3.5\ISAM Formats\FoxPro 2.0 contiene las siguientes entradas.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Xbase
ExportFilter	REG_SZ	String	Microsoft FoxPro 2.0 (*.dbf)
ImportFilter	REG_SZ	String	Microsoft FoxPro (*.dbf)
CanLink	REG_BINARY	Binary	01
OneTablePerFile	REG_BINARY	Binary	01
IsamType	REG_DWORD	DWORD	0
IndexDialog	REG_BINARY	Binary	01
IndexFilter	REG_SZ	String	Índice FoxPro (*.idx; *.cdx)
CreateDBOnExport	REG_BINARY	Binary	00
ResultTextImport	REG_SZ	String	Importa datos desde el archivo externo a la base de datos actual. Al cambiar datos en la base de datos actual no se cambian los datos en el archivo externo.
ResultTextLink	REG_SZ	String	Crea una tabla en la base de datos activa que se vincula al archivo externo. Al cambiar datos en la base de datos actual se cambian los datos en el archivo externo.
ResultTextExport	REG_SZ	String	Exporta datos desde la base de datos actual al archivo de Microsoft FoxPro 2.0. Este proceso sobrescribe los datos si se exporta a un archivo existente.
La carpeta Jet\3.5\ISAM Formats\FoxPro 2.5 contiene las siguientes entradas.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Xbase
ExportFilter	REG_SZ	String	Microsoft FoxPro 2.5 (*.dbf)
CanLink	REG_BINARY	Binary	01
OneTablePerFile	REG_BINARY	Binary	01
IsamType	REG_DWORD	DWORD	0
IndexDialog	REG_BINARY	Binary	01
IndexFilter	REG_SZ	String	Índice FoxPro (*.idx; *.cdx)
CreateDBOnExport	REG_BINARY	Binary	00
ResultTextExport	REG_SZ	String	Exporta datos desde la base de datos actual al archivo de Microsoft FoxPro 2.5. Este proceso sobrescribe los datos si se exporta a un archivo existente.
La carpeta Jet\3.5\ISAM Formats\FoxPro 2.6 contiene las siguientes entradas.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Xbase
ExportFilter	REG_SZ	String	Microsoft FoxPro 2.6 (*.dbf)
CanLink	REG_BINARY	Binary	01
OneTablePerFile	REG_BINARY	Binary	01
IsamType	REG_DWORD	DWORD	0
IndexDialog	REG_BINARY	Binary	01
IndexFilter	REG_SZ	String	Índice FoxPro (*.idx; *.cdx)
CreateDBOnExport	REG_BINARY	Binary	00
ResultTextExport	REG_SZ	String	Exporta datos desde la base de datos actual al archivo de Microsoft FoxPro 2.6. Este proceso sobrescribe los datos si se exporta a un archivo existente.
La carpeta Jet\3.5\ISAM Formats\FoxPro 3.0 contiene las siguientes entradas.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Xbase
ExportFilter	REG_SZ	String	Microsoft FoxPro 3.0 (*.dbf)
CanLink	REG_BINARY	Binary	00
OneTablePerFile	REG_BINARY	Binary	01
IsamType	REG_DWORD	DWORD	0
IndexDialog	REG_BINARY	Binary	01
CreateDBOnExport	REG_BINARY	Binary	00
ResultTextExport	REG_SZ	String	Exporta datos desde la base de datos actual al archivo de Microsoft FoxPro 3.0. Este proceso sobrescribe los datos si se exporta a un archivo existente.
La carpeta Jet\3.5\ISAM Formats\FoxPro DBC contiene las siguientes entradas.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Xbase
ExportFilter	REG_SZ	String	Microsoft FoxPro 3.0 (*.dbc)
CanLink	REG_BINARY	Binary	00
OneTablePerFile	REG_BINARY	Binary	00
IsamType	REG_DWORD	DWORD	0
IndexDialog	REG_BINARY	Binary	00
CreateDBOnExport	REG_BINARY	Binary	00
ResultTextImport	REG_SZ	String	Importa datos desde el archivo externo a la base de datos actual. Al cambiar datos en la base de datos actual no se cambian los datos en el archivo externo.
Nota   Cuando cambia los valores del Registro de Windows tiene que salir y volver a iniciar el motor de la base de datos para que surtan efecto los nuevos valores.


Inicialización del controlador del motor de base de datos Microsoft Jet 2.5

Cuando instala el controlador del motor de base de datos Microsoft Jet 2.5, el programa de instalación escribe un conjunto de valores en el Registro de Windows en las subclaves Engines y ISAM Formats. No debe modificar estos valores directamente, debe utilizar el editor del Registro para agregar, eliminar o cambiar estos valores. Las siguientes secciones describen los valores de inicialización y de los formatos ISAM para el controlador del motor de base de datos Microsoft Jet.

Note   El procedimiento de instalación sólo escribe un valor (win32) en la carpeta Jet\3.5\Engines\Jet 2.x; este es el único valor válido en esta carpeta.

Valores de inicialización del motor de Microsoft Jet

La carpeta Jet\3.5\Engines\Jet 2.x contiene las siguientes entradas.

NombreValor	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Predeterminado
PageTimeOut	REG_DWORD	Integer	5
LockedPageTimeOut	REG_DWORD	Integer	5
LockRetry	REG_DWORD	Integer	20
CommitLockRetry	REG_DWORD	Integer	20
CursorTimeout	REG_DWORD	Integer	5
IdleFrequency	REG_DWORD	Integer	10
ForceOSFlush	REG_DWORD	Integer	0
MaxBufferSize	REG_DWORD	Integer	512
ReadAheadPages	REG_DWORD	Integer	8
El motor de base de datos Microsoft Jet utiliza la siguiente entrada para determinar la ruta de acceso al controlador del motor de base de datos.

Entrada	Descripción
win32	Ubicación del controlador del motor de base de datos (.dll). La ruta de acceso se determina en el momento de la instalación. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
Los valores adicionales para el motor de base de datos Microsoft Jet están contenidos en la carpeta Jet\3.5\Engines\Jet 2.x.

El siguiente ejemplo muestra los valores habituales de inicialización de las entradas en la carpeta Jet\3.5\Engines\Jet 2.x\ISAM.

PageTimeout=5

LockedPageTimeout=5

CursorTimeout=5

LockRetry=20

CommitLockRetry=20

MaxBufferSize=512

ReadAheadPages=16

IdleFrequency=10

ForceOsFlush = 0

Las siguientes entradas se utilizan para configurar el motor de base de datos Microsoft Jet.

Entrada	Descripción
PageTimeout	El período de tiempo entre que se colocan en la memoria caché interna los datos que no están bloqueados para lectura y cuando se invalidan, expresado en unidades de 100 milisegundos. El predeterminado es 5 unidades (o 0,5 segundos). Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
LockedPageTimeout	El período de tiempo entre que se colocan en la memoria caché interna los datos que están bloqueados para lectura y cuando se invalidan, expresado en unidades de 100 milisegundos. El predeterminado es 5 unidades (o 0,5 segundos). Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
CursorTimeout	El período de tiempo que una referencia de una página permanecerá en esa página, expresado en unidades de 100 milisegundos. El predeterminado es 5 unidades (o 0,5 segundos). Este valor es aplicable sólo a las bases de datos creadas con la versión 1.x del motor de base de datos Microsoft Jet. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
	El número de veces que se repetirán los intentos para tener acceso a una página bloqueada antes de que devuelva un mensaje de conflicto de bloqueo. El predeterminado es 20 veces. LockRetry está relacionado con CommitLockRetry. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
CommitLockRetry	El número de veces que el motor de base de datos Microsoft Jet intenta bloquear los datos para aceptar cambios en esos datos. Si el motor de base de datos Microsoft Jet no puede obtener un bloqueo para aceptar cambios, los cambios en los datos no se realizarán con éxito.  El número de veces que el motor de base de datos Microsoft Jet intenta obtener un bloqueo para aceptar cambios está relacionado directamente con el valor LockRetry. Por cada intento de obtener un bloqueo para aceptar cambios, el motor de base de datos Microsoft Jet hará tantos intentos para obtener un bloqueo como se especifique en el valor LockRetry. Por ejemplo, si CommitLockRetry se establece a 20 y LockRetry se establece a 20, el motor de base de datos Microsoft Jet intentará obtener un bloqueo para aceptar cambios un máximo de 20 veces, para cada uno de esos intentos, el motor de base de datos Microsoft Jet intentará obtener un bloqueo un máximo de 20 veces, con un total de 400 intentos. El valor predeterminado de CommitLockRetry es 20. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
MaxBufferSize	El tamaño de la memoria caché interna del motor de la base de datos, medido en kilobytes (KB). MaxBufferSize debe ser un valor de número entero entre 9 y 4096, inclusive. El predeterminado es 512. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
ReadAheadPages	El número de páginas que se leerán cuando se llevan a cabo búsquedas secuenciales. El predeterminado es 16. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
ForceOSFlush	Cualquier valor distinto de 0 significa una aceptación de cambios o una escritura que obligará volcar la memoria caché OS al disco. Un valor de 0 (el valor predeterminado) significa que no obligará volcado. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
IdleFrequency	El período de tiempo, en unidades de 100 milisegundos, que Microsoft Jet esperará antes de liberar un bloqueo de lectura. El predeterminado es 10 unidades o un segundo. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
ISAM Formats del motor Microsoft Jet

La carpeta Jet\3.5\ISAM Formats\Jet 2.x contiene las siguientes entradas.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Jet 2.x
OneTablePerFile	REG_BINARY	Binary	00
IndexDialog	REG_BINARY	Binary	00
CreateDBOnExport	REG_BINARY	Binary	00
IsamType	REG_DWORD	DWORD	0
Nota   Cuando cambia los valores del Registro de Windows tiene que salir y volver a iniciar el motor de la base de datos para que surtan efecto los nuevos valores.


Inicialización del controlador del motor de base de datos Microsoft Jet 3.5

Las siguientes secciones describen los valores de inicialización para el motor de base de datos Microsoft Jet 3.5.

Cuando se registran MSJET35.DLL y MSRD2X35.DLL se escriben dos entradas en la carpeta \HKEY_LOCAL_MACHINES\Software\Microsoft\Jet\3.5\Engines. Esto se hace de forma automática cuando se instala Microsoft Access 97. Estas dos entradas son las siguientes.

SystemDB = <path>\System.mdb

CompactBYPkey = 1

El motor de base de datos Microsoft Jet utiliza las siguientes entradas.

Entradas	Descripción
SystemDB	Especifica la ruta de acceso completa y el nombre de archivo del archivo de información sobre el grupo de trabajo. De manera predeterminada es la ruta de acceso apropiada seguida del nombre de archivo System.mdb. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
CompactByPKey	Especifica que cuando se compacta tablas, éstas se copian en el orden de la clave principal, si existe una clave principal. Si no existe una clave principal en la tabla, las tablas se copian en el orden de la tabla base. Un valor 0 indica que las tablas se deben compactar en el orden de la tabla base; un valor distinto de cero indica que las tablas se deben compactar en el orden de la clave principal. El valor predeterminado es distinto a cero. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51. Nota   Este valor sólo se aplica a la compactación de bases de datos creadas con el motor de base de datos Microsoft Jet versión 3.0 o posterior, cuando compacta bases de datos que se crearon con el motor de base de datos Microsoft Jet versión 2.x, los datos siempre se copian en el orden de la tabla base.
Valores de inicialización del motor Microsoft Jet

Al registrar Microsoft Jet también se crean las siguientes entradas en la carpeta \HKEY_LOCAL_MACHINES\Software\Microsoft\Jet\3.5\Engines\Jet 3.5.

El siguiente ejemplo muestra los valores habituales de las entradas en la carpeta Jet\3.5\Engines\Jet 3.5.

FlushTransactionTimeout=500

LockDelay=100

LockRetry=20

MaxBufferSize= 0

MaxLocksPerFile= 9500

PageTimeout=5000

Threads=3

UserCommitSync=Yes

ImplicitCommitSync=No

ExclusiveAsyncDelay=2000

SharedAsyncDelay=0

El motor de base de datos Microsoft Jet utiliza las siguientes entradas.

Entrada	Descripción
PageTimeout	El período de tiempo entre el momento en que se colocan los datos que no bloqueados para lectura en una memoria caché interna y cuando se invalidan, expresado en milisegundos. El predeterminado es 5000 milisegundos o 5 segundos. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
FlushTransactionTimeout	Esta entrada deshabilita las entradas de registro ExclusiveAsyncDelay y SharedAsyncDelay. Para habilitar estas entradas se debe escribir un valor cero. FlushTransactionTimeout cambia el método del motor de base de datos Microsoft Jet para hacer escrituras asíncronas en el archivo de la base de datos. Anteriormente, el motor de base de datos Microsoft Jet utilizaría ExclusiveAsyncDelay o SharedAsyncDelay para determinar cuánto tendría que esperar para antes de obligar escrituras asíncronas. FlushTransactionTimeout cambia ese comportamiento teniendo ahora un valor que iniciará escrituras asíncronas sólo después de que el período de tiempo especificado se haya agotado Y no se hayan agregado páginas a la memoria caché. La única excepción es si la memoria caché sobrepasa el MaxBufferSize, en cuyo caso iniciará escrituras asíncronas sin que importe si se agotó el tiempo. Así, el motor de base de datos Microsoft Jet 3.5 esperará 500 segundos sin actividad o hasta que se sobrepasó la memoria caché, antes de iniciar escrituras asíncronas. .
LockDelay	Este valor funciona en conjunción con el valor LockRetry de forma que hace que LockRetry espere 100 milisegundos antes de emitir otra petición de bloqueo. El valor LockDelay se incluyó para evitar el "desbordamiento" que tendría lugar en algunos sistemas operativos de red.
MaxLocksPerFile	Este valor evita que ciertas transacciones excedan el valor especificado en Microsoft Jet. Si los bloqueos en una transacción intentan sobrepasar este valor, la transacción se divide en dos o más partes y se realiza parcialmente. Este valor se incluyó para evitar los bloqueos de Netware 3.1 Server cuando se sobrepasaba el límite de bloqueo de Netware y para mejorar el rendimiento de Netware y NT.
LockRetry	El número de veces que se repiten los intentos para tener acceso a una página bloqueada antes de devolver un mensaje de conflicto de bloqueo. El número predeterminado es 20. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
RecycleLVs	Cuando se habilita este valor hará que Microsoft Jet recicle páginas (tipos de datos Memo, Binary Long Objeto OLE y Binary) de valores largos (LV). Microsoft Jet 3.0 no recicla estos tipos de páginas hasta que el último usuario cierra la base de datos. Si se habilita el valor RecycleLVs, Microsoft Jet 3.5 empezará a reciclar la mayoría de las páginas LV cuando la base de datos se expande (es decir, cuando se agregan grupos de usuarios). Nota   Al habilitar esta función, los usuarios notarán una disminución del rendimiento cuando manipulen  tipos de datos de valor largo. Microsoft Access 97 habilita y deshabilita esta función de manera automática cuando se manipulan formularios, módulos e informes, por lo que elimina la necesidad de encenderla cuando se modifican estos objetos. El valor predeterminado es 0. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
MaxBufferSize	El tamaño de la memoria caché interna del motor de la base de datos medido en kilobytes (KB). MaxBufferSize debe ser un valor entero mayor o igual que 512. El valor predeterminado está basado en la siguiente fórmula: ((TotalRAM in MB - 12 MB) / 4) + 512 KB Por ejemplo, en un sistema con 32 MB de RAM, el tamaño predeterminado del búfer es ((32 MB - 12 MB) / 4) + 512 KB o 5632 KB. Para establecer el valor al predeterminado, establezca la clave de registro a MaxBufferSize= Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
Threads	El número de subprocesos de fondo disponibles para el motor de base de datos Microsoft Jet. El número predeterminado es 3. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
UserCommitSync	Especifica si el sistema debería esperar a un compromiso para terminar. Un valor Sí instruye al sistema a esperar; un valor No instruye al sistema a realizar el compromiso asincronizadamente. El predeterminado es Sí. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
ImplicitCommitSync	Especifica si el sistema debería esperar a un compromiso para terminar. Un valor No instruye al sistema a proceder sin esperar al compromiso para terminar; un valor Sí instruye al sistema a esperar al compromiso para terminar. El predeterminado es No. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
ExclusiveAsyncDelay	Especifica la cantidad de tiempo, en milisegundos, para diferir un modo deshacer asíncrono de una base de datos exclusiva. El valor predeterminado es 2000 o 2 segundos. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
SharedAsyncDelay	Especifica la cantidad de tiempo, en milisegundos, para diferir un modo deshacer asíncrono de una base de datos compartida. El valor predeterminado es 0. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
ISAM Formats del motor Microsoft Jet

La carpeta Jet\3.5\ISAM Formats contiene las siguientes entradas.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Jet 3.5
ExportFilter	REG_SZ	String	Microsoft Access (*.mdb)
ImportFilter	REG_SZ	String	Microsoft Access (*.mdb)
CanLink	REG_BINARY	Binary	00
OneTablePerFile	REG_BINARY	Binary	00
IndexDialog	REG_BINARY	Binary	00
CreateDBOnExport	REG_BINARY	Binary	00
ResultTextImport	REG_SZ	String	Importa datos desde el archivo externo a la base de datos actual. Al cambiar datos en la base de datos actual no se cambian los datos en el archivo externo.
ResultTextLink	REG_SZ	String	Crea una tabla en la base de datos activa que se vincula al archivo externo. Al cambiar datos en la base de datos actual se cambian los datos en el archivo externo.
ResultTextExport	REG_SZ	String	Exporta datos desde la base de datos actual al archivo de base de datos Microsoft Access. Este proceso sobrescribe los datos si se exporta a un archivo existente.
Nota   Cuando cambia los valores del Registro de Windows tiene que salir y volver a iniciar el motor de la base de datos para que surtan efecto los nuevos valores.


Configuración del motor de base de datos Microsoft Jet para acceso a ODBC

Las siguientes secciones describen la configuración de los valores del Registro de Windows para la conexión del motor de base de datos Microsoft Jet con una base de datos ODBC.

Valores de inicialización para la base de datos Microsoft Jet conectadas con ODBC

La carpeta /HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\3.5\Engines\ODBC contiene los valores de inicialización para el motor de base de datos Microsoft Jet.

Nota   En el siguiente ejemplo se muestran los valores habituales para las entradas en la carpeta Jet\3.5\Engines\ODBC.

LoginTimeout=20

QueryTimeout=60

ConnectionTimeout=600

AsyncRetryInterval=500

AttachCaseSensitive=0

AttachableObjects='TABLE','VIEW','SYSTEM TABLE','ALIAS','SYNONYM'

SnapshotOnly=0

TraceSQLMode=0

TraceODBCAPI=0

DisableAsync=1

JetTryAuth=1

PreparedInsert=0

PreparedUpdate=0

FastRequery=0

El motor de base de datos Microsoft Jet utiliza las entradas de ODBC como sigue.

Entrada	Descripción
LoginTimeout	El número de segundos que puede continuar un intento de Inicio de sesión antes de que se agote el tiempo de espera. De manera predeterminada es 20 (los valores son de tipo REG_DWORD).
QueryTimeout	El número de segundos que puede ejecutar una consulta (tiempo total de procesamiento) antes de que agote el tiempo de espera. Si DisableAsync=0 (el predeterminado), entonces el QueryTimeout es el número de segundos que tiene que esperar una respuesta del servidor entre sondeos sobre la terminación de la consulta. El valor por defecto es 60 (los valores son de tipo REG_DWORD).
ConnectionTimeout	El número se segundos que una conexión en la memoria caché puede permanecer improductiva antes de que se agote el tiempo de espera. El predeterminado es 600 (los valores son de tipo REG_DWORD).
AsyncRetryInterval	El número de milisegundos entre sondeos para determinar si el servidor ha realizado el procesamiento de una consulta. Esta entrada se utiliza sólo para procesamientos asíncronos. El predeterminado es 500 (los valores son de tipo REG_DWORD).
AttachCaseSensitive	Indica si los nombres de las tablas deben coincidir exactamente cuando se las están vinculando. Los valores son 0 (vincular la primera tabla que coincida el nombre especificado, sin tener en cuenta mayúsculas y minúsculas) y 1 (vincular la tabla sólo si el nombre coincide exactamente). El valor predeterminado es 0 (los valores son de tipo REG_DWORD).
AttachableObjects	Una lista de tipos de objetos de servidor a los que se permite vinculación. Los predeterminados son: 'TABLA', 'VER', 'TABLA DE SISTEMA', 'ALIAS' y 'SINÓNIMO' (los valores son de tipo REG_SZ).
SnapshotOnly	Indica si se fuerza a los objetos Recordset a ser de tipo Snapshot. Los valores son 0 (permitir Dynasets) y 1 (forzar Snapshots sólo). El predeterminado es 0 (los valores son de tipo REG_DWORD).
TraceSQLMode	Indica si el motor de base de datos Microsoft Jet seguirá paso a paso las instrucciones de SQL enviadas a un origen de datos ODBC en SQLOUT.txt. Los valores son 0 (no) y 1 (sí). El predeterminado es 0 (los valores son de tipo REG_DWORD). Esta entrada se puede intercambiar con SQLTraceMode.
TraceODBCAPI	Indica si se sigue paso a paso las llamadas a la API de ODBC en ODBCAPI.txt. Los valores son 0 (no) y 1 (sí). El predeterminado es 0 (los valores son de tipo REG_DWORD).
DisableAsync	Indica si se fuerza la ejecución sincronizada de consultas. Los valores son 0 (utilizar la ejecución asincrona de consultas si es posible) y 1 (obligar la ejecución de consultas sincronizadamente). El predeterminado es 1 (los valores son de tipo REG_DWORD).
JetTryAuth	Indica si se intenta utilizar el nombre de usuario y contraseña de Microsoft Access para conectarse al servidor antes de pedir datos. Los valores son 0 (no) y 1 (sí). El predeterminado es 1 (los valores son de tipo REG_DWORD).
PreparedInsert	Indica si se utiliza una instrucción INSERT preparada que inserta datos en todas las columnas. Los valores son 0 (utilizar una instrucción INSERT personalizada que inserte sólo valores no Null) y 1 (utilizar una instrucción INSERT preparada). El predeterminado es 0 (los valores son de tipo REG_DWORD). Al utilizar instrucciones INSERT preparadas puede causar que Nulls sobrescriban los valores predeterminados del servidor y que los disparadores ejecuten en columnas que no estaban explícitamente insertadas.
PreparedUpdate	Indica si utilizar una instrucción UPDATE preparada que actualice los datos en todas las columnas. Los valores son 0 (utilizar una instrucción UPDATE personalizada que establece sólo las columnas que han cambiado) y 1 (utilizar una instrucción UPDATE preparada). El predeterminado es 0. (los valores son de tipo REG_DWORD). Al utilizar instrucciones UPDATE preparadas puede causar que los disparadores ejecuten en columnas que no han cambiado.
FastRequery	Indica si se utiliza una instrucción SELECT preparada para consultas con parámetros. Los valores son 0 (no) y 1 (sí). El predeterminado es 0 (los valores son de tipo REG_DWORD).
Nota   Cuando cambia los valores del Registro de Windows tiene que salir y volver a iniciar el motor de la base de datos para que surtan efecto los nuevos valores.


Inicialización del controlador de base de datos Paradox

Cuando instala el controlador de base de datos Paradox, el programa de instalación escribe un conjunto de valores en el Registro de Windows en las subclaves Engines y ISAM Formats. No debe modificar estos valores directamente (a no ser que sea necesario), debe utilizar el programa de instalación de su aplicación para agregar, eliminar o cambiar estos valores. Las siguientes secciones describen los valores de inicialización y de los ISAM Formats para el controlador de la base de datos Paradox.

Valores de inicialización de Paradox

La carpeta Jet\3.5\Engines\Paradox incluye los valores de inicialización para el controlador Mspdox35.dll, que se utiliza para el acceso a datos externos de Paradox. El siguiente ejemplo muestra los valores habituales de las entradas de esta carpeta.

win32=<path>\MSPDOX35.dll

PageTimeout=600

CollatingSequence=ASCII

DataCodePage=OEM

ParadoxUserName=Kimberly

ParadoxNetPath=P:\PDOXDB

ParadoxNetStyle=4.X

El motor de base de datos Microsoft Jet utiliza las entradas de la carpeta de Paradox como sigue.

Entrada	Descripción
win32	La ubicación de Mspdox35.dll. la ruta de acceso completa se determina en el momento de la instalación. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
PageTimeout	El período de tiempo entre que se colocan los datos en una memoria caché interna y cuando se invalidan. El valor se especifica en unidades de 100 milisegundos. El valor predeterminado es 600 unidades o 60 segundos. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
CollatingSequence	La secuencia de ordenación para todas la tablas de Paradox creadas o abiertas utilizando el motor de base de datos Microsoft Jet. Los valores posibles son ASCII e Internacional, noruego-danés y sueco-finlandés. La entrada CollatingSequence debe coincidir con la secuencia de ordenación que se utilizó cuando se creó la tabla de Paradox. El predeterminado es ASCII. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
DataCodePage	Un indicador de la manera en que se almacenan las páginas de texto. Los posibles valores son: • OEM - Conversiones OemToAnsi y AnsiToOem realizadas. • ANSI - Conversiones OemToAnsi y AnsiToOem no realizadas. De manera predeterminada es OEM. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
ParadoxUserName	El nombre que mostrará Paradox si el ISAM de Paradox bloquea una tabla y un usuario interactivo que tiene acceso a datos desde Paradox (y no ISAM) intenta establecer un bloqueo incompatible. Este entrada no se agrega si no el equipo no está en una red. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51. Nota   Si indica un ParadoxUserName, también debe especificar una ParadoxNetPath y un ParadoxNetStyle o recibirá un error cuando intente tener acceso a datos externos a Paradox. Asimismo, si tiene acceso a la base de datos Paradox en modo multiusuario en la red, tendrá que agregar o modificar manualmente esta entrada de registro.
ParadoxNetPath	La ruta de acceso completa al directorio que contiene el archivo PARADOX.NET (para Paradox 3.x) o el archivo PDOXUSRS.NET (para Paradox 4.x). Esta entrada no se agrega si el equipo no está en una red. Normalmente sólo necesita cambiar el valor inicial (agregado por el programa de instalación), que es donde hay más probabilidades de que esté el archivo. La ParadoxNetPath completa (incluyendo la letra) debe ser coherente para todos los usuarios que estén compartiendo una base de datos en particular (directorio). Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51. Nota   Si indica un ParadoxUserName, también debe especificar una ParadoxNetPath y un ParadoxNetStyle o recibirá un error cuando intente tener acceso a datos externos a Paradox. Asimismo, si tiene acceso a la base de datos Paradox en modo multiusuario en la red, tendrá que agregar o modificar manualmente esta entrada de registro.
ParadoxNetStyle	El estilo de acceso a la red que se utiliza cuando se tiene acceso a datos externos a Paradox. Los posibles valores son: • 3.x • 4.x Nota   Los usuarios de Paradox 3.x no pueden establecerlo a 4.x o el controlador utilizará el método de bloqueo equivocado. Los usuarios de Paradox 5.0 deben utilizar el valor 4.x ParadoxNetStyle para asegurase el comportamiento de bloqueo correcto. Este entrada no se agrega si el equipo no está en una red. Este entrada debería corresponder a la versión de Paradox que los usuarios en el grupo estén utilizando. Debe ser coherente para todos los usuarios que estén compartiendo una base de datos en particular (directorio). El predeterminado es 4.x. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51. Nota   Si indica un ParadoxUserName, también debe especificar una ParadoxNetPath y un ParadoxNetStyle o recibirá un error cuando intente tener acceso a datos externos a Paradox.
ISAM Formats de Paradox

La carpeta Jet\3.5\ISAM Formats\Paradox 3.x contiene las siguientes entradas.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Paradox
ExportFilter	REG_SZ	String	Paradox 3 (*.db)
ImportFilter	REG_SZ	String	Paradox (*.db)
CanLink	REG_BINARY	Binary	01
OneTablePerFile	REG_BINARY	Binary	01
IsamType	REG_DWORD	DWORD	0
IndexDialog	REG_BINARY	Binary	00
CreateDBOnExport	REG_BINARY	Binary	00
ResultTextImport	REG_SZ	String	Importa datos desde el archivo externo a la base de datos actual. Al cambiar datos en la base de datos actual no se cambian los datos en el archivo externo.
ResultTextLink	REG_SZ	String	Crea una tabla en la base de datos activa que se vincula al archivo externo. Al cambiar datos en la base de datos actual se cambian los datos en el archivo externo.
ResultTextExport	REG_SZ	String	Exporta datos desde la base de datos actual al archivo de Paradox 3. Este proceso sobrescribe los datos si se exporta a un archivo existente.
La carpeta Jet\3.5\ISAM Formats\Paradox 4.x contiene las siguientes entradas.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Paradox
ExportFilter	REG_SZ	String	Paradox 4 (*.db)
CanLink	REG_BINARY	Binary	01
OneTablePerFile	REG_BINARY	Binary	01
IsamType	REG_DWORD	DWORD	0
IndexDialog	REG_BINARY	Binary	00
CreateDBOnExport	REG_BINARY	Binary	00
ResultTextExport	REG_SZ	String	Exporta datos desde la base de datos actual al archivo de Paradox 4. Este proceso sobrescribe los datos si se exporta a un archivo existente.
La carpeta Jet\3.5\ISAM Formats\Paradox 5.x contiene las siguientes entradas.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Paradox
ExportFilter	REG_SZ	String	Paradox 5 (*.db)
CanLink	REG_BINARY	Binary	01
OneTablePerFile	REG_BINARY	Binary	01
IsamType	REG_DWORD	DWORD	0
IndexDialog	REG_BINARY	Binary	00
CreateDBOnExport	REG_BINARY	Binary	00
ResultTextExport	REG_SZ	String	Exporta datos desde la base de datos actual al archivo de Paradox 5. Este proceso sobrescribe los datos si se exporta a un archivo existente.
Nota   Cuando cambia los valores del Registro de Windows tiene que salir y volver a iniciar el motor de la base de datos para que surtan efecto los nuevos valores.


Inicialización del controlador de origen de datos Texto

Cuando instala el controlador de base de datos de origen de datos Texto el programa de instalación escribe un conjunto de valores en el Registro de Windows en las subclaves Engines y ISAM Formats. No debe modificar estos valores directamente, debe utilizar el programa de instalación de su aplicación para agregar, eliminar o cambiar estos valores. Las siguientes secciones describen los valores de inicialización y de los ISAM Formats para el controlador de la base de datos de origen de datos Texto.

Valores de inicialización de origen de datos Texto

La carpeta Jet\3.5\Engines\Text incluye los valores de inicialización para el controlador Mstext35.dll, que se utiliza para el acceso externo a archivos de datos tipo texto. En el siguiente ejemplo se muestran los valores habituales para las entradas de esta carpeta.

win32=<path>\MSTEXT35.dll

MaxScanRows=25

FirstRowHasNames=True

CharacterSet=OEM

Format=CSVDelimited

Extensions=none,asc,csv,tab,txt

ExportCurrencySymbols=Yes

El motor de base de datos Microsoft Jet utiliza las entradas de la carpeta de Texto como sigue.

Entrada	Descripción
win32	La ubicación de la ruta de acceso completa al controlador Mstext35.dll. La ruta de acceso completa se determina en el momento de la instalación. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
MaxScanRows	El numero de filas que se comprobarán para adivinar el tipo de columnas. Si está establecido a 0, se comprobará el archivo completo. El predeterminado es 25. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
FirstRowHasNames	Un valor binario que indica si la primera fila de la tabla contiene nombres de columnas. Un valor de 01 indica que durante la importación se obtienen los nombres de las columnas de la primera fila. Un valor de 00 indica que no hay nombres de columnas en la primera fila. El valor predeterminado es 01. Los valores son de tipo Binary para Windows 95 y Windows NT 4.0 y de tipo REG_BINARY para Windows NT 3.51.
CharacterSet	Un indicador de la manera en que se almacenan las páginas de texto. Los posibles valores son: • OEM - Conversiones OemToAnsi y AnsiToOem realizadas. • ANSI - Conversiones OemToAnsi y AnsiToOem no realizadas. De manera predeterminada es OEM. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
Format	Puede ser cualquiera de los siguientes: TabDelimited, CSVDelimited, Delimited (<carácter sencillo>). El delimitador de carácter sencillo en el formato Delimited puede ser cualquier carácter sencillo excepto una comilla doble ("). El predeterminado es CSVDelimited. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
Extensions	Las extensión de los archivos que se van a examinar cuando se busquen datos de texto. Los predeterminados son txt, csv, tab, asc. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
ExportCurrencySymbols	Un valor binario que indica si está incluido el símbolo de moneda adecuado cuando se exportan campos de moneda. Un valor de 00 indica que sólo se exportan datos numéricos. Un valor de 01 indica que se incluye el símbolo. El predeterminado es 01. Los valores son de tipo Binary para Windows 95 y Windows NT 4.0 y de tipo REG_BINARY para Windows NT 3.51.
ISAM Formats de origen de datos Texto

La carpeta Jet\3.5\ISAM Formats\Text contiene las siguientes entradas.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Texto
ExportFilter	REG_SZ	String	Archivos de Texto (*.txt; *.csv; *.tab; *.asc)
ImportFilter	REG_SZ	String	Archivos de Texto (*.txt; *.csv; *.tab; *.asc)
CanLink	REG_BINARY	Binary	01
OneTablePerFile	REG_BINARY	Binary	01
IsamType	REG_DWORD	DWORD	2
IndexDialog	REG_BINARY	Binary	00
CreateDBOnExport	REG_BINARY	Binary	00
ResultTextImport	REG_SZ	String	Importa datos desde el archivo externo a la base de datos actual. Al cambiar datos en la base de datos actual no se cambian los datos en el archivo externo.
ResultTextLink	REG_SZ	String	Crea una tabla en la base de datos activa que se vincula al archivo externo. Al cambiar datos en la base de datos actual se cambian los datos en el archivo externo.
ResultTextExport	REG_SZ	String	Exporta datos desde la base de datos actual al archivo de texto. Este proceso sobrescribe los datos si se exporta a un archivo existente.
Nota   Cuando cambia los valores del Registro de Windows tiene que salir y volver a iniciar el motor de la base de datos para que surtan efecto los nuevos valores.

Personalización del archivo Schema.ini

Para leer, importar o exportar datos de texto, necesita crear un archivo Schema.ini además de incluir la información ISAM de Texto en el archivo .ini. Schema.ini contiene los detalles de un origen de datos de texto: qué formato tiene el archivo de texto, cómo se lee en el momento de la importación y el formato predeterminado de exportación para los archivos. Los siguientes ejemplos muestran el diseño para un archivo de ancho fijo, Nomarch.txt.

[Nomarch.txt]

ColNameHeader=False

Format=FixedLength

MaxScanRows=25

CharacterSet=OEM

Col1=columnname Char Width 24

Col2=columnname2 Date Width 9

Col3=columnname7 Float Width 10

Col4=columnname8 Integer Width 10

Col5=columnname9 LongChar Width 10

De manera similar, a continuación se especifica el formato para un archivo delimitado:

[Delimit.txt]

ColNameHeader=True

Format=Delimited(!)

MaxScanRows=0

CharacterSet=OEM

Col1=username char width 50

Col2=dateofbirth Date width 9

Si va exportar datos en un archivo de texto delimitado, especifique también el formato para ese archivo.

[Export: Mi exportación especial]

ColNameHeader=True

Format=TabDelimited

MaxScanRows=25

CharacterSet=OEM

DateTimeFormat=mm.dd.yy.hh.mm.ss

CurrencySymbol=Dm

CurrencyPosFormat=0

CurrencyDigits=2

CurrencyNegFormat=0

CurrencyThousandSymbol=,

CurrencyDecimalSymbol=.

DecimalSymbol=,

NumberDigits=2

NumberLeadingZeros=0

El ejemplo Mi exportación especial se refiere a una opción específica de exportación, puede especificar cualquier variación de las opciones de exportación en el momento de la conexión. Este último ejemplo también corresponde a un nombre de origen de datos (DSN) que se puede pasar opcionalmente en el momento de la conexión. Se pueden incluir todas las secciones de formatos en el mismo .ini.

El motor de base de datos Microsoft Jet utiliza las entradas de Schema.ini como sigue.

Entrada	Descripción
ColNameHeader	Se puede establecer a True (indicando que el primer registro de datos especifica los nombres de las columnas.) o a False.
Format	Se puede establecer a uno de los siguientes valores: TabDelimited, CSVDelimited, Delimited (<carácter sencillo>) o FixedLength. El delimitador especificado para el formato de archivo Delimited puede ser cualquier carácter sencillo excepto una comilla doble (").
MaxScanRows	Indica el número de archivos que se comprobarán cuando se adivinan los tipos de  datos de las columnas. Si se establece a 0 indica que se comprobará el archivo entero.
CharacterSet	Se puede establecer a OEM o ANSI, indicando si el archivo origen está escrito utilizando una página de código OEM o ANSI.
DateTimeFormat	Se puede establecer a un formato de cadena, indicando fechas y horas. Esta entrada debería especificarse si en la importación/exportación se controlan con los mismos formatos todos las fechas y las horas. Todos los formatos del motor de base de datos Microsoft Jet, excepto AM y PM son compatibles. Si no hay un formato de cadena, se utilizan las opciones de imagen corta de fecha y hora del Panel de control de Windows.
CurrencySymbol	Indica el símbolo de moneda que se utiliza en valores de moneda en el archivo de texto. Los ejemplos incluyen el signo de dólar y marco alemán. Si no existe esta entrada, se utiliza el valor predeterminado en el Panel de control de Windows.
CurrencyPosFormat	Se puede establecer a cualquiera de los siguientes valores: Prefijo de símbolo de moneda sin separación ($1) Sufijo de símbolo de moneda sin separación (1$) Prefijo de símbolo de moneda con un carácter de separación ($ 1) Sufijo de símbolo de moneda con un carácter de separación(1 $) Si no existe esta entrada, se utiliza el valor predeterminado en el Panel de control de Windows.
CurrencyDigits	Especifica el número de dígitos que se utilizan para la parte fraccionaria de una cantidad de moneda. Si no existe esta entrada, se utiliza el valor predeterminado en el Panel de control de Windows.
CurrencyNegFormat	Puede ser uno de los siguientes valores: ($1) –$1 $–1 $1– (1$) –1$ 1–$ 1$– –1 $ –$ 1 1 $– $ 1– $ –1 1– $ ($ 1) (1 $) El signo de dólar sólo se muestra a modo de ejemplo, pero en el programa real se debería reemplazar con el valor CurrencySymbol. Si no existe esta entrada, se utiliza el valor predeterminado en el Panel de control de Windows.
CurrencyThousandSymbol	Indica el carácter sencillo que se utiliza para separar valores de moneda en miles, en el archivo de texto. Si no existe esta entrada, se utiliza el valor predeterminado en el Panel de control de Windows.
CurrencyDecimalSymbol	Se puede establecer a cualquier carácter sencillo que se utilice para separar el entero de la parte fraccionaria de una cantidad de moneda. Si no existe esta entrada, se utiliza el valor predeterminado en el Panel de control de Windows.
DecimalSymbol	Se puede establecer a cualquier carácter sencillo que se utilice para separar el entero de la parte decimal de un número. Si no existe esta entrada, se utiliza el valor predeterminado en el Panel de control de Windows.
NumberDigits	Indica el número de dígitos decimales en la parte fraccionaria de un número. Si no existe esta entrada, se utiliza el valor predeterminado en el Panel de control de Windows.
NumberLeadingZeros	Especifica si un valor decimal menor que 1 y mayor que -1 debería contener ceros a la izquierda, Este valor puede ser False (sin ceros a la izquierda) o True.
Col1, Col2, ...	Lista de las columnas que se leerán en el archivo de texto. El formato de esta entrada debería ser: Coln=Nombrecolumna tipo [Ancho #] Nombrecolumna: Los nombres de las columnas con espacios incrustados deberían estar entre comillas. tipo: Puede ser: Bit, Byte, Short, Long, Currency, Single, Double, DateTime, Text o Memo. Además se admiten los siguientes tipo de controlador de texto  ODBC: Char (igual que Texto) Float (igual que Doble) Integer (Igual que Corto) LongChar (Igual que Memo) Date formato de fecha
Nota   Cuando cambia los valores del Registro de Windows tiene que salir y volver a iniciar el motor de la base de datos para que surtan efecto los nuevos valores.


Inicialización del controlador de origen de datos HTML (Internet)

Cuando instala el controlador de origen de datos HTML, el programa de instalación escribe un conjunto de valores en el Registro de Windows en las subclaves Engines y ISAM Formats. No debe modificar estos valores directamente, debe utilizar el programa de instalación de su aplicación para agregar, eliminar o cambiar estos valores. Las siguientes secciones describen los valores de inicialización y de los ISAM Formats para el controlador de origen de datos HTML.

Valores de inicialización de origen de datos HTML

La carpeta Jet\3.5\Engines\Text incluye valores de inicialización para el controlador Mstext35.dll, que se utiliza para el acceso externo a tablas almacenadas en archivos HTML. El siguiente ejemplo muestra los valores habituales de las entradas en esta carpeta.

win32=<path>\MSTEXT35.dll

MaxScanRows=25

FirstRowHasNames=False

CharacterSet=OEM

Format=TabDelimited

Extensions=none,asc,csv,tab,txt

ExportCurrencySymbols=Yes

El motor de la base de datos utiliza las siguientes entradas de la carpeta de Texto.

Entrada	Descripción
win32	La ubicación de Mstext35.dll. La ruta de acceso completa se determina en el momento de la instalación. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
MaxScanRows	El numero de filas que se comprobarán para adivinar el tipo de columnas. Si está establecido a 0, se comprobará el archivo completo. El predeterminado es 25. Los valores son de tipo DWORD para Windows 95 y Windows NT 4.0 y de tipo REG_DWORD para Windows NT 3.51.
FirstRowHas Names	Un valor binario que indica si la primera fila de la tabla contiene nombres de columnas. Un valor de 01 indica que durante la importación se obtienen los nombres de las columnas de la primera fila. Un valor de 00 indica que no hay nombres de columnas en la primera fila. El valor predeterminado es 01. Los valores son de tipo Binary para Windows 95 y Windows NT 4.0 y de tipo REG_BINARY para Windows NT 3.51.
CharacterSet	Un indicador de la manera en que se almacenan las páginas de texto. Los posibles valores son: • OEM - Conversiones OemToAnsi y AnsiToOem realizadas. • ANSI - Conversiones OemToAnsi y AnsiToOem no realizadas. De manera predeterminada es OEM. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
Format	Puede ser cualquiera de los siguientes: TabDelimited, CSVDelimited, Delimited (<carácter único>). El delimitador de carácter sencillo en el formato Delimited puede ser cualquier carácter sencillo excepto una comilla doble ("). El predeterminado es CSVDelimited. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.
Extensions	Las extensión de los archivos que se van a examinar cuando se busquen datos de texto. Los predeterminados son txt, csv, tab, asc. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51
ExportCurrencySymbols	Un valor binario que indica si está incluido el símbolo de moneda adecuado cuando se exportan campos de moneda. Un valor de 00 indica que sólo se exportan datos numéricos. Un valor de 01 indica que se incluye el símbolo. El predeterminado es 01. Los valores son de tipo Binary para Windows 95 y Windows NT 4.0 y de tipo REG_BINARY para Windows NT 3.51.
ISAM Formats de importación de HTML

La carpeta Jet\3.5\ISAM Formats\HTML de importación contiene las siguientes entradas.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Texto
ImportFilter	REG_SZ	String	Archivo HTML (*.ht*)
CanLink	REG_BINARY	Binary	01
OneTablePerFile	REG_BINARY	Binary	00
IsamType	REG_DWORD	DWORD	2
IndexDialog	REG_BINARY	Binary	00
CreateDBOnExport	REG_BINARY	Binary	00
ResultTextImport	REG_SZ	String	Importa datos desde el archivo externo a la base de datos actual. Al cambiar datos en la base de datos actual no se cambian los datos en el archivo externo.
ResultTextLink	REG_SZ	String	Crea una tabla en la base de datos activa que se vincula al archivo externo. Al cambiar datos en la base de datos actual se cambian los datos en el archivo externo.
Nota   Cuando cambia los valores del Registro de Windows tiene que salir y volver a iniciar el motor de la base de datos para que surtan efecto los nuevos valores.

HTML Export ISAM Formats

La carpeta Jet\3.5\ISAM Formats\HTML de exportación contiene las siguientes entradas.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Texto
ExportFilter	REG_SZ	String	Archivos HTML (*.htm)
CanLink	REG_BINARY	Binary	00
OneTablePerFile	REG_BINARY	Binary	01
IsamType	REG_DWORD	DWORD	2
IndexDialog	REG_BINARY	Binary	00
CreateDBOnExport	REG_BINARY	Binary	00
ResultTextExport	REG_SZ	String	Exporta datos desde la base de datos actual al archivo de texto. Este proceso sobrescribe los datos si se exporta a un archivo existente.
Nota   Cuando cambia los valores del Registro de Windows tiene que salir y volver a iniciar el motor de la base de datos para que surtan efecto los nuevos valores.


Inicialización del controlador de origen de datos Microsoft Exchange

Cuando instala el controlador de origen de datos Microsoft Exchange el programa de instalación escribe un conjunto de valores en el Registro de Windows en las subclaves Engines y ISAM Formats. No debe modificar estos valores directamente, debe utilizar el programa de instalación de su aplicación para agregar, eliminar o cambiar estos valores. Las siguientes secciones describen los valores de inicialización y de los ISAM Formats para el controlador de origen de datos de Microsoft Exchange.

Valores de inicialización del origen de datos Microsoft Exchange

La carpeta incluye los valores de inicialización para el controlador Jet\3.5\Engines\Exchange para Msexch35.dll, que se utilizan para el acceso externo a carpetas de Microsoft Exchange. La única entrada en esta carpeta es la siguiente:

win32=<path>\MSEXCH35.dll

El motor de base de datos Microsoft Jet utiliza esta carpeta de Exchange para indicar la ubicación Msexch35.dll. La ruta de acceso completa se determina en el momento de la instalación. Los valores son de tipo String para Windows 95 y Windows NT 4.0 y de tipo REG_SZ para Windows NT 3.51.

ISAM Formats de Microsoft Exchange

La carpeta Jet\3.5\ISAM Formats\Exchange 4.0 contiene las siguientes entradas.

Nombre de entrada	Tipo Windows NT 3.51	Tipo Windows 95 y Windows NT 4.0	Valor
Engine	REG_SZ	String	Exchange
CanLink	REG_BINARY	Binary	01
OneTablePerFile	REG_BINARY	Binary	00
IsamType	REG_DWORD	DWORD	0
IndexDialog	REG_BINARY	Binary	00
CreateDBOnExport	REG_BINARY	Binary	00
Nota   Cuando cambia los valores del Registro de Windows tiene que salir y volver a iniciar el motor de la base de datos para que surtan efecto los nuevos valores.


IN <Palabra reservada de Microsoft Jet SQL>
IN

La palabra clave IN se utiliza en estos contextos:

Operador In

Cláusula IN

Subconsultas de SQL

Instrucción TRANSFORM


ON <Palabra reservada de Microsoft Jet SQL>
ON

La palabra clave ON se utiliza en estos contextos:

Operación INNER JOIN

Operaciones LEFT JOIN, RIGHT JOIN


ALL <Palabra reservada de Microsoft Jet SQL>
ALL

La palabra clave ALL se utiliza en estos contextos:

Predicados ALL, DISTINCT, DISTINCTROW, TOP

Subconsultas de SQL

Operación UNION


ASC/DESC <Palabra reservada de Microsoft Jet SQL>
ASC/DESC

Las palabras clave ASC y DESC se utilizan en estos contextos:

Instrucción CREATE INDEX

Cláusula ORDER BY


BY <Palabra reservada de Microsoft Jet SQL>
BY

La palabra clave BY se utiliza en estos contextos:

Cláusula GROUP BY

Cláusula ORDER BY


CREATE <Palabra reservada de Microsoft Jet SQL>
CREATE

La palabra clave CREATE se utiliza en estos contextos:

Instrucción CREATE INDEX

Instrucción CREATE TABLE


DROP <Palabra reservada de Microsoft Jet SQL>
DROP

La palabra clave DROP se utiliza en estos contextos:

Instrucción ALTER TABLE

Instrucción DROP


INDEX <Palabra reservada de Microsoft Jet SQL>
INDEX

La palabra clave INDEX se utiliza en estos contextos:

Instrucción CREATE INDEX

Instrucción DROP


INTO <Palabra reservada de Microsoft Jet SQL>
INTO

La palabra clave INTO se utiliza en estos contextos:

Instrucción INSERT INTO

Instrucción SELECT ...  INTO


JOIN <Palabra reservada de Microsoft Jet SQL>
JOIN

La palabra clave JOIN se utiliza en estos contextos:

Operación INNER JOIN

Operaciones LEFT JOIN, RIGHT JOIN


SELECT <Palabra reservada de Microsoft Jet SQL>
SELECT

La palabra clave SELECT se utiliza en estos contextos:

Instrucción SELECT

Instrucción SELECT ... INTO


TABLE <Palabra reservada de Microsoft Jet SQL>
TABLE

La palabra clave TABLE se utiliza en estos contextos:

Instrucción ALTER TABLE

Instrucción CREATE INDEX

Instrucción CREATE TABLE

Instrucción DROP

Operación UNION


WITH <Palabra reservada de Microsoft Jet SQL>
WITH

La palabra clave WITH se utiliza en estos contextos:

Instrucción CREATE INDEX

Declaración WITH OWNERACCESS OPTION