Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Excel y SQL insertar modificar y eliminar registros


.

En esta última entrega de sentencias SQL que se pueden usar en macros de VBA, voy a exponer sobre como insertar o agregar datos, modificar y eliminar datos, es preciso recordar que anteriormente se trato sobre como filtrar datos trabajando con el comando SELECT; todo lo menciodado acerca de SQL tiene como fin poder recuperar los datos de la base de datos Access una vez lograda la conexión entre los dos aplicativos, en el link siguiente te enseño como conectar Excel con Access.

Cuando se manipula datos se requiere normalmente insertar, modificar o eliminar datos con sentencias SQL es por ello que en esta parte del tutorial se muestro como agregar, modificar o eliminar datos guardados en Access desde Excel mediante una macro de VBA, recuerda que aca tienes el ejemplo sobre como conectar excel con access, suscribe al blog para que lleguen a tu mail las próximas entregas o post que se escriban sobre el tema.

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  

Desde el link podrás descargar el ejemplo que conecta Excel con Access y desde el link del final cientos de ejemplos totalmente GRATUITO, recordando que si este o alguno de los ejemplos publicados te fueron de utilidad y puedes, aporta a seguir manteniendo esta página.

CONSULTAS DE ACCIÓN
Las consultas de
acción son aquellas que no devuelven valor alguno, sino que
se encargan de realizar acciones agregar, modificar o borrar
datos; como son las consultas para añadir datos, consultas para modificar de
datos y consultas para eliminar datos.
CONSULTAS DE DATOS
AÑADIDOS COMANDO INSERT INTO
Esta consulta permite
insertar, añadir o agregar un dato a la tabla, se puede agregar un registro
único; seleccionar registros y agregarlo en una tabla nueva o agregar todos los
registros de una tabla a otra tabla.
Insertar un único registro: se puede usar INSERT
INTO para insertar un solo registro, en este caso se debe especificar el nombre
del campo y el valor que debe ingresarse, cuando no se especifica el nombre del
campo de ingresa el valor predeterminado o nulo; los registros se agregan al
final de la tabla o base de datos: la sintaxis es la siguiente:
INSERT INTO Tabla (campo1,
campo2, campoN) VALUES (valor1, valor2, valorN)
INSER INTO:
Comando que permite insertar o agregar un registro.
Tabla: es la
tabla donde se agregará e registro.
Campo1: es el
primer campo donde se agregará el registro.
Campo2: es
el segundo campo donde se agregará el registro.
CampoN : es
el último campo donde se agregará el registro.
VALUES: parte del
comando INSERT INTO donde se expresan los valores a agregar.
Valor1: valor a
agregar para el campo1.
Valor2: valor
a agregar para el campo2.
ValorN: valor
a agregar para el campoN.
Se debe tener en
cuenta al agregar un registro que los valores literales o cadena de texto se
deben agregar entre comillas simples (‘texto literal’), si el dato a insertar
es una fecha se debe indicar entre almohadillas (#) y en formato mm-dd-yy.
La siguiente sentencia
inserta  al campo cliente y cuenta corriente de la tabla ventas el valor
«Dayra Tomy» y el valor «SI».
INSERT INTO Ventas
(cliente, CuentaCorriente) VALUES (‘Dayra Tomy’, ‘SI’)
Insertar un registros de
una tabla a otra tabla
, se puede usar INSERT INTO para ingresar un conjunto de datos
pertenecientes a otra tabla o consulta mediante la cláusula SELECT …FROM, en
este caso se selecciona que datos se deben ingresar en la base de
datos; la sintaxis es la siguiente:
INSERT INTO
TablaDestino (IN Base Datos Externa) (campo1, campo2, campoN) SELECT TablaOrigen.campo1, TablaOrigen.campo2, TablaOrigen.campoN
FROM TablaOrigen WHERE Criterios
INSER INTO:
Comando que permite insertar o agregar un registro.
IN: se debe usar
si la base de datos es externa.
TablaDestino: es
la tabla donde se agregará e registro.
Campo1: es el
primer campo donde se agregará el registro.
Campo2: es
el segundo campo donde se agregará el registro.
CampoN : es
el último campo donde se agregará el registro.
TablaOrigen.campo1:
es el campo uno de la tabla origen que se insertará en el campo uno de la tabla
destino.
TablaOrigen.campo2:
es el campo uno de la tabla origen que se insertará en el campo desde la tabla
destino.
TablaOrigen.campoN:
es el campo uno de la tabla origen que se insertará en el campo N de la tabla
destino.
TablaOrigen; es
de donde provienen los datos
Criterios:
expresa los diferentes criterios para determinar que datos se deben insertar.

En los campos autocontadores o incrementales, se debe tener presente que se
copiará el valor que tenga en la tabla origen, no incrementándose como
corresponde; si la base de datos es una base de datos Externa se debe
agregar IN.

Si la tabla origen y destino tienen los mismos nombres y tipos de datos, es
decir contiene todos los campos con idénticos nombre de campo y tipo de datos; ósea
la misma estructura de las tablas, se puede simplificar las sintaxis de la
siguiente forma:

INSERT INTO Tabla SELECT TablaOrigen.* FROM TablaOrigen WHERE criterios

El siguiente ejemplo inserta datos en una base de dato externa ResumenVenta que
se encuentra en la dirección  ‘c:dbasepadron.mdb’, los datos a
insertar son todos los campos de la tabla de origen Ventas, solo cuando el
campo Venta sea igual a Dayra Col o Tomy Lee :

INSERT INTO ResumenVenta IN ‘c:dbasepadron.mdb’ SELECT Ventas
* FROM Ventas WHERE Venta = ‘Dayra Col’ or Venta = ‘Tomy Lee’

Es posible averiguar los registros que se insertarán para ello se debe proceder
a realizar una consulta de selección para determinar o mostrar que datos se
insertarán.
CONSULTAS DE ACTUALIZACIÓN
DE DATOS COMANDO UPDATE
El comando UPDATE
crea una consulta de actualización de datos, cambiando los registros de una
tablas especificada en la cláusula FROM que satisfacen el o los
criterios expresados en la cláusula WHERE, UPDATE no genera ningún
resultado, para saber que datos se actualizarán se puede determinar
creando una consulta de selección con el mismo criterio de actualización de
datos; si se omite la cláusula WHERE se actualizarán todos los datos, no es
posible deshacer la actualización por ello se debe contar con una copia de
seguridad en caso que necesitemos restablecer los datos; la
sintaxis es:

UPDATE Tabla SET campo1 = valor1, campo2 = valor2, campoN = valor N WHERE
Criterio
El siguiente
ejemplo actualiza el campo comisión estableciéndolo en un 10% de las ventas
cuando las ventas sean superiores a 2000 o los clientes sean Dayra Col o
Tomy Lee.

UPDATE Ventas SET FROM Comision = Venta *0,10 WHERE Venta > 2000
OR Cliente = ‘Dayra Sol’ OR Cliente = ‘Tomy Lee’ 
CONSULTAS DE ELIMANCIÓN DE
DATOS COMANDO DELETE
El comando DELETE
crea una consulta de eliminación de datos, borrando registros de una o más
tablas listadas en la cláusula FROM que satisfacen el o los criterios
expresados en la cláusula WHERE, con este comando se elimina el registro
completo, no siendo posible eliminar el contenido de cierto campos solamente;
una vez eliminados los registros no se pueden recuperar salvo desde una copia
de seguridad, por eso se recomienda realizar siempre una copia, por lo menos
antes de eliminar datos; tal vez sea preciso saber que datos se eliminarán,
ello se soluciona creando una consulta de selección con el mismo criterio de
eliminación de datos,  la sintaxis es:

DELETE * FROM Tabla WHERE Criterio

El siguiente ejemplo borra los datos cuyas ventas sean menores a 2000 y
distintas de los clientes  Dayra Col o Tomy Lee.

DELETE * FROM Ventas WHERE Venta < 2000 AND Cliente
<> ‘Dayra Sol’ OR
Cliente <> ‘Tomy Lee’  

SUBCONSULTAS
Una subconsulta
es una instrucción SELECT anidada dentro de otra instrucción SELECT, se asemeja
a cuando se anidan formulas en Excel.

Se puede usar una subconsulta en lugar de una expresión en la lista de campos
de una instrucción SELECT o cláusula WHERE O HAVING, en una subconsulta se
puede utilizar una instrucción SELECT, con ello se proporciona un conjunto de
dato de uno o más valores especificados para evaluar en la expresión de la
cláusula WHERE O HAVING. 

Existen tres formas de sintaxis para crear una subconsulta.

·        
Comparación ANY ALL SOME (instrucción SQL)

·        
Expresión [NOT] IN (instrucción SQL)

·        
[NOT] EXISTS (instrucción SQL)

Comparación: es
una expresión y un operador de comparación que compara la expresión con el
resultado de la subconsulta.
Expresión:
expresión por la que se busca el conjunto resultante de la subconsulta.
Instrucción SQL:
es una instrucción SELECT que tiene el mismo formato y regla de cualquier
instrucción SQL vistas anteriormente, debe ir entre paréntesis.

Los predicados ANY y SOME son sinónimos, sirven para recuperar registros de la
consulta principal que coincidan con cualquier registro de la subconsulta.

En el ejemplo se requiere recuperar todos los campos de la tabla Ventas cuando
el campo Comisión sea mayor o igual a alguno de los registros devuelto por la
subconsulta, requiriendo en la subconsulta seleccionar los registros del campo
Comision de la tabla Comisiones cuando Comision sea mayor o igual a 1000.
SELECT  * FROM
Ventas WHERE Comision >= ANY (SELECT  Comision FROM Comisiones
WHERE Comision >= 1000) 

El predicado ALL se usa para recuperar registros de la consulta principal
que coincidan con todos los registros de la subconsulta.


En el ejemplo se requiere recuperar todos los campos de la tabla Ventas cuando
el campo Comisión sea mayor o igual a todos los registros devuelto por la
subconsulta, requiriendo en la subconsulta seleccionar los registros del campo
Comision de la tabla Comisiones cuando Comision sea mayor o igual a 1000.
SELECT  * FROM Ventas WHERE
Comision >= ALL (SELECT  Comision FROM Comisiones WHERE Comision
>= 1000) 

El predicado IN se usa para recuperar registros de la consulta principal que
coinciden exactamente con algún registro de la subconsulta; si se usa
NOT IN se recuperan los registros de la consulta principal que no coinciden exactamente
con algún registro de la subconsulta, es decir se obtiene los datos inversos
que cuando se usa IN solamente.


En el ejemplo se requiere recuperar todos los campos de la tabla Clientes
cuando el campo Venta sea igual a los registros devuelto por la subconsulta,
requiriendo en la subconsulta seleccionar los registros del campo Venta de la
tabla Ventas cuando Comision sea mayor o igual a 500.
SELECT  * FROM Clientes WHERE Venta IN
(SELECT  Venta FROM Ventas WHERE Comision >= 500) 

En este caso se utiliza NOT IN, es decir se obtendrán los resultados inversos a
los requeridos con la consulta anterior.

SELECT  * FROM Clientes WHERE Venta
NOT IN (SELECT  Venta FROM Ventas WHERE Comision >= 500) 

El predicado EXISTS se utiliza en comparaciones verdadero / falso,
sirve para determinar si la subconsulta devuelve algún registro, si se una NOT
se obtiene el resultado inverso.


En este ejemplo devolverá verdadero si en la subconsulta existe algún registro
que cumpla las condiciones, si se una NOT se devolverá lo contrario.

EXISTS (SELECT  Venta FROM Ventas WHERE Comision >= 500) 

NOT EXISTS (SELECT  Venta FROM Ventas WHERE Comision >= 500) 

Se puede usar AS (alias) en la subconsulta para referirse a una tabla listada
en la cláusula FROM fuera de la subconsulta.


El ejemplo devuelve el nombre de los clientes cuyas ventas sean mayores o
iguales que el promedio de ventas a todos los clientes del mismo país, ordenado
por País.

SELECT  NombreCliente, País, Venta FROM Clientes As Vta1 WHERE Venta
>= (SELECT AVG (Venta)
 FROM Clientes WHERE Vta1.Pais = Clientes.Pais) ORDER BY Pais 

El ejemplo devuelve el nombre y demás datos de los Empleados cuyos salarios
superan al salario de Jefe o Director, ordenado por País (nótese que si el comodín
% produce error se debe usar *).


SELECT NombreEmpleado, País, Cargo, Salario FROM PadronEmpleaos WHERE
Cargo LIKE «Vende%» AND Salario >= ALL (SELECT Salario
FROM PadronEmpleaos WHERE Cargo LIKE «%Jefe%» OR Cargo LIKE
«%Director%») ORDER BY Pais 

El ejemplo devuelve listado de nombre y demás datos de Productos cuyo precio de
venta sea igual al precio del producto Chocolate Blanco.


SELECT DISTINCTROW Producto, PrecioCompra, PrecioVenta, Codigo FROM
PadronProductos
WHERE PrecioVenta = (SELECT PrecioVenta FROM PadronProductos WHERE Producto «Chocolate
Blanco)

El ejemplo devuelve listado de nombre y demás datos de Clientes cuyos Clientes
han realizado alguna compra entre el 12/01/2012 y el 12/06/2014.
SELECT
DISTINCTROW NombreCliente, Direccion, Telefono, Mail FROM PadronClientes
WHERE Cliente
IN (SELECT DISTINCTROW  Cliente FROM Ventas WHERE
Fecha >= #12/01/2012# AND Fecha <= #12/06/2014#)
El ejemplo
devuelve listado de nombre y demás datos de Clientes cuyos Clientes han
realizado alguna compra.
SELECT
DISTINCTROW NombreCliente, Direccion, Telefono, Mail FROM PadronClientes
AS Pd WHERE EXISTS (SELECT * FROM Ventas AS Vtas1 WHERE
Pd.NombreCliente = Vtas1.NombreCliente)
El ejemplo
devuelve el código del producto, la cantidad pedida y el nombre del producto,
nombre que es extraído mediante una subconsulta de la tabla PadronProductos;
cuando la cantidad sea superior o igual a 5000 ordenado por código.
SELECT
DISTINCTROW PadronPedidos.Codigo, Pedidos.Cantidad, (SELECT DISTINCTROW
PadronProductos.Producto FROM PadronProductos WHERE PadronProductos.Codigo =
PadronPedidos.Codigo) AS NombreProducto FROM PadronPedidos WHERE
PadronPedidos.Cantidad > 5000 ORDER BY Pedidos.Codigo
CONSULTAS DE REFERENCIAS
CRUZADAS
Esta consulta
permite la visualización de datos como si fuese una tabla u hoja de Excel en
filas y columnas, la sintaxis es la siguiente
TRANSFORM función
agregada instrucción select PIVOT campo pivot IN valor1, valor 2, valorN WHERE
criterios GROUP BY criterio agrupamiento ORDER BY orden de datos
TRANSFORM:
cláusula para crear consultas de referencia cruzada.
Función agregada:
función agregada SQL que opera sobre los datos.
Instrucción
select: es una instrucción SELECT como las vistas anteriormente.
Campo pivot: es
el campo o expresión que se requiere usar para crear cabecera de las columnas.
Valor1: es un
valor fijo uno usado para crear la cabecera de la columna.
Valor2: es
un valor fijo dos  usado para crear la cabecera de la columna.
ValorN: es
un valor fijo N usado para crear la cabecera de la columna.
Criterios:
criterios de la cláusula WHERE.
Criterio de
agrupamiento: criterios para agrupar datos.
Orden de datos: por
qué campo se debe ordenar.
El ejemplo
 crea una referencia de tablas cruzadas que muestra las ventas de producto
por mes para un período determinado.
TRANSFORM SUM
(Cantidad) AS Ventas SELECT Empresa FROM Pedidos WHERE Fecha
BETWEEN #12/01/2012# AND #12/06/2014# GRUOP BY Empresa ORDER
BY Empresa PIVOT «Trimestre» &
DATE PART(«q»,Fecha) IN
(‘Trimestre1’, ‘Trimestre2’, ‘Trimestre3’, ‘Trimestre4’)
TRANSFORM SUM (Cantidad) AS Ventas SELECT Producto,
Cantidad FROM Pedidos WHERE Fecha BETWEEN #12/01/2012# AND #12/06/2014#
GRUOP BY Producto ORDER BY Producto PIVOT DATE PART(«m»,Fecha)
CONSULTAS DE UNION
INTERNAS
Esta consulta
permite la vinculación de tablas, combinando los registros siempre que haya un
campo en común y concordancia de datos, la sintaxis es:
SELECT Campos FROM Tabla1 INNER JOIN Tabla2. ON Tabla1.Campo1 Operador
Comparación Tabla2.campo2
SELECT: cláusula
SELECT.
Campos: campos
que se vinculan.
Tabla1: primer
tabla a vincular.
Tabla2: segunda
tabla a vincular.

Tabla1.Campo1: nombre de los campos que se combinan de la
tabla1.
Tabla1.Campo2: nombre de los campos que se combinan de la tabla2.

Operador
comparación: es un operador de comparación.
Se puede usar
INNER JOIN,  por ejemplo, con tablas de Departamentos y Empleados para
seleccionar todos los empleados de cada departamento, por el contrario para
seleccionar todos los departamentos, incluso los que no tienen empleados se
emplea LEFT JOIN o todos los empleados si alguno no está asignado a
departamentos se usa RIGTH JOIN.  
Se pueden enlazar
varias cláusulas ON en una instrucción JOIN, la sintaxis sería:
SELECT Campos
FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.Campo1 Operador de comparación
Tabla2.Campo2 AND ON Tabla1.Campo2 Operador de comparación Tabla2.Campo2
OR ON Tabla1.Campo3 Operador de comparación Tabla2.Campo3
También se puede
anidar la instrucción JOIN, la sintaxis es la siguiente:
SELECT Campos
FROM Tabla1 INNER JOIN
(Tabla2 INNER JOIN [( ] Tabla3
[INNER JOIN [(] TablaX [INNER JOIN …)]
ON Tabla3.Campo3
Operador de comparación TablaX.CampoX)]
ON Tabla2.Campo2
Operador de comparación Tabla3.Campo3)
ON Tabla1.Campo1
Operador de comparación Tabla2.Campo2
LEFT JOIN O RIGTH
JOIN  se pueden anidar dentro de INNER JOIN, pero no al revés.
CONSULTAS DE UNION
EXTERNAS
Esta consulta
permite la vinculación de dos o más tablas o consultas independientes, si no se
indica lo contrario no se devuelven registros duplicados, para mostrar todos
los registros se debe usar el predicado ALL; en una operación de UNION se debe
tener el mismo número de campos sin importar el tamaño del campo y el tipo de
datos; la sintaxis es:
TABLE Consulta1 UNION [ALL] TABLE Consulta2 UNION
[ALL] TABLE consutaN
TABLE: palabra
clave de SQL que permite crear una unión Externa.
UNION:
instrucción SQL que permite la combinación de dos o más tablas
Consulta1: es la
consulta a la primer tabla, es una consulta SELECT o nombre de una tabla.
Consulta2: es la
consulta a la segunda tabla, es una consulta SELECT o nombre de una tabla.
Consulta N: es la
consulta a la N tabla, es una consulta SELECT o nombre de una tabla.
El siguiente ejemplo
combina una tabla existente con una instrucción SELECT
TABLE ClientesUSA UNION ALL SELECT * FROM Clientes WHERE Venta > 1000

 

CONSULTAS CON PARÁMETROS
Las consultas de
parámetros, se denominan a las consultas cuyas criterios de búsqueda son
definidos por parámetros que debe ingresar el usuario, al ejecutarse desde la
base de datos directamente el usuario debe ingresar cada parámetro solicitado,
si se ejecuta desde alguna aplicación se debe asignar mediante el valor de
dichos parámetros y luego ejecutarlas, la sintaxis es:
PARAMETERS nombre1 tipo1,
nombre2, tipo2, nombreN tipoN Consulta
Nombre1: el nombre 1 del
parámetro
Tipo1: es el tipo de datos
del parámetro
Nombre2: el nombre 2 del
parámetro
Tipo2: es el tipo de datos
del parámetro
NombreN: el nombre N del
parámetro
TipoN: es el tipo de datos
del parámetro
Consulta: Instrucción
SELECT
El siguiente ejemplo
establece una consulta de parámetros, donde los datos que debe introducir el
usuario en un cuadro de diálogo; la Fecha dela venta, si la venta fue realizada
en Cuenta Corriente y el importe de Venta mínima, luego de ello se realizará la
consulta que devolverá los clientes cuyas fecha de venta sean mayor a la
indicada en el parámetro, las ventas se realizaron o no en cuenta corriente y
el importe sea mayor al establecido por el usuario.
PARAMETERS [Indique Fecha
Desde:] DateTime, [Indique Si es Cuenta
Corriente:] String, [Indique Importe Venta Desde:] Currency; SELECT
Cliente FROM Ventas WHERE Fecha > [Indique Fecha
Desde:] AND CuentaCorriente = [Indique Si es Cuenta
Corriente:] AND Venta > [Indique Importe Venta Desde:] 
COMANDOS DLL CREACIÓN DE
TABLAS
Si se está usando el motor
de base de datos de Microsoft, para conectar con bases de datos Access, solo es
posible usar la siguiente instrucción para crear una base de dato propia de Access,
la sintaxis es la siguiente:

 

CREATE TABLE
Tabla (campo1 tipo tamaño indice1, campo2 tipo tamaño indice2, campoN tipo
tamaño indiceN, indice multicampo)
CREATE TABLE:
instrucción SQL que permite crear tabla.
Campo1: es el
nombre del campo1 a crear.
Campo2: es el
nombre del campo2 a crear.
CampoN: es el
nombre del campoN a crear.
Tipo: es el tipo
de datos del campo.
Tamaño: es el
tamaño del campo, se debe ingresar solo en campos tipo texto o string.
Indice1: es una
cláusula CONSTRAINT que indica, respecto del campo1, el tipo de indice a crear,
es opcional.
Indice2: es una
cláusula CONSTRAINT que indica, respecto del campo2, el tipo de indice a crear,
es opcional.
Indice3: es una
cláusula CONSTRAINT que indica, respecto del campoN, el tipo de indice a crear,
es opcional.
Indice
multicampo: un indice multicampo es aquel que esta indexado por el contenido de
varios campos, es una cláusula CONSTRAINT opcional que define el tipo de indice
multicampo.
El siguiente
ejemplo crea una tabla cuyo nombre es Ventas con tres campos, Fecha, Cliente,
Venta, donde el primero es tipo DateTime, el segundo Text con un largo de 50,
estableciéndolo como indice primario y el tercero Currency.
CREATE TABLE
Ventas (Fecha DATETIME, Cliente TEXT (50) CONSTRAINT IndicePrimario PRIMARY,
Venta CURRENCY)
Este otro
ejemplo crea una tabla cuyo nombre es Ventas con tres campos, Fecha, Cliente,
Venta, donde el primero es tipo DateTime, el segundo Text con un largo de 50 y
el tercero Currency; crea un indice general formado por los tres campos y no
acepta valores repetidos.
CREATE TABLE
Ventas (Fecha DATETIME, Cliente TEXT (50), Venta CURRENCY) CONSTRAINT
IndiceGeneral UNIQUE (Fecha, Cliente, Venta)
CLAUSULA CONSTRAINT
En el tema anterior se
mencionó dicha cláusula, se puede decir que CONSTRAINT se utiliza para crear o
eliminar índices en las instrucciones ALTER TABLE Y CREATE TABLE, difieren las
sintaxis dependiendo si se trata de un índice único o multindice.
Para índices
únicos la sintaxis es la que sigue:
CONSTRAINT
Nombre  {PRIMARY KEY UNIQUE REFERENCES tabla externa [(Campo
externo1), Campo externo2, Campo externoN]}
CONSTRAINT:
cláusula que sirve para crear índices.
Nombre: nombre
del índice a crear.
Tabla externa:
es el nombre de la tabla que contienes el campos referenciado
Campo externo1:
es el campo1 de la tabla externa.
Campo
externo2: es el campo2 de la tabla externa.
Campo
externoN: es el campoN de la tabla externa.

Para índices
con campos múltiples la sintaxis es la que sigue:

 

CONSTRAINT
Nombre  {PRIMARY KEY (Primario1, Primario2, PrimarioN) UNIQUE
(Unico1, Unico2, UnicoN) FOREING KEY (Ref1, Ref2, RefN) REFERENCES Tabla
externa [(Campo externo1), Campo externo2, Campo externoN]}

 

 

CONSTRAINT:
cláusula que sirve para crear índices.

Nombre: nombre
del índice a crear.

Primario1:
nombre campo1 forma el indice.

Primario2: nombre
campo2 forma el indice.

PrimarioN: nombre
campoN forma el indice.

Unico1: nombre
campo1 forma el indice de clave única.

Unico2: nombre
campo2 forma el indice de clave única.

UnicoN: nombre
campoN forma el indice de clave única.

Ref1: es el nombre del campo1 de la otra tabla
que forman el indice externo.

Ref1: es el nombre
del campo2 de la otra tabla que forman el indice externo.

Ref1: es el
nombre del campoN de la otra tabla que forman el indice externo.

Tabla externa:
es el nombre de la tabla que contienes el campos referenciados.

Campo
externo1: es el campo1 de la tabla externa especificado por Ref1.

Campo
externo2: es el campo2 de la tabla externa especificado por
Ref2. 

Campo
externoN: es el campoN de la tabla externa especificado por RefN.

UNIQUE: genera
un índice de clave única, implicando que los registros de la tabla no pueden
estar duplicados en el campo indexado.

PRIMARY KEY:
genera un indice primario con el campo o campos especificados, los registros de
la clave principal deben ser únicos y no nulos, cada tabla puede
tener solo una clave única principal.

FOREING KEY:
Genera un índice externo tomando como valor del índice campos de otras tablas,
si la clave principal de la tabla externa consta de más de un campo , se debe
utilizar una definición de índice de múltiples campos, listando todos
los campos de referencia, el nombre de la tabla externa y los nombre de los
campos referenciados en dicha tabla externa, en el mimo orden que los campos
listados. Si los campos referenciados son clave principal de la tabla externa,
no se debe especificar los mismos, el motor Jet de base de datos predeterminará
el valor como si la clave principal de la tabla externa fueran los campos
referenciados.

 

 

CLAUSULA
CREATE
Permite crear
índices se usa con el motor de base de datos Jet de Microsoft, solo sirve para
crear bases de datos del mismo motor, se puede utilizar CREATE INDEX para crear
un pseudo índice sobre una tabla adjunta en una fuente de datos ODBC tal como
SQL Server que no tenga todavía un índice, no es necesario tener permiso o
acceso a un servidor remoto para ello, la base de datos remota no es afectada
por el pseudo índice, la sintaxis es la misma para las tablas adjuntas que para
las originales, siendo útil para crear un índice en una tabla que es solo
lectura debido a la falta de índice; la sintaxis es la siguiente
CREATE [ UNIQUE ]
INDEX indice ON Tabla (campo1 [ASD DESC], campo2 [ASD DESC], campoN [ASD DESC])
[WITH {PRIMARY DISALLOW NULL IGNORE NULL}]
CREATE: cláusula
SQL que permite crear un pseudo índice.
UNIQUE: no puede
contener valores duplicados el campo indexado.
Indice: nombre de
índice a crear.
Tabla: nombre de
la tabla donde se creara el índice.
Campo1: nombre
del campo1 de constituye el índice.
Campo2: nombre
del campo2 de constituye el índice.
CampoN: nombre
del campoN de constituye el índice.
ASC: indica el
orden ascendente de los valores de los campos, es opcional, ASC es
predeterminado.
DESC: indica el
orden descendente de los valores de los campos, es opcional.
PRIMARY: genera
un indice primario con el campo o campos especificados, los registros de la clave
principal deben ser únicos y no nulos, cada tabla puede tener solo
una clave única principal.
DISALLOW NULL: no
admite valores nulos en el índice. 
IGNORE NULL:
excluye del índice los valores nulos incluidos en los campos que lo componen.
El ejemplo crea
un indice llamado MyIndice en la tabla ventas usando los campos Fecha y Cliente
no permite que contenga valores repetidos ni nulos.
CREATE INDEX MyIndice ON Ventas (Fecha, Cliente) WITH
DISALLOW NULL
CLAUSULA
ALTER
Esta cláusula
permite la modificación del diseño de una tabla existente, pudiendo modificar
los campos e índices existentes, la sintaxis es la que sigue:
ALTER TABLE
Tabla {ADD {COLUMN Tipo [(Tamaño)] [CONSTRAINT Indice]
CONSTRAINT Indice multicampo} DROP {COLUMN Campo CONSTRAINT
NombreIndice] }

 

ALTER: cláusula
SQL que permite modificar un índice.
Tabla: nombre de
la tabla donde se modificará el índice.
Indice: nombre de
índice del campo a modificar o a eliminar.

Tipo: es el tipo de datos del campo.

Tamaño: es el tamaño del campo, se debe ingresar
solo en campos tipo texto o string.

Indice muticampto: nombre de índice multicampo
a modificar o a eliminar.

ADD COLUMN: se usa para añadir un nuevo campo a
la tabla, indicando nombre, tipo de campo y tamaño en caso de ser texto.

ADD: se usa para agregar un índice multicampo o
de un único campo.

DROP COLUMN: Se utiliza para borrar un campo,
solo se debe especificar el nombre del mismo.

DROP: sirve para
eliminar un índice, se debe especificar el nombre del índice a continuación de
la palabra reservada CONSTRAINT.
El siguiente
ejemplo crea un campo tipo moneda.
ALTER TABLE
Ventas ADD COLUMN ImporteTotal CURRENCY
En este ejemplo
se elimina el campo creado con la sentencia anterior.
ALTER TABLE
Ventas DROP COLUMN ImporteTotal
En este otro
ejemplo se agrega un índice externo a la tabla pedidos, este se basa en el
campo IDEmpleado y se refiere al campo IDEmpleado de la tabla Empleados, no es
necesario indicar el campo junto al nombre de la tabla en la cláusula
REFERENCES ya que IDEmpleado es la clave principal de la tabla Empleados.
ALTER TABLE
Pedidos ADD CONSTRAINT RelacionPedidos FOREIGN KEY (IDEmpleado) REFERENCES
Empleados (IDEmpleado)
En este ejemplo
se elimina el índice de la tabla Pedidos
ALTER TABLE
Pedidos DROP CONSTRAINT RelacionPedidos
BASE DE
DATOS EXTERNA CLAUSULA IN
Esta cláusula
permite accede a bases de datos externas, entre ellas dBase, Paradox o Btrieve,
permitiendo la conexión con una base de datos externa a la vez, se define base
de datos externa aquella que no es la activa, es recomendable para incrementar
el rendimiento y productividad adjuntar la base de dato externa a la actual y
trabajar con ella; es preciso agregar punto y coma (;) cuando la base de datos
no es Access además de encerar entre comillas simples, también se puede usar
DATABASE para referir a ellas por ejemplo:
FROM Tabla IN
‘[dBASE IV; DATABASE=C:DBVENTAS ]’
FROM Tabla IN
‘C:DBVENTAS’ ‘dBASE IV;’
Cuando se
requiere acceder a una base externa de Access se deber referenciar de la
siguiente forma:
SELECT Cliente FROM Clientes IN Ventas.accdb WHERE
Cliente LIKE ‘Day’
Cuando se
requiere acceder a una base externa de dBase III se deber referenciar de la
siguiente forma:
SELECT Cliente FROM Clientes IN ‘C:DBVENTAS’ ‘dBASE
III;’ WHERE Client
Cuando se requiere
acceder a una base externa de dBase IV se deber referenciar de la siguiente
forma:
SELECT Cliente FROM Clientes IN ‘C:DBVENTAS’ ‘dBASE
IV;’ WHERE Cliente LIKE ‘Day’

Cuando se
requiere acceder a una base externa de Paradox 3.x se deber referenciar de la
siguiente forma:

SELECT Cliente FROM Clientes IN ‘C:PARADOXVENTAS’
‘Paradox 3.x;’ WHERE Cliente LIKE ‘Day’
Cuando se
requiere acceder a una base externa de Paradox 4.x se deber referenciar de la
siguiente forma:
SELECT Cliente FROM Clientes IN ‘C:PARADOXVENTAS’
‘Paradox 4.x;’ WHERE Cliente LIKE ‘Day’
Cuando se
requiere acceder a una base externa de Btrieve se deber referenciar de la
siguiente forma:
SELECT Cliente FROM Clientes IN
‘C:BTRIEVEVENTASFILE.DDF’ ‘Btrieve;’ WHERE Cliente LIKE ‘Day’
CLAUSULA
WITH OWNERACCESS OPTION
En entornos de
base de datos con permisos de seguridad para grupos de trabajo es posible usar
la cláusula WITH OWNERACCESS OPTION y con ello se omiten permisos de ejecución;
de esta forma el usuario actual adquiere los derechos de propietario cuando se está
ejecutando la consulta, la sintaxis es la siguiente:
Instrucción SQL
WITH OWNERACCESS OPTION
Seguidamente se
expone un ejemplo de su uso, donde se deben obtener los datos de Fecha, Cliente
y Venta de la tabla Ventas omitiendo los permisos de ejecución con la cláusula
en estudio.
SELECT Fecha, Cliente, Ventas FROM Ventas ORDER BY
Fecha WITH OWNERACCESS OPTION
CLAUSULA
PROCEDURE
Se usa para crear
una consulta a la misma vez que se la ejecuta, en forma opcional se pueden definir
los parámetros de la misma, la sintaxis es la siguiente:
PROCEDURE
NombreConsulta Parametro1 tipo1, Paramentro2 tipo2, ParametroN tipoN;
ConsultaSQL
PROCEDURE: sirve
para crear una consulta a la vez que se ejecuta.
NombreConsulta:
nombre con el que se guarda la consulta en la base de datos.
Parametro1: es el
nombre del parametro1 de dicha consulta.
Parametro2: es el
nombre del parametro2 de dicha consulta.
ParametroN: es el
nombre del parametroN de dicha consulta.
Tipo: es el tipo
de datos del parámetro.
ConsulaSQL: es la
consulta que se desea grabar y ejecutar.
El siguiente
ejemplo crea una consulta que se denominará ListadoClientes y a su vez la
ejecuta requiriendo listar los clientes únicos de la tabla Ventas, ordenados
por Cliente.
PROCEDURE ListadoClientes; SELECT DISTINCTROW Clientes
FROM Ventas ORDER BY Clientes
El siguiente
ejemplo crea y ejecuta la consulta denominada ResumenVentas incorporando dos parámetros
uno es la Fecha Desde y el otro Fecha Hasta; cuyos tipos de datos son DATATIME;
la expresión SQL establece que se extraiga datos del campo Fecha, Codigo e
Importe agregando un campo denominado Año que se obtiene del campo fecha de
envío estableciendo el formato para mostrar el año solamente todo esto se debe
extraer dela tabla Ventas cuando el campo Fecha este entre los parámetros
FechaDesde y FechaHasta; ordenando los datos por Fecha en forma descendente.

PROCEDURE
ResumenVentas FechaDesde DATETIME, FechaHasta DATETIME; SELECT DISTINCTROW
Fecha, Codigo, Importe, Format (FechaEnvio,»yyyy») AS Año FROM Ventas
WHERE Fecha BETWEEN FechaDesde AND FechaHasta ORDER BY Fecha DESC

El vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlas, buscar en listbox mientras escribes en textbox, ordenar hojas libro excel por su nombre, conectar Excel con Access y muchos ejemplos más.


if (payload.eventType == ‘subscribe’) {
// Add code to handle subscribe event.
} else if (payload.eventType == ‘unsubscribe’) {
// Add code to handle unsubscribe event.
}
if (window.console) { // for debugging only
window.console.log(‘YT event: ‘, payload);
}
}

Continua en parte I Principales sentencias SQL

Continua en parte II Seleccionar Datos Comando SELECT

Continua en parte III Insertar, actualizar y eliminar Datos Comando INSERT, UPDATE DELETE

Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.

.

If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.
Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends