Anda di halaman 1dari 28

Edmundo A.

Cceres

Consultas y Vistas

2007
CONSULTAS Y VISTAS


1. Nociones preliminares

Consultas y vistas

Una consulta o una vista, similares en la mayora de sus aspectos, son una instruccin de un lenguaje
llamado SQL. Procesan datos de una o ms tablas de entrada, produciendo una salida con formato de ta-
bla, de existencia temporal. "Temporal" significa que VFP destruye esa salida automticamente cuando se
deja de usar. Por ello no se llama tabla, pues una tabla permanece grabada en disco, sino cursor, porque
existe solamente en la memoria interna. Esto no impide que en ocasiones se lo pueda convertir en tabla.
Los registros del cursor de salida pueden ser resultado: (a) de los campos de una tabla de entrada; (b)
de los campos de varias tablas de entrada, debidamente combinadas; (c) de resumir grupos de registros
de entrada, de una o varias tablas. Obviamente, deberemos precisar qu son combinaciones y grupos.
Los registros de salida pueden obtenerse sin orden alguno, o pueden ordenarse por uno o ms cam-
pos. A veces se necesita que una vista o consulta trabaje no con todos, sino solamente con algunos regis-
tros de las tablas de entrada. En este caso, hay que filtrar los registros de entrada. Los filtros son condi-
ciones que deben cumplir los registros de entrada para ser procesados por la consulta o la vista. Digamos
que es posible usar, como si fueran tablas de entrada, cursores resultantes de vistas previas.
Estas ideas irn aclarndose si introducimos algunos ejemplos. Sean dos tablas, Clientes y Depsitos,
cuyos contenidos se dan en la Figura 1. Como puede verse, Clientes tiene los datos personales de los
clientes y Depsitos los importes depositados por ellos.

Tabla Clientes
Cliente Nombre Domicilio Provincia CP Telfono
1 Ruiz, Pedro Salta 1080 N San Juan 5400 433-2550
2 Bustos, Estela San Martn 453 La Rioja 520-3027
3 Garca, Jos Jujuy 420 S San Juan 5400 427-5960

Tabla Depsitos
Cliente Depsito Fecha Importe
2 30127 10-06-2000 1200
1 30128 12-06-2000 350
1 30129 17-06-2000 800
2 30130 17-06-2000 420
3 30131 18-06-2000 715
2 30132 18-06-2000 420
3 30133 19-06-2000 507

Figura 1. Tablas Clientes y Depsitos

Ejemplo 1. Creemos una consulta que contenga los campos Nombre y Cliente, ordenados por Nombre.
En este caso, para "fabricar" la salida solamente har falta la tabla Clientes. El resultado de la consulta se-
r el mostrado por la Figura 2. Podemos ver que cada registro de salida ha sido formado por cada registro
de entrada. Las consultas y vistas permiten indicar los campos de entrada con los cuales queremos traba-
jar y por cules de ellos queremos ordenar los registros de salida.
EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
2

Nombre Cliente
Bustos, Estela 2
Garca, Jos 3
Ruiz, Pedro 1

Figura 2. Cursor salida de la consulta del Ejemplo 1

Ejemplo 2. Creemos una consulta con los campos Cliente, Nombre, Fecha e Importe, ordenada por Clien-
te. En este caso, es necesario usar campos de ambas tablas. Notemos que cada registro de la tabla Clien-
tes tiene varios registros correspondientes en la tabla Depsitos, como indica el campo en comn Cliente.
Cuando hay ms de una tabla de entrada, la correspondencia que advertimos visualmente se debe explici-
tar en la consulta. En SQL no se habla de relacin, sino de combinacin, queriendo decir que el resultado
requerido es una combinacin de campos de ambas tablas. La combinacin necesita algo en comn en
ambas tablas para poder lograrse, pero no requiere ndices, como pasa en las relaciones de VFP. El resul-
tado de la consulta ser el que muestra la Figura 3.

Cliente Nombre Fecha Importe
1 Ruiz, Pedro 12-06-2000 350
1 Ruiz, Pedro 17-06-2000 800
2 Bustos, Estela 10-06-2000 1200
2 Bustos, Estela 17-06-2000 420
2 Bustos, Estela 18-06-2000 420
3 Garca, Jos 18-06-2000 715
3 Garca, Jos 19-06-2000 507

Figura 3. Cursor salida de la consulta del Ejemplo 2

En este ejemplo, aunque la tabla Clientes tiene tres registros, aparece informacin de ellos en los siete
registros de salida. Esto se debe a que la consulta ha tomado el registro de Clientes cuyo campo Cliente
vale 1 y lo ha combinado con dos registros de Depsitos cuyos campos Cliente tienen igual valor. De la
misma manera ha combinado los dems registros. La Figura 4 muestra los campos que toma de una y otra
tabla de entrada, para lograr los resultados de la Figura 3. Advierta que el campo Cliente de la salida se
puede tomar de una u otra de las tablas de entrada.

Tabla Clientes Tabla Depsitos
Cliente Nombre Cliente Fecha Importe
1 Ruiz, Pedro 1 12-06-2000 350
1 17-06-2000 800
2 Bustos, Estela 2 10-06-2000 1200
2 17-06-2000 420
2 18-06-2000 420
3 Garca, Jos 3 18-06-2000 715
3 19-06-2000 507

Figura 4. Combinaciones de los registros de Clientes con los registros de Depsitos

El resultado de la vista o consulta es una "mezcla" o combinacin de campos de ambas tablas, cuando
coinciden en el valor del campo Cliente. De un modo ms general, y sin perder exactitud, podemos decir
que tambin se combinan los registros. Con mayor generalidad an, podemos hablar de combinacin de
EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
3
tablas, entendiendo que es el criterio que ellas deben observar para combinar sus registros.
La combinacin puede realizarse, como es de suponer, entre dos, tres, cuatro, etc. tablas, para lo cual
hay que observar una regla muy sencilla, que veremos luego.

Ejemplo 3. Creemos una vista como la del Ejemplo 2, pero solamente para los clientes 1 y 2. En este ca-
so, debemos filtrar los registros de entrada, para que ingresen a la vista solamente los registros de tales
clientes. El resultado ser el de la Figura 5.

Cliente Nombre Fecha Importe
1 Ruiz, Pedro 12-06-2000 350
1 Ruiz, Pedro 17-06-2000 800
2 Bustos, Estela 10-06-2000 1200
2 Bustos, Estela 17-06-2000 420
2 Bustos, Estela 18-06-2000 420

Figura 5. Cursor de salida de la consulta del Ejemplo 3

Ejemplo 4. Creemos una vista que resuma los depsitos de cada cliente. Por ahora queremos los campos
Cliente y la suma de Importe. Nuestra tabla de entrada ser Depsitos. Debemos resumir los registros de
entrada, es decir "agruparlos", por el campo Cliente. El resultado de la vista ser el de la Figura 6.

Cliente Sum _ A
1 1150
2 2040
3 1222

Figura 6. Cursor de salida de la vista del Ejemplo 4

Del ejemplo se infiere que, al agrupar, debemos indicar: (1) por qu campo queremos el agrupamiento
y (2) qu campos queremos resumir. Para agrupar hemos usado el campo Cliente. Para resumir podemos
usar funciones de suma, promedio, cuenta, valor mximo o valor mnimo. En este caso, hemos empleado
la expresin sum(importe), que la vista toma como un campo de salida.
En la Figura 6 se puede ver que el campo resumen tiene el nombre Sum_A. Esto se debe a que no le
hemos dado un nombre apropiado, dejando que la vista invente uno. Si hubiramos querido que se llama-
ra Total, deberamos haber usado la expresin sum(importe) as total.
En el ejemplo, sera ilgico incluir los dems campos de Depsitos, pues no hay forma de resumir los
nmeros de depsito ni las fechas. Esta falta de coherencia no quiere decir que la vista no pueda incluir-
los. De haberlo hecho, aparecera en ella el ltimo valor de tales campos en cada grupo.
Note, por otro lado, que el agrupamiento no est limitado a un solo campo, sino que puede usar varios,
los cuales se tratan jerrquicamente. Por ejemplo, si agrupa por dos campos, la vista har grupos por el
primer campo; y en cada grupo har subgrupos por el segundo campo.
Finalmente, observe la diferencia entre el agrupamiento de las vistas y consultas con el agrupamiento
de datos de los informes. En las vistas y consultas, al agrupar, necesariamente se produce un solo registro
de salida por cada grupo. As, en el Ejemplo 4, se ha producido un registro para el cliente 1, que tiene dos
depsitos, un registro para el cliente 2, que tiene tres depsitos, y un registro para el cliente 3, que tiene
dos depsitos. En los informes, por su parte, el agrupamiento permite dar un encabezado para el grupo, el
detalle de los registros que lo componen y un pie de grupo, que se usa normalmente para resumirlos.

EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
4
Ejemplo 5. Sea el mismo problema anterior, pero agregando los nombres de cliente. En este caso, habr
que usar las dos tablas. El resultado ser el de la Figura 7.

Cliente Nombre Total
1 Ruiz, Pedro 1150
2 Bustos, Estela 2040
3 Garca, Jos 1222

Figura 7. Cursor salida de la vista del Ejemplo 5

Condiciones de combinacin

Una condicin de combinacin es un requisito para combinar dos tablas. Si una consulta o vista usa
una sola tabla de entrada, no se puede definir ninguna condicin de combinacin. Pero si la vista incluye
dos o ms tablas de entrada, a partir de la segunda es necesario definir una condicin de combinacin por
cada tabla adicional.
De modo similar a una relacin permanente o temporal, cada condicin de combinacin une dos tablas.
Tiene el siguiente formato:
Tabla izquierda.Campo izquierdo Operador Tabla derecha.Campo derecho
Tabla izquierda, Tabla derecha son los nombres de dos tablas distintas, libres o de base de datos.
Tambin pueden ser vistas previas. La inclusin de los nombres de las tablas es necesaria para precisar
de dnde provienen los campos. Deben separarse de los campos con un punto.
Campo izquierdo, Campo derecho son dos campos, uno de cada tabla, que deben ser comparables.
Esto significa que ambos deben tener el mismo tipo de datos o tipos compatibles. Por ejemplo, si campo
izquierdo es de caracteres, campo derecho tambin debe serlo; si campo izquierdo es de fecha, campo
derecho debe ser de fecha o fecha-hora. No es necesario que ambos campos tengan el mismo nombre.
En una condicin de combinacin, adems de ser de tipo igual o compatible, los campos deben tener con-
tenidos que versen sobre lo mismo. Por ejemplo, podemos comparar nmeros de alumno de la tabla iz-
quierda con nmeros de alumno de la tabla derecha. No sera razonable comparar nmeros de alumno de
la tabla izquierda con sueldos de la tabla derecha. Los campos izquierdo y derecho pueden incluirse como
campos de salida en la vista o consulta, pero no es necesario que sea as. Su propsito es combinar las
tablas. Que se los incluya como salida depende de la informacin que se desea producir.
Operador es un operador relacional, como =, >, <, etc., que establece una comparacin entre campo
izquierdo y campo derecho. Prcticamente, el nico que tiene sentido es el operador =.
Por qu no usar relaciones, permanentes o transitorias, como las definidas en el Diseador de base
de datos o las trazadas en el entorno de un formulario o informe? Los diseadores de consultas y vistas
convierten la informacin que se les brinda a la instruccin Select del lenguaje SQL, no a comandos "nati-
vos" de VFP. SQL es una normativa para "interrogar" conjuntos de datos y obtener resultados muy flexi-
bles. Fue definida por expertos, incluyendo a los fabricantes de software. Con el tiempo, los fabricantes
fueron introduciendo la normativa SQL en su propio software. Dada su importancia y amplio uso, los fabri-
cantes de VFP desde hace mucho incluyeron instrucciones de SQL entre sus comandos, pero observando
las exigencias originales. SQL une dos tablas no por una relacin, sino por una condicin de combinacin.
Para aclarar qu es una condicin de combinacin, recurramos a la interseccin de dos conjuntos. La
interseccin se da cuando se produce igualdad de contenido en los campos izquierdo y derecho. Como ta-
les campos integran registros determinados, entenderemos que la interseccin incluye la totalidad de esos
registros. Los registros de tabla izquierda cuyo campo izquierdo no tiene igualdad con ningn contenido de
campo derecho quedan fuera de la interseccin, en el conjunto izquierdo. Los registros de tabla derecha
EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
5
cuyo campo derecho no tiene igualdad con ningn contenido de campo izquierdo quedan fuera de la inter-
seccin, en el conjunto derecho. Para ilustrar esto, usaremos las tablas mostradas en la Figura 8.

Tabla Izquierda Tabla Derecha
Socio Profesin Profesin Descripcin
Alberto 1 1 Ingeniera
Julin 2 3 Medicina

Figura 8. Tablas de ejemplo para los tipos de combinaciones

La interseccin de las tablas anteriores por el campo Profesin, da lugar a la ilustracin de la Figura 9.

Tabla Izquierda Interseccin

Socio Profesin Socio Profesin
Julin 2 Alberto 1

Tabla Derecha

Profesin Descripcin Profesin Descripcin
1 Ingeniera 3 Medicina



Figura 9. Interseccin de las tablas Izquierda y Derecha por el campo Profesin

A partir de la interseccin, se definen cuatro tipos de combinacin, segn los registros que se quieran
obtener: interna, izquierda, derecha y completa. Hay un quinto tipo, ninguna, usado para continuar una
combinacin compleja, cuyo tipo puede ser cualquiera de los cuatro primeros.

Combinacin interna. Trabaja nicamente con los registros de la interseccin. Si combinamos interna-
mente las tablas anteriores por el campo Profesin, queriendo como salida los campos Socio, Profesin y
Descripcin, el resultado ser el cursor de la Figura 10, con un solo registro.

Socio Profesin Descripcin
Alberto 1 Ingeniera

Figura 10. Cursor resultante de la combinacin interna

Combinacin izquierda. Trabaja con todos los registros izquierdos, ms los derechos de la interseccin.
Si unos y otros coinciden, produce registros de salida completos. Si los izquierdos no tienen igual en los
derechos, los registros resultantes tendrn contenido en los campos provenientes de la tabla izquierda; pe-
ro los provenientes de la tabla derecha sern nulos. Por ejemplo, si combinamos por izquierda ambas ta-
blas, el resultado ser el cursor de la Figura 11.

Socio Profesin Descripcin
Alberto 1 Ingeniera
Julin 2 .NULL.

Figura 11. Cursor resultante de la combinacin izquierda
EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
6
Combinacin derecha. Trabaja con todos los registros derechos, ms los izquierdos de la interseccin. Si
unos y otros coinciden, produce registros de salida completos. Si los derechos no tienen igual en los iz-
quierdos, los registros resultantes tendrn contenido en los campos provenientes de la tabla derecha; pe-
ro los provenientes de la tabla izquierda sern nulos. Por ejemplo, si combinamos por derecha ambas ta-
blas, el resultado ser el de la Figura 12.

Socio Profesin Descripcin
Alberto 1 Ingeniera
.NULL. 3 Medicina

Figura 12. Cursor resultante de la combinacin derecha

Combinacin completa. Obtiene todos los registros de ambas tablas. Si hay coincidencia entre los iz-
quierdos y derechos, los registros resultantes tendrn todos sus campos con los valores tomados de aqu-
llos. Si no la hay, los registros resultantes tendrn valores de los campos izquierdos o derechos, segn el
caso, y los dems campos nulos. Por ejemplo, si combinamos completamente ambas tablas, el resultado
ser el cursor de la Figura 13.

Socio Profesin Descripcin
Alberto 1 Ingeniera
Julin 2 .NULL.
.NULL. 3 Medicina

Figura 13. Cursor resultante de la combinacin completa

Ninguna. Hay veces en que hace falta ms de un campo para lograr una combinacin correcta entre dos
tablas. Estudie las tablas de la Figura 14, donde P es el cdigo de provincia y C el cdigo de ciudad.

Tabla Ciudades Tabla Socios
P C Ciudad P C Socio
1 1 Venado Tuerto 1 1 Pedro
1 2 Rosario 1 2 Alberto
2 1 Villa Mara 1 2 Alicia
2 2 Ro Cuarto 2 1 Juan
2 3 Villa Dolores 2 1 Gustavo
2 2 Ins

Figura 14. Tablas para ejemplificar el tipo Ninguna

Sea una vista que d como resultante los socios de cada ciudad. Usaremos los campos de entrada P,
C, Ciudad y Socio. Ordenaremos los registros de salida por los dos primeros campos.
Si establecemos una combinacin interna entre ambas tablas por P, obtendremos el resultado de la Fi-
gura 15. No es lo deseado, porque SQL combinar cada registro de Ciudades con los registros de Socios
que tienen igual valor en P. Por ejemplo, el registro de Venado Tuerto, de la provincia 1, con los registros
de Pedro, Alberto y Alicia; y el registro de Rosario, tambin de la provincia 1, otra vez con los registros de
Pedro, Alberto y Alicia. Si nos diramos por satisfechos, estaramos cometiendo un error.
Si establemos la combinacin interna por C, obtendremos el resultado de la Figura 16. Tampoco es lo
deseado, porque SQL combina cada de registro de Ciudades con los registros de Socios que tienen igual
valor en C. Por ejemplo, la ciudad de Venado Tuerto, codificada como 1, se combina con Pedro, Juan y
Gustavo y la ciudad de Villa Mara, tambin 1, tambin se combina otra vez con Pedro, Juan y Gustavo.
EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
7
Pero Pedro vive en la provincia de Santa Fe, y Juan y Gustavo en la provincia de Crdoba!
Como conclusin, es evidente que ninguna combinacin por un solo campo es suficiente para solucio-
nar nuestro problema. Si hiciramos dos combinaciones, ambas internas, una por P y otra por C, el resul-
tado sera ms errado, como ilustra la Figura 17.

P C Ciudad Socio

P C Ciudad Socio P C Ciudad Socio
1 1 Venado Tuerto Pedro 1 1 Venado Tuerto Pedro 1 1 Venado Tuerto Pedro
1 1 Venado Tuerto Alberto 1 1 Venado Tuerto Juan 1 1 Venado Tuerto Pedro
1 1 Venado Tuerto Alicia 1 1 Venado Tuerto Gustavo 1 1 Venado Tuerto Alberto
1 2 Rosario Pedro 1 2 Rosario Alberto 1 1 Venado Tuerto Alberto
1 2 Rosario Alberto 1 2 Rosario Alicia 1 1 Venado Tuerto Alicia
1 2 Rosario Alicia 1 2 Rosario Ins 1 1 Venado Tuerto Alicia
2 1 Villa Mara Juan 2 1 Villa Mara Pedro 1 2 Rosario Pedro
2 1 Villa Mara Gustavo 2 1 Villa Mara Juan 1 2 Rosario Pedro
2 1 Villa Mara Ins 2 1 Villa Mara Gustavo 1 2 Rosario Alberto
2 2 Ro Cuarto Juan 2 2 Ro Cuarto Alberto 1 2 Rosario Alberto
2 2 Ro Cuarto Gustavo 2 2 Ro Cuarto Alicia 1 2 Rosario Alicia
2 2 Ro Cuarto Ins 2 2 Ro Cuarto Ins 1 2 Rosario Alicia
2 3 Villa Dolores Juan 2 1 Vila Mara Juan
2 3 Villa Dolores Gustavo
Figura 16. Combinacin por C
2 1 Vila Mara Juan
2 3 Villa Dolores Ins 2 1 Vila Mara Gustavo
2 1 Vila Mara Gustavo
Figura 15. Combinacin por P
2 1 Vila Mara Ins
2 1 Vila Mara Ins
2 2 Ro Cuarto Juan
2 2 Ro Cuarto Juan
2 2 Ro Cuarto Gustavo
2 2 Ro Cuarto Gustavo
2 2 Ro Cuarto Ins
2 2 Ro Cuarto Ins
2 3 Villa Dolores Juan
2 3 Villa Dolores Juan
2 3 Villa Dolores Gustavo
2 3 Villa Dolores Gustavo
2 3 Villa Dolores Ins
2 3 Villa Dolores Ins



Figura 17. Dos combinaciones,
una por P y otra por C

La solucin al problema es combinar simultneamente por ambos campos, P y C. La combinacin debe
seguir siendo interna. Estamos ante el caso de una combinacin compleja, la cual, al igual que una expre-
sin compleja de cualquier tipo, se logra mediante el uso de los conectivos lgicos AND, OR, NOT. Para
nuestro caso, la combinacin compleja es

Ciudades.P = Socios.P AND Ciudades.C = Socios.C

Usando la combinacin anterior, el resultado ser el del la Figura 18, que es lo querido.

EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
8
P C Ciudad Socio
1 1 Santa Fe Pedro
1 2 Rosario Alberto
1 2 Rosario Alicia
2 1 Crdoba Juan
2 1 Crdoba Gustavo
2 2 Ro Cuarto Ins

Figura 18. Combinacin compleja por P y C.

Hasta aqu, lo que hay que hacer est resuelto. Otro problema es cmo escribir esta condicin en los
diseadores. Para ello, como veremos ms adelante, hay que usar la ficha Combinacin. Esta ficha exige
definir cada condicin simple componente de la condicin compleja en una lnea por separado. Para nues-
tro problema, habra que escribir lo siguiente en tal ficha, bajo los ttulos que se indican.

Tipo Nombre de campo Criterios Valor Lgico
Interna Ciudades.P = Socios.P AND
Ninguna Ciudades.C = Socios.C

El valor Ninguna en la segunda lnea indica que ella es una continuacin de la lnea anterior, la cual
tiene definido el valor Interna para toda la condicin compleja. El uso de la ficha Combinacin, aunque to-
dava no le resulte claro, ser tratado posteriormente. Por ahora, lo importante es que entienda cundo se
usa el tipo Ninguna.

Diferencias entre consultas y vistas

Aunque las consultas y vistas son similares en muchos aspectos, tienen las diferencias que siguen.

Las consultas pueden enviar sus resultados a un cursor con un nombre especfico, no al generado por
defecto, que se ve en la ventana Examinar. Tambin pueden mandar la salida a tablas permanentes, a
grficos, a impresora, etc. Las vistas no pueden hacer esto. Su salida siempre es un cursor que se vi-
sualiza en una ventana Examinar.

Los campos de salida de las vistas pueden ser modificados manualmente en la ventana Examinar, en-
viando las modificaciones a las tablas de entrada. Para ser coherentes con las variedades de formato,
mscara de entrada, ttulo, valor predeterminado, regla y mensaje de validacin que tienen las tablas,
los campos de salida que se van a enviar a ellas pueden configurarse con iguales variedades. Las con-
sultas no permiten modificaciones, es decir, son solamente de lectura.

Las vistas admiten parmetros, recurso que las hace muy flexibles. Las consultas no los admiten.

Las consultas se guardan en archivos independientes, que se pueden registrar en los proyectos. Las
vistas no tienen archivos propios, sino que residen en las bases de datos.

EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
9
2. Diseadores de consultas y vistas

Los diseadores de consultas y vistas son ventanas cuyo propsito es crear y modificar instrucciones
Select de SQL, no directamente, sino de un modo bastante sencillo. Las ventanas estn compuestas por
dos paneles, uno superior y otro inferior. Cuando se activa cualquiera de estos diseadores, aparece el
men Consulta en la barra de mens. Puede adems que aparezcan las barras de herramientas Disea-
dor de consultas o Diseador de vistas, segn corresponda.

Panel superior

El panel superior, o panel de entorno, se representan las tablas de entrada de la vista o consulta. Al
abrirse el diseador, automticamente se abre el dilogo Agregar tabla o vista, para incluir aqullas que
sean necesarias. Luego de cerrado, este dilogo puede abrirse en cualquier momento, de varias formas.
Recuerde que por tabla de entrada se entienden no slo tablas, sino tambin vistas. Cada tabla se repre-
senta en el panel como una pequea ventana cuyo ttulo es el nombre de la tabla y cuyo contenido son los
campos, uno por lnea. La primera lnea es un asterisco, que representa todos los campos. El tamao de
cada ventana se puede cambiar por arrastre. Dado que, si se agregan varias tablas, es necesario definir
condiciones de combinacin entre ellas, stas se representan en el panel de entorno como lneas que
unen parejas de tablas por los campos de combinacin. Las tablas y lneas pueden seleccionarse hacien-
do click sobre ellas. Ambas pueden eliminarse seleccionndolas y pulsando Delete. Para crear una condi-
cin de combinacin, se puede arrastrar del campo conceptualmente izquierdo al conceptualmente dere-
cho, no importa cmo estn ubicadas las tablas en el panel. Dando doble click sobre una lnea se activa el
dilogo Condicin de combinacin.
El tamao del panel superior se puede ser aumentar, de modo que ocupe toda la ventana del disea-
dor. Luego se puede reducir al tamao inicial. Para hacer esto hay varios procedimientos, siendo el ms
sencillo dar doble click en el panel, donde no haya tablas ni lneas.

Panel inferior

El panel inferior est formado por varias fichas, cada una con su nombre, las cuales permiten definir los
campos, filtros, etc., para disear la vista o consulta. Las fichas son comunes a consultas y vistas, excepto
Criterios de actualizacin, exclusiva de las vistas. Las fichas son las siguientes.

Campos. Sirve para establecer qu campos de entrada, funciones de agregados y otras expresiones de-
ben ser procesados por la consulta o vista, produciendo campos de salida. Las funciones de agregados, o
de agrupamiento, o de conjuntos, son sum( ), count( ), avg( ), max( ) y min( ), que se emplean para produ-
cir un valor nico a partir de varios. La palabra "agregado" se usa como sinnimo de grupo.

Combinacin. Sirve para crear y modificar condiciones de combinacin, para aparear los registros de dos
tablas de entrada.

Filtro. Sirve para definir las condiciones que deben cumplir los registros de entrada para ser considerados
por la consulta o vista.

Ordenar por. Sirve para indicar los campos por los cuales ordenar los registros resultantes. Slo se puede
ordenar por campos de los registros de salida (campos seleccionados).

Agrupar por. Sirve para indicar los campos que se utilizarn para formar grupos. Un grupo es un conjunto
de registros con igual contenido en tales campos. Cada grupo da lugar a un solo registro de salida. Los
EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
10
campos de agrupacin son de entrada (campos disponibles), que pueden o no aparecer en la salida.

Criterios de actualizacin. Sirve para definir las condiciones bajo las cuales se actualizarn las tablas de
entrada, cuando se modifiquen los campos de una vista. Esta ficha es exclusiva del Diseador de vistas.

Varios. Sirve para establecer si se admiten registros de salida duplicados, cuntos registros de salida se
desean o qu porcentaje de ellos. Dos registros se consideran duplicados cuando los valores de todos sus
campos, uno a uno, son iguales.

3. Fichas de los diseadores

Campos

Esta ficha permite indicar los campos que se tomarn de las tablas entrada, y tambin definir funciones
de agregados y otras expresiones, todo lo cual servir para preparar los campos de los registros de salida.
Es comn a ambos diseadores. Sus componentes son los siguientes.

Campos disponibles. Es un cuadro de lista con todos los campos de todas las tablas y vistas incluidas en
el panel de entorno. Para incluir uno de estos campos en la consulta o vista, primero hay que ubicarlo en
la lista. Luego se puede: (1) seleccionarlo y oprimir el botn Agregar; (2) darle doble click; (3) arrastrarlo
hasta Campos seleccionados. Otra forma de hacer lo mismo es trabajar con el panel de entorno. Primero
hay que ubicar el campo en la tabla. Luego se puede: (4) darle doble click; (5) arrastrarlo hasta Campos
seleccionados. Cualquiera de estos procedimientos agrega el campo elegido a Campos seleccionados y
atena el color del campo en Campos disponibles.

Funciones y expresiones. Es un cuadro de texto que permite escribir una expresin que se incluir como
campo en los registros de salida. Para facilitar la creacin de la expresin, a la derecha del cuadro de texto
hay un botn con tres puntos que invoca al Generador de expresiones.
Por ejemplo, si quiere calcular un descuento del 10 por ciento de un supuesto campo Importe, deber es-
cribir la expresin 0.1*importe o importe*0.1. Esto producir un campo calculado que se agregar al cur-
sor resultante. Como no le ha dado nombre, VFP inventar uno. Para darle un nombre significativo, por
ejemplo, debe escribir 0.1*importe as descuento, lo que producir que el campo se llame Descuento en el
cursor de salida. Si quiere el promedio del campo Importe, con el nombre Promedio, deber escribir la ex-
presin avg(importe) as promedio. Una vez escrita la expresin, para agregarla a Campos seleccionados
hay que dar click en el botn Agregar.
Si por alguna razn quiere incluir un campo con un nombre diferente al que tiene en la tabla, use Fun-
ciones y expresiones para escribir el nombre del campo, la palabra as y el nombre con que desea que
aparezca en la salida.

Campos seleccionados. Es un cuadro de lista con los campos que se desean como resultado de la con-
sulta o vista, uno por lnea. Como se ha visto, stos pueden ser los mismos campos de las tablas de en-
trada, pero tambin pueden ser funciones o expresiones, con o sin nombre. Cada lnea va acompaada
por un botn con una flecha . Cada botn sirve para arrastrar el campo correspondiente hacia arriba o
abajo, con lo cual se modifica su posicin relativa con respecto a los dems campos.

Agregar. Es un botn de comando que agrega a Campos seleccionados el campo o campos selecciona-
dos en Campos disponibles o la expresin escrita en Funciones y expresiones.

Agregar todos. Es un botn de comando que agrega todos los campos de Campos disponibles a Campos
EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
11
seleccionados. Si solamente se quieren agregar todos los campos de una tabla, se debe ubicar el asteris-
co que aparece como primera lnea de la tabla en el panel de entorno y arrastrarlo a Campos selecciona-
dos, o darle doble click.

Quitar. Es un botn de comando que elimina el campo o campos que se hayan seleccionado en Campos
seleccionados. Si se trata de campos de una tabla, son devueltos a Campos disponibles, lo cual se advier-
te porque toman el color habitual. Si se trata de otra expresin, es devuelta a Funciones y expresiones.

Quitar todos. Es un botn de comando que elimina todos los campos de Campos seleccionados.

Propiedades. Es un botn de comando que activa el dilogo Propiedades del campo de la vista. Este di-
logo tiene opciones anlogas a las que aparecen en la ficha Campos del Diseador de tablas, cuando se
modifica o crea una tabla de base de datos, no una tabla libre. Estas opciones estn debajo de donde se
definen los nombres de campo, tipos, tamaos, decimales, etc. El botn Propiedades slo est disponible
en el Diseador de vistas. Dado que una vista permite modificar los campos de salida y enviar los cambios
a las tablas de entrada, es posible validar lo que se ingresa a ellos, darles un formato, una mscara de en-
trada, etc.

Combinacin

Esta ficha muestra las condiciones de combinacin entre parejas de tablas de entrada, generadas cada
vez que se agrega una segunda tabla, una tercera, etc., al panel de entorno. Tambin permite crear nue-
vas condiciones o modificar las existentes. Si el panel de entorno tiene una sola tabla, esta ficha se ver
en blanco. La ficha es comn a ambos diseadores. Sus componentes son los siguientes.

Movimiento. Es un botn con una flecha , que aparece junto a cada condicin. Se lo puede arrastrar
hacia arriba o abajo, cambiando la posicin de la condicin asociada con respecto a las dems. La posi-
cin de las condiciones es de importancia fundamental para que la consulta o vista trabaje bien. Aunque
estn acertadamente definidos todos los componentes de una consulta o vista, a veces no se obtienen los
resultados esperados por la incorrecta secuencia de estas condiciones.

Condicin. Tiene forma de flecha , una por condicin. Al dar click sobre alguna, se activa el dilogo
Condicin de combinacin para la condicin correspondiente.

Tipo. Es un cuadro combinado que sirve para elegir un tipo de condicin: Ninguna, Interna, Derecha, Iz-
quierda y Completa. Para una discusin sobre los tipos, vea Condiciones de Combinacin.

Nombre de campo. Es un cuadro combinado que presenta una lista de campos de la tabla izquierda,
donde se puede elegir el campo izquierdo de la condicin. Si sta se cre en el dilogo Condicin de com-
binacin, Nombre de campo es inaccesible. Si se est creando una condicin, el cuadro presenta una lista
de todos los campos de todas las tablas de entrada. Hay adems una ltima entrada que permite crear
una expresin, para lo cual se activa automticamente el Generador de expresiones.

No. Es un botn que, al ser activado, invierte el criterio de la condicin. Por ejemplo, si el criterio fuera =,
activar el botn dara No =, es decir, distinto. La activacin del botn se ve como una tilde. Slo es accesi-
ble cuando se crea una condicin.

Criterios. Es un cuadro combinado que presenta una lista de operadores relacionales. Slo es accesible
cuando se crea una condicin. Si la condicin se cre en el dilogo Condicin de combinacin, el operador
siempre es =. Los operadores relacionales son iguales a los de la ficha Filtro, que se trata ms adelante.
EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
12
Aunque estn disponibles todos los operadores, el que en la prctica resulta ms lgico es =. Sin embar-
go, los dems operadores tambin funcionan. Sean por ejemplo, las antiguas tablas Clientes y Depsitos
de la Figura 1, que hemos reducido en la Figura 19, para simplificar los resultados.

Tabla Clientes
Cliente Nombre Domicilio Provincia CP Telfono
1 Ruiz, Pedro Salta 1080 N San Juan 5400 433-2550
2 Bustos, Estela San Martn 453 La Rioja 520-3027
3 Garca, Jos Jujuy 420 S San Juan 5400 427-5960

Tabla Depsitos
Cliente Depsito Fecha Importe
1 30128 12-06-2000 350
2 30127 10-06-2000 1200
3 30131 18-06-2000 715

Figura 19. Tablas Clientes y Depsitos reformuladas

Sea que queremos una vista (o consulta) con los campos Cliente as Cliente_izquierdo y Nombre de la
tabla Clientes y los campos Cliente as Cliente_derecho e Importe de la tabla Depsitos. Si combinamos
por los campos Cliente, con operador =, el resultado ser el de la Figura 20.

Cliente_izquierdo Nombre Cliente_derecho Importe
1 Ruiz, Pedro 1 350
2 Bustos, Estela 2 1200
3 Garca, Jos 3 715

Figura 20. Combinacin con el operador =

Pero si combinamos, por ejemplo, con operador No =, el resultado ser el de la Figura 21.

Cliente_izquierdo Nombre Cliente_derecho Importe
1 Ruiz, Pedro 2 1200
1 Ruiz, Pedro 3 715
2 Bustos, Estela 1 350
2 Bustos, Estela 3 715
3 Garca, Jos 1 350
3 Garca, Jos 2 1200

Figura 21. Combinacin con el operador No =

La Figura 21 muestra que el operador funciona bien. El problema es, cmo darle sentido al resultado?
En algunas ocasiones difciles de imaginar, puede ser necesario obtener un resultado semejante.

Valor. Es un cuadro combinado que lista los todos los campos de todas las tablas, excepto aqullos de la
tabla que ha servido para elegir el campo izquierdo en Nombre de campo, porque una tabla no puede
combinarse consigo misma. Hay tambin una ltima entrada que permite crear una expresin, para lo cual
se activa automticamente el Generador de expresiones. Si la condicin fue creada por el dilogo Condi-
cin de combinacin, el cuadro Valor es inaccesible.

EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
13
Lgico. Es un cuadro combinado que permite agregar o eliminar un operador AND u OR entre dos condi-
ciones, convirtindolas en una condicin compleja. Vea Condiciones de combinacin.

Insertar. Es un botn de comando que intercala una condicin en blanco, en el lugar de la condicin se-
leccionada, desplazando sta y las siguientes hacia abajo. Este hueco debe ser llenado o eliminado,
pues la consulta o vista no acepta condiciones indefinidas.

Quitar. Es un botn de comando que elimina la condicin seleccionada.

Filtro

Esta ficha permite definir condiciones que filtren los registros de entrada. Todo registro que satisfaga
las condiciones pasar el filtro y entrar a la consulta o vista para su procesamiento. En caso contrario, no
ser tenido en cuenta. La ficha es comn a ambos diseadores. Sus componentes son los siguientes.

Movimiento. Es un botn con una flecha . Arrastrndolo hacia arriba o abajo se cambia la posicin rela-
tiva de la condicin filtro con respecto a los dems.

Nombre de campo. Es un cuadro combinado con todos los campos de todas las tablas de entrada. Hay
tambin una ltima entrada que permite crear una expresin, activando automticamente el Generador de
expresiones. En Nombre de campo se define el primer operando de la condicin filtro. Dado que los filtros
actan sobre los campos de entrada, el campo filtrado puede o no incluirse como campo de salida.

No. Es un botn que, al ser activado, invierte el criterio de la condicin. La activacin del botn se ve como
una tilde.

Criterios. Es un cuadro combinado que lista los siguientes operadores relacionales.

= Ambos operadores deben tener el mismo valor. Por ejemplo, cliente = 132 tendr en cuenta so-
lamente los registros cuyo campo Cliente contenga el valor 132.

Like El primer operando debe tener caracteres iniciales que coincidan con los caracteres del segun-
do. Por ejemplo, nombre Like Gu dejar pasar solamente los registros cuyo campo Nombre
contenga Gutirrez, Guzmn, Guerrero, y similares.

== El primer operando debe tener un contenido exactamente igual al contenido del segundo, carc-
ter a carcter. Por ejemplo, nombre == Ruiz, Pedro tomar en cuenta solamente los registros
cuyo campo Nombre contenga Ruiz, Pedro, pero ignorar los que tengan el valor Ruiz, Pedro
Juan o 'Ruiz, Pedro Luis', o cualquier otro valor, como 'Quiroga, Esteban'.

> El primer operando debe tener un contenido mayor que el contenido del segundo. Por ejemplo,
importe > 5000 solamente considerar los registros cuyo campo Importe tenga contenidos ma-
yores que 5000.

>= El primer operando debe tener un contenido mayor o igual al contenido del segundo. Por ejem-
plo, importe >= 5000 slo considerar los registros cuyo campo Importe contenga 5000 ms.

< El primer operando debe tener un contenido menor que el contenido del segundo. Por ejemplo,
importe < 5000 slo considerar los registros cuyo campo Importe tenga un contenido menor
que 5000.
EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
14

<= El primer operando debe tener un contenido menor o igual al contenido del segundo. Por ejem-
plo, importe <= 5000 solamente considerar los registros cuyo campo Importe sea 5000 o me-
nos.

Is NULL El primer operando debe tener un contenido nulo. Si un campo de caracteres tiene un espacio o
una tabulacin, por ejemplo, tiene un contenido definido. Si un campo numrico tiene un cero,
tambin es un contenido definido. Contenido nulo es la carencia de contenido, que VFP y SQL
representan como .NULL.

Between El contenido del primer operando debe caer en el intervalo establecido por el segundo. En el se-
gundo operando, los dos valores del intervalo deben separarse por una coma. Por ejemplo, fe-
cha Between {01/01/2000},{31/12/2000} tomar en cuenta solamente los registros cuyo campo
Fecha contengan fechas del ao 2000.

In El primer operando debe tener un valor que coincida con uno de los valores listados en el se-
gundo. En el segundo operando, los valores de la lista se separan con comas. Por ejemplo, fac-
tura In 10, 210, 300, 1910, tomar en cuenta solamente los registros cuyo campo Factura con-
tengan valores 10, 210, 300 1910.

Negando estos operadores mediante el botn No, se amplan las posibilidades de comparacin.
Note que los operadores Between e In son idnticos en propsito a las funciones Between( ) e Inlist( )
de VFP. La diferencia es dnde se coloca el primer operando. En los operadores, se coloca en Nombre de
campo. En las funciones, se coloca dentro de los parntesis, en primer lugar.

Ejemplo. Es un cuadro de texto que sirve para definir el segundo operando de la condicin. Generalmente
es un valor literal, como un nmero, una fecha o una expresin de caracteres concretas. En el caso de vis-
tas, se pueden definir parmetros, que son nombres precedidos por el signo de interrogacin. Como los
parmetros no tienen un valor literal, podra pensarse que la vista no se puede ejecutar. Sin embargo, al
comenzar la ejecucin de la vista, se solicita un valor literal para cada parmetro. Esto da gran flexibilidad,
porque la vista termina de completar sus definiciones en el momento de la ejecucin.

M/m. Es un botn de opcin. Cuando est activado, se ve con una tilde. En este caso, las comparaciones
se realizan respetando literalmente las maysculas y minsculas del segundo operando. Por ejemplo, art-
culo = Ca filtrar los registros cuyo campo Artculo sea Cama o Carro, pero ignorar aqullos que con-
tengan cama y carro.

Lgico. Es un cuadro combinado que permite agregar o quitar un operador AND u OR entre dos condicio-
nes. Las opciones son Ninguna, AND y OR. Si se elige Ninguna o no se usa este cuadro combinado, se
genera un operador AND en la instruccin Select.

Insertar. Es un botn de comando que intercala una lnea en blanco donde est la condicin selecciona-
da, desplazando a sta y a las restantes hacia abajo. El hueco debe ser llenado o eliminado, pues no se
aceptan condiciones indefinidas.

Quitar. Es un botn de comando que elimina la condicin seleccionada.

Ordenar por

Esta ficha permite ordenar los registros de salida por los campos que se indiquen. El ordenamiento se
EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
15
puede hacer nicamente por campos de salida, pues lo que se ordena son los registros del cursor resul-
tante. Recuerde que los campos de salida pueden corresponder a campos de entrada; pero tambin pue-
den ser funciones de agregados u otras expresiones. La ficha es comn a ambos diseadores. Sus com-
ponentes son los siguientes.

Campos seleccionados. Es un cuadro de lista con los campos de salida, es decir, aqullos incluidos en el
cuadro de igual nombre de la ficha Campos. Sirve para seleccionar un campo y usarlo como criterio de or-
denacin. Como sucede con los ndices, la ordenacin de registros puede ser por varios campos. En esta
situacin, los campos se toman jerrquicamente. Esto significa que se ordena por el campo de mayor je-
rarqua, formando lotes de registros. Cada lote tiene el mismo valor en ese campo. Cada lote, a su vez, se
ordena por el campo siguiente en jerarqua, formando sublotes. Cada sublote tiene el mismo valor en tal
campo. El proceso es igual, si hay tres, cuatro, etc., campos ordenadores. La diferencia con los ndices es
que cada campo ordenador puede tener su propio sentido, ascendente o descendente. Esto no es posible
con los ndices, ya que el sentido se aplica a la totalidad de los campos que componen la expresin.

Criterios de ordenacin. Es un cuadro de lista con los campos que se van a usar como criterios para or-
denar los registros de salida. Cada campo va acompaado a la izquierda por una flecha o , que indican
orden ascendente o descendente. La flecha es una indicacin visual, no un botn. El sentido se establece
con Opciones de orden. Tambin cada campo va acompaado por un cuadro de movimiento, a la izquier-
da de la flecha. Este cuadro puede ser arrastrado hacia arriba o abajo, variando la ubicacin relativa del
campo ordenador dentro de la lista. Esto es importante, puesto que la jerarqua de los campos ordenado-
res obedece a su ubicacin relativa: el que est ms arriba es el primero en jerarqua, el que sigue el se-
gundo en jerarqua, etc.

Opciones de orden. Es un grupo de opciones que permite dar el sentido de ordenacin a cada campo or-
denador. Tiene dos botones de opcin, Ascendente y Descendente.

Ascendente. Establece que el campo seleccionado en Criterios de ordenacin sea ordenado en sen-
tido ascendente.

Descendente. Establece que el campo seleccionado en Criterios de ordenacin sea ordenado en
sentido descendente.

Agregar. Es un botn de comando que agrega el campo seleccionado en Campos seleccionados a Crite-
rios de ordenacin. Se obtiene igual resultado si se da doble click sobre el campo a agregar.

Quitar. Es un botn de comando que elimina el campo seleccionado en Criterios de ordenacin.

Agrupar por

Esta ficha permite agrupar los registros de entrada, produciendo en la salida un solo registro por cada
grupo. Esta idea debe quedar bien clara: si una vista o consulta usa agrupacin, obtiene un registro de sa-
lida por cada grupo.
Las Figuras 22, 23 y 24 ejemplifican cmo se las arregla SQL para obtener, a partir de la tabla de en-
trada Depsitos, una salida con lo comprado por los distintos clientes. Para ello se debe agrupar por Clien-
te, y se debe incluir en la salida un campo con la suma de lo comprado por cada uno, por ejemplo,
sum(importe) as total.
La tabla Depsitos, ya conocida, es la que muestra la Figura 22.
El proceso que sigue SQL es muy lgico. Primero ordena los registros de entrada por Cliente, para ob-
EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
16
tener los distintos grupos. Esto lo muestra la Figura 23, aunque en la realidad esto no se ve, porque es un
proceso interno.
Tabla Depsitos
Cliente Depsito Fecha Importe
2 30127 10-06-2000 1200
1 30128 12-06-2000 350
1 30129 17-06-2000 800
2 30130 17-06-2000 420
3 30131 18-06-2000 715
2 30132 18-06-2000 420
3 30133 19-06-2000 507

Figura 22. Tabla Depsitos, tal como est grabada.

Tabla Depsitos, ordenada por Cliente
Cliente Depsito Fecha Importe
1 30128 12-06-2000 350
1 30129 17-06-2000 800
Grupo del cliente 1
2 30127 10-06-2000 1200
2 30130 17-06-2000 420 Grupo del cliente 2
2 30132 18-06-2000 420
3 30131 18-06-2000 715
3 30133 19-06-2000 507
Grupo del cliente 3

Figura 23. Tabla Depsitos, ordenada por Cliente, obteniendo tres grupos

Luego, SQL produce los registros de salida, calculando el resultado de la funcin de agregado
sum(importe) as total, que ocupar un campo, como muestra la Figura 24, que es lo que se observar en
la ventana Examinar.

Cliente Total
1 1150
2 2040
3 1222

Figura 24. Cursor de salida, con un registro por cada grupo

El agrupamiento tiene sentido cuando el registro de salida correspondiente a un grupo de registros de
entrada los resume de algn modo. El resumen puede ser: (1) contar cuntos son los registros o los cam-
pos no nulos; (2) sumar o promediar campos numricos; (3) encontrar el valor menor o mayor contenido
en campos numricos, de caracteres o de fecha. Para lograr estos resmenes, existen las funciones de
agregados. En el ejemplo anterior, la funcin usada para obtener los totales de cada cliente fue
sum(importe) as total.
La ficha Agrupar por es comn a ambos diseadores. Sus componentes son los siguientes.

Campos disponibles. Es un cuadro de lista con todos los campos de las tablas de entrada ms todas las
funciones definidas mediante Funciones y expresiones de la ficha Campos. Sirve para seleccionar un
campo o expresin y usarlo como criterio de agrupamiento. El agrupamiento, en realidad, es una ordena-
cin interna, ya que slo se pueden formar grupos si los registros estn ordenados. Es posible agrupar por
EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
17
uno o ms campos o expresiones. Es importante observar que el agrupamiento se hace con los registros
de entrada, no con los de salida. Por esta razn, en Campos disponibles aparecen todos los campos de
todas las tablas de entrada.
Para mayor claridad, veamos otro ejemplo. Sean las tablas de la Figura 25.

Tabla Ventas Tabla Clientes
Cliente Venta Cliente Nombre Domicilio
1 200 1 Mnica Rioja 49 S
1 150 2 Esteban Jujuy 320 N
2 100
2 200
2 300

Figura 25. Tablas para ejemplificar agrupamientos

Queremos una vista con los campos Cliente, sum(Venta) as Vendido, Nombre y Domicilio. La condicin
de combinacin debe establecerse por los campos Cliente de ambas tablas. Ordenemos la salida por
Nombre, en sentido ascendente. Agrupemos por Cliente. En este caso, el campo agrupador tambin es un
campo de salida, pero podra no serlo. El resultado de la vista es el de la Figura 26. Observe que se ha ob-
tenido un solo registro para cada valor de Cliente y que los registros estn ordenados por Nombre.

Cliente Vendido Nombre Domicilio
2 600 Esteban Jujuy 320 N
1 350 Mnica Rioja 49 S

Figura 26. Salida donde el campo ordenador aparece como salida.

Creemos otra vista similar, pero sin el campo Cliente en la salida. El lector podr notar que, al definir
agrupamiento, los campos agrupadores se colocan automticamente como campos de salida; pero luego
los podemos quitar. El resultado es el de la Figura 27. Como el agrupamiento se sigue haciendo por Clien-
te, tambin se obtiene el resumen de los registros de entrada, aun cuando tal campo no figure en la salida.

Vendido Nombre Domicilio
600 Esteban Jujuy 320 N
350 Mnica Rioja 49 S

Figura 27. Salida donde el campo ordenador no aparece como salida.

Cuando se agrupa por varios campos, stos se toman jerrquicamente. Primero se agrupa por el cam-
po de mayor jerarqua, formando lotes de registros. Cada lote tiene el mismo valor en ese campo. Cada lo-
te, a su vez, se agrupa por el campo siguiente en jerarqua, formando sublotes. Cada sublote tiene el mis-
mo valor en tal campo. El proceso es igual, si hay tres, cuatro, etc., campos agrupadores.

Campos agrupados. Es un cuadro de lista donde se pueden incluir cualquier campo de entrada, funcio-
nes de agregados y otras expresiones, es decir, cualquier campo disponible. Si hay varios agrupadores, la
jerarqua viene dada por la posicin de cada uno en Campos agrupados. El que est ms arriba es el de
mayor jerarqua; el siguiente es el de jerarqua de segundo orden; y as. Junto a cada agrupador hay un
cuadro de movimiento que se puede arrastrar hacia arriba o abajo, modificando la ubicacin relativa del
agrupador con respecto a los dems.

EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
18
Agregar. Es un botn de comando que agrega el campo o expresin seleccionado en Campos disponibles
a Campos agrupados. La transferencia se puede lograr tambin haciendo doble click sobre el campo o ex-
presin o arrastrndolo hacia Campos agrupados.

Quitar. Es un botn de comando que elimina el agrupador seleccionado en Agrupar por campos.

Condiciones. Es un botn de comando que activa el dilogo Condiciones. Este dilogo es similar a la fi-
cha Filtro, con una diferencia en cuanto a lo que afectan. La ficha Filtro permite definir filtros sobre los re-
gistros de entrada. El dilogo Condiciones permite definir filtros sobre los registros de salida resultantes del
agrupamiento. As, si filtrramos mediante este dilogo el ejemplo de la Figura 26, con la condicin
sum(Venta) > 500, slo veramos el primer registro, el del cliente 2.
Filtrar el total comprado por cada cliente slo se puede hacer en el resultado, porque las ventas indi-
vuales de la tabla Ventas de la Figura 25 son todas menores a 500. Es muy importante que el lector ad-
vierta esta diferencia, lo que le har usar adecuadamente la ficha Filtro y el botn Condiciones.

Criterios de actualizacin

Los cursores resultantes de las vistas pueden ser modificados, como se hace con las tablas en la ven-
tana Examinar. Esto no sucede con los cursores resultantes de las consultas, que son inmodificables en
esa ventana. El lector puede preguntar qu sentido tiene modificar una vista, dado que su eliminacin au-
tomtica al ser cerrada perdera para siempre todos los cambios. La respuesta es que, mediante la ficha
Criterios de actualizacin, puede lograrse que los cambios introducidos en la vista se transfieran a las ta-
blas de entrada. Para ejemplificar, considere la Figura 28.

Tabla Rendimientos Tabla Alumnos
Matrcula Ao ndice Matrcula Nombre Domicilio
1 2001 85 1 Mnica Rioja 49 S
1 2002 70 2 Esteban Jujuy 320 N
2 2001 90
2 2002 85
2 2003 90

Cursor de salida
Matrcula_a Ao ndice Matrcula_b Nombre
1 2001 85 1 Mnica
1 2002 70 1 Mnica
2 2001 90 2 Esteban
2 2002 85 2 Esteban
2 2003 90 2 Esteban

Figura 28. Tablas para ejemplificar criterios de actualizacin

Puede ver que, en la salida, se ha incluido dos veces la matrcula: Matrcula_a proviene de la tabla
Rendimientos y Matrcula_b de la tabla Alumnos. El subrayado y la letra que sigue a cada nombre de
campo son agregados automticamente, para diferenciarlos, dado que se han agregado sin clusula as.
Parece una redundancia, pero las matrculas repetidas son necesarias para las explicaciones siguientes.
Si en el cursor resultante cambiamos el valor del campo ndice y queremos que ese cambio se refleje
en la tabla Rendimientos, deberemos definir tal campo como actualizable. Por ejemplo, si en el registro
con Matrcula_a igual a 1 y Ao igual a 2001 cambiamos 85 por 80, estaremos cambiando el registro co-
EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
19
rrespondiente de Rendimientos. Tambin tendremos que indicar que el registro a modificar en Rendimien-
tos debe ser ubicado por los campos Matrcula_a y Ao, que se tomarn como claves para establecer la
correspondencia entre el registro de la vista y el registro de la tabla Rendimientos. Matrcula_a, por s solo,
no permite ubicar cul es exactamente el registro a modificar, porque hay dos matrculas 1. Por esto hay
que ampliar la clave, usando el campo Ao. El campo Ao por s solo tampoco puede servir para individua-
lizar el registro a modificar en la tabla Rendimientos, porque aparece dos veces.
Como queremos actualizar campos de entrada, los campos correspondientes en la salida deben ser
originados estrictamente por ellos, no por funciones de agregados, ni por cualquier otra expresin, ni por
agrupamientos. Dado que los registros de salida pueden estar compuestos por campos provenientes de
varias tablas de entrada, la actualizacin se har con precisin en la tabla de donde provenga el campo
que se modifica, no en las otras. Esto explica por qu hay que introducir valores clave de cada tabla a mo-
dificar, aunque se repitan en el resultado.
Tambin podramos hacer actualizable el campo Nombre de la tabla Alumnos. En este caso, la clave
debe ser Matrcula_b. Vemos que Mnica y Esteban aparecen en varios registros de salida. Si queremos
cambiar Mnica por Gloria, lo hagamos en una sola lnea. Las dems aparecern con el valor viejo, Mni-
ca, aunque realmente la modificacin se ha producido en la tabla original. El cursor de salida no se actuali-
za en los restantes registros de Mnica, salvo que cerremos la ventana Examinar y volvamos a ejecutar la
vista. Si intentamos cambiar todas las lneas de Mnica por Gloria, se producir un conflicto de actualiza-
cin, tema complicado que no veremos. Basta con seguir el consejo de elegir uno de los registros de M-
nica para realizar en l los cambios.
La ficha Criterios de actualizacin sirve para indicar cules campos de entrada sern actualizados
cuando los campos de salida correspondientes sean modificados y cules sern las claves. Es una ficha
exclusiva del Diseador de vistas. Sus componentes son los siguientes.

Tabla. Es un cuadro combinado que permite seleccionar una tabla de entrada cuyos campos pueden ser
modificados a travs de los correspondientes campos de la vista. Cuando se elige una tabla, sus campos
son los nicos que se ven en Nombre de campo. Cuando se termina con una tabla de entrada, se puede
seleccionar otra. La opcin Todas las tablas muestra todos los campos de todas las tablas en Nombre de
campo, lo cual puede resultar incmodo, por la extensin de la lista de campos.

Restablecer claves. Es un botn de comando que selecciona los campos de ndice principal de las tablas
como claves para la vista, lo cual se ve como tildes en la columna Clave del cuadro Nombre de Campo,
junto a los campos correspondientes. Las claves sirven para buscar en la tabla de entrada el registro que
contiene el campo cuyo correspondiente se modifica en la vista. Si el ndice principal est construido por
varios campos y se incluyen todos ellos en la vista, todos ellos son tildados. Si las tablas no tienen un ndi-
ce principal, no hay efecto alguno. En este caso, habr que usar la columna Clave para tildar manualmente
el o los campos necesarios para transformarlos en clave.
Hay que ser cuidadosos al establecer las claves. As, un ndice principal de clave compuesta por mu-
chos campos, es el nico cuyas campos aparecen tildados como claves. Pero esto ocurre si se incluyen
todos los campos componentes o solamente algunos. En el ltimo caso, se puede creer que los campos
tildados son suficientes para actuar como claves, lo cual es errneo. Para evitar el error, lo seguro es sa-
ber con exactitud cmo est compuesta la expresin del ndice principal, para incluir todos esos campos
en la salida de la vista.
Lo dicho en el prrafo anterior se aplica a todas las situaciones donde deba identificarse los registros
de una tabla mediante varios campos clave. Aunque no formen parte de un ndice principal, hay que tener
conocimiento de cmo identificar exactamente un registro de la tabla de entrada a modificar

Actualizar todos. Selecciona todos los campos que no sean clave para actualizarlos, colocando una tilde
EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
20
en la columna Actualizable de Nombre de Campo. Los campos usados como clave tambin pueden ser
actualizables, aunque no es conveniente hacerlo. La actualizacin de una clave puede provocar conflictos.

Enviar actualizaciones SQL. Es un botn de opcin que activa el envo de los cambios a las tablas origi-
nales. Si el botn no est activado, la vista podr modificarse, pero no habr efecto en las tablas.

Nombre de campo. Es un cuadro que muestra los campos seleccionados para salida de la vista. Tiene las
tres columnas siguientes.

Clave (smbolo de llave). Es un botn de opcin junto a cada campo. Si no est visible, hay que hacer
click en el lugar correspondiente. Cuando se activa, indica que el campo asociado servir de clave.

Actualizable (smbolo de lpiz). Es un botn de opcin junto a cada campo. Si no est visible, hay que
hacer click en el lugar correspondiente. Cuando se activa, indica que el campo ser actualizable.

Nombre de campo. Lista los campos seleccionados para salida de la vista.

Hay otras opciones, cuya complejidad escapan al propsito de esta obra, por lo que no las veremos.

Varios

Esta ficha sirve para indicar condiciones para seleccionar registros no incorporadas en las dems fi-
chas, tales como eliminar registros duplicados o incluir una cantidad o porcentaje de registros en la salida.
La ficha es comn a ambos diseadores. Sus componentes son los siguientes.

Sin duplicados. Es un botn de verificacin que elimina los registros duplicados en la salida, dejando uno
solo. Se dice que hay registros duplicados cuando todos sus campos, par a par, tienen igual contenido.
Los registros resultantes de agrupamiento nunca estn duplicados, porque hay uno por grupo y cada gru-
po es diferente.

Crear tabla de referencias cruzadas. Es un botn de verificacin exclusivo de las consultas que puede
activarse solamente cuando se han definido tres campos de salida. Uno representa los distintos valores
del eje X; el otro los distintos valores del eje Y; el tercero el valor de un determinado X y un determinado
Y. El resultado de la consulta sirve para disear grficos usando Microsoft Graph. Como el tema escapa al
propsito de esta obra, no daremos ms detalles.

Registros incluidos. Es un ttulo que agrupa las tres posibilidades siguientes.

Todos. Es un botn de verificacin que, activado, incluye todos los registros resultantes de la vista o
consulta en la salida. Cuando no lo est, permite indicar cuntos o qu porcentaje de registros resultan-
tes se quieren en la salida.

Nmero de registros. Es un cuadro numrico que permite definir una cantidad. Este valor ser el n-
mero de registros que se desea en la salida.

Porcentaje. Es un botn de verificacin que cambia el valor introducido en Nmero de registros a por-
centaje. Note que los valores vlidos para porcentaje varan entre 0,1 y 99.



EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
21
4. Herramientas auxiliares

Incluimos bajo este ttulo otras posibilidades que brindan los diseadores de vistas y consultas: el men
Consulta, las barras de herramientas Diseador de consultas y Diseador de vistas y el dilogo Condicin
de combinacin.

Men Consulta

Contiene comandos para crear, modificar y ejecutar consultas. Aparece en la barra de mens cuando
estn abiertos el Diseador de consultas o el Diseador de vistas.

Agregar tabla o vista. Activa el dilogo Agregar tabla o vista, donde se puede elegir la tabla o vista que
se quiere agregar al panel de entorno.

Quitar tabla. Elimina la tabla seleccionada del panel de entorno.

Quitar condicin de combinacin. Elimina la combinacin seleccionada.

Campos de salida. Activa la ficha Campos.

Combinacin. Activa la ficha Combinacin.

Filtro. Activa la ficha Filtro.

Ordenar por. Activa la ficha Ordenar por.

Agrupar por. Activa la ficha Agrupar por.

Criterios de actualizacin. Activa la ficha Criterios de actualizacin. Esta opcin aparece cuando est
abierto el Diseador de vistas.

Varios. Activa la ficha Varios.

Destino de la consulta. Activa el dilogo Destino de la consulta, que permite enviar el resultado de una
consulta a siete salidas diferentes. Esta opcin aparece cuando est abierto el Diseador de consultas.

Ver SQL. Muestra en una ventana la instruccin Select de SQL, creada hasta el momento con lo definido
en las distintas fichas. La ventana es de slo lectura, pero la instruccin se puede copiar y pegar, por
ejemplo, en un formulario o informe.

Opciones avanzadas. Est relacionado con actualizaciones en redes.

Parmetros de vista. Activa el dilogo Parmetros de vista. Esta opcin aparece cuando est abierto el
Diseador de vistas.

Comentarios. Activa el dilogo Comentarios, donde se pueden escribir notas que documenten la vista o
consulta.

Ejecutar consulta. Ejecuta la instruccin Select de SQL, generada hasta el momento.

EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
22
Barras de herramientas Diseador de consultas y Diseador de vistas

Si previamente no fueron cerradas, estas barras aparecen automticamente al abrir el Diseador de
consultas o el Diseador de vistas, segn corresponda. Si estn cerradas, se pueden abrir con Ver Barra
de herramientas. Contienen los botones siguientes.

Agregar tabla o vista. Activa el dilogo Agregar tabla o vista, donde se puede elegir la tabla o vista que
se quiere agregar al panel de entorno.

Quitar tabla. Elimina la tabla seleccionada en el panel de entorno.

Agregar combinacin. Permite agregar una condicin de combinacin.

Ver SQL. Muestra en una ventana la instruccin Select de SQL creada hasta el momento con lo definido
en las distintas fichas. La ventana es de slo lectura.

Maximizar/Minimizar panel superior. Ampla o reduce el panel de entorno.

Destino de la consulta. Activa el dilogo Destino de la consulta, que permite enviar el resultado de la
consulta a siete salidas diferentes. Es un botn exclusivo del Diseador de consultas.

Dilogo Condicin de combinacin

Permite definir una condicin de combinacin entre dos tablas. Se activa al agregar una segunda tabla,
una tercera, etc. a la consulta o vista. Si la pareja de tablas tiene una relacin permanente, se ofrece com-
binarlas por lo que ella indica. Si no la hay, pero s hay un campo con igual nombre en ambas tablas, se
sugiere combinarlas por l. Esto no siempre es correcto, pues los campos pueden no servir para la rela-
cin. Quizs se ofrezca combinar la primera tabla con la tercera, cuando lo correcto en un caso particular
sera combinar la segunda con la tercera. El usuario, entonces, debe controlar la condicin de combinacin
y corregirla, si fuera necesario, antes de aceptarla.

Lista de campos izquierda. Contiene los campos de todas las tablas agregadas previamente. Permite se-
leccionar el campo izquierdo de la combinacin.

Lista de campos derecha. Contiene los campos de la ltima tabla agregada. Permite seleccionar el cam-
po derecho de la combinacin.

Tipo de combinacin. Es un cuadro de lista que permite definir un tipo de combinacin. Las opciones de
la lista son Interna, Izquierda, Derecha, Completa y Ninguna.

5. Uso de parmetros

Ya dijimos al pasar que el Diseador de vistas permite usar parmetros. Ahora los trataremos espe-
cialmente. Los parmetros se usan en el cuadro de texto Ejemplo de las fichas Filtro y Condiciones. Un pa-
rmetro es un nombre cualquiera que se escribe precedido por un signo ?. Como regla prctica, no d a
un parmetro el mismo nombre que un campo ni el de una expresin nombrada con la palabra as.
La cantidad de parmetros a usar en una condicin filtro depende del operador relacional escrito en Cri-
terios. Con excepcin de Between e In, los operadores relacionales necesitan uno solo. Between, que fija
un rango de valores entre un lmite inferior y otro superior, puede llevar uno o dos parmetros, como sigue:
EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
23

Lmite inferior Lmite superior
parmetro parmetro
parmetro valor literal
valor literal parmetro

In, que establece una lista de valores, puede llevar todos en forma de parmetros o una mezcla de pa-
rmetros y valores literales.
Los parmetros son simples nombres, sin contenido. Pero como las vistas necesitan filtros con valores
definidos, al ejecutar una vista con parmetros, lo primero que acontece es que SQL solicita valores espe-
cficos para cada parmetro usado. En una ejecucin, se dan tales valores para los parmetros; en otra
ejecucin, se dan otros valores, y as. Esto hace que las vistas con parmetros sean muy flexibles.
Sea, para ejemplificar, una tabla Empleados. Un da nos encargan disear una vista que liste Nombre,
Domicilio, Telfono, etc., de esa tabla, pero solamente de empleados cuyos nombres comiencen con F.
Deberemos escribir la siguiente condicin filtro:
Empleados.Nombre = F
Otro da nos piden modificar la vista, para que liste empleados cuyos nombres comiencen con B. Ten-
dremos que modificar la condicin filtro de la siguiente forma:
Empleados.Nombre = B
Luego nos piden listar empleados cuyos nombres comiencen con M, con P, con S, etc., lo cual supone
modificar la condicin filtro cada vez. No habr una solucin a tanta variabilidad? Precisamente los par-
metros son la solucin. Si escribimos la condicin filtro como sigue
Empleados.Nombre = ? letras
el problema est resuelto. Ahora, cada vez que ejecutemos la vista, lo primero que aparecer ser un cua-
dro de dilogo que pide un valor para el parmetro letras. Si escribimos S como respuesta, listar los em-
pleados cuyos nombres comiencen con S. Si escribimos Z, los que comiencen con Z. Si escribimos Mo,
los nombres que comiencen con esas dos letras, como Molina, Morales, etc.
Para que los parmetros funcionen, basta con introducirlos en la ficha Filtro. Sin embargo, podr obser-
var que, cuando est en el Diseador de vistas, aparece el comando Parmetros de vista en el Men Con-
sulta. Para qu sirve este comando? Es sencillo y til. Si una vista usa, por ejemplo, el parmetro Matr-
cula, cuando se ejecuta pide un valor para l, en un cuadro de dilogo cuyo mensaje dice:
Ingrese el valor para Matrcula
Con esta peticin, sabemos a qu le daremos valor, pero no sabemos el tipo de datos a ingresar. Si
usamos Consulta Parmetros de vista, se abre un cuadro de dilogo donde podemos introducir el nom-
bre de los parmetros que usamos y sus tipos de datos. En nuestro ejemplo, introduciremos el nombre
Matrcula y el tipo carcter. Si ahora ejecutamos la vista, el mensaje ser ms especfico, pues dir:
Ingrese un valor de tipo carcter para Matrcula
Esta aclaracin elimina toda duda sobre tl tipo de datos.

6. Ms sobre condiciones de combinacin

Antes de terminar, conviene que considere algunos puntos importantes sobre las condiciones de com-
binacin, que creemos de gran utilidad.

EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
24
Cadena de tablas

Si en el panel de entorno hay ms de dos tablas, controle que las condiciones de combinacin sigan la
disposicin siguiente.

Tabla1.campo1 = Tabla2.campo1

Tabla2.campo2 = Tabla3.campo2

Tabla3.campo3 = Tabla4.campo3

Observe, en el esquema anterior, que:

La tabla derecha de la primera condicin es la misma que la tabla izquierda de la segunda condicin.
La tabla derecha de la segunda condicin es la misma que la tabla izquierda de la tercera condicin.

La representacin grfica de las tablas y combinaciones en el panel de entorno del esquema anterior,
se vera as:




Si hubiera ms tablas, el esquema deber repetirse, formando una cadena de una tabla a la otra. La
cadena asegura obtener combinaciones correctas. Para conseguirla, a veces basta con cambiar de posi-
cin las combinaciones, mediante el botn Movimiento.
Nunca haga que las tablas izquierdas sean la misma, salvo que se trate de una combinacin compleja.
Por ejemplo, si se introducen al panel de entorno Tabla1, Tabla2 y Tabla3, y se combinan Tabla1.campo1
con con Tabla2.campo1 y Tabla1.campo2 con Tabla3.campo2, habr un error, que producir resultados
incorrectos. En la ficha Combinacin ver lo siguiente:
Tabla1.campo1 = Tabla2.campo1
Tabla1.campo2 = Tabla3.campo2
Puede ver que que no se observa la regla estipulada. En el panel superior, las tablas y combinaciones
se vern como sigue, donde es evidente que no hay una cadena.











Observe que como tablas izquierda se ha usado Tabla1 en las dos condiciones. Para arreglar este pro-
blema, el botn Movimiento no sirve. La solucin ms fcil es eliminar la primera condicin y trazar en el
Tabla1 Tabla2 Tabla3
Tabla1
Tabla1
Tabla1
EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
25
panel de entorno una combinacin desde Tabla2.campo1 a Tabla1.campo1. Ahora puede usar el botn
Movimiento, para dejar la cadena de la siguiente forma:
Tabla2.campo1 = Tabla1.campo1
Tabla1.campo2 = Tabla3.campo2
Otra solucin igualmente vlida es hacer:
Tabla3.campo2 = Tabla1.campo2
Tabla1.campo1 = Tabla2.campo1
La regla es sencilla de lograr, como ha podido ver. La correccin de los errores es muy simple: basta
seleccionar las combinaciones incorrectas, eliminarlas con Delete y volver a trazarlas.
Observe finalmente que por "izquierda" y "derecha" debe entenderse no la disposicin grfica de las
tablas en el panel de entorno, sino desde dnde parte la combinacin y a dnde llega. Este movimiento
queda reflejado en la ficha Combinacin, donde se ve qu es lo que est a la izquierda y qu a la derecha.

Agregado de una misma tabla varias veces

Sean las tablas Alfa, Beta, Gamma y Delta. Las combinaciones deben ser: Alfa.uno con Beta.uno, Al-
fa.dos con Gamma.dos y Alfa.tres con Delta.tres. Por ms que nos esforcemos, sera imposible crear una
cadena correcta, como muestran los ejemplos siguientes:
Beta.uno = Alfa.uno Beta.uno = Alfa.uno
Alfa.dos = Gamma.dos Alfa.dos = Gamma.dos
Alfa.tres = Delta.tres Delta.tres = Alfa.tres
El primer ejemplo repite Alfa como izquierda en dos condiciones y no hay cadena entre la segunda y
tercera combinaciones. En el segundo tampoco hay cadena entre la segunda y tercera combinaciones.
Cmo solucionar este problema? Un poco artificiosamente. Hay que agregar Alfa una segunda vez al
panel de entorno. Para no confundirse, SQL le da un alias diferente, Alfa_a. Ahora tiene dos versiones de
la misma tabla, que SQL considera como si fueran distintas. En total, entonces, hay cinco tablas. La cade-
na ahora puede armarse con toda facilidad, como sigue.
Beta.uno = Alfa.uno
Alfa.dos = Gamma.dos
Gamma.dos = Alfa_a.dos
Alfa_a.tres = Delta.tres
En el panel de entorno veremos:






No obstante, incluso hay veces que esta solucin no produce los resultados deseados, porque el es-
quema no "ve" todos los registros involucrados en las combinaciones. En este caso, hay otra solucin,
tambin bastante sencilla.

Inclusin de vistas

El problema anterior tiene otra solucin. Primero, podemos crear una vista que use como entrada Alfa,
Beta Alfa Gamma Alfa_a Delta
EDMUNDO A. CCERES CONSULTAS Y VISTAS 2007
26
Beta y Gamma. Llammosla Vista1. La combinacin ser la siguiente:
Beta.uno = Alfa.uno
Alfa.dos = Gamma.dos
Observe que la cadena es correcta. La vista resultante, Vista1, debe incluir los campos Uno, Dos y
Tres. Este ltimo campo, proveniente de Alfa, es necesario para el paso que daremos a continuacin.
Luego creemos una segunda vista, Vista2, cuyas entradas sean Delta y Vista1. Recuerde que el panel
de entorno no slo acepta tablas, sino tambin vistas. La combinacin ser:

Delta.tres = Vista1.tres

Cuando ejecutemos Vista2, sta encontrar que una de sus entradas es Vista1. Automticamente la
ejecutar y luego, una vez que la tenga generada, seguir con la ejecucin de Vista2.

7. Destinos de las consultas

Veamos por ltimo un tema tratado de paso anteriormente: qu destinos puede producir una consulta,
es decir, dnde se quiere que la coloque SQL.
Por defecto, el resultado de las consultas y las vistas se coloca en un cursor que se ve automticamen-
te en la ventana Examinar. Para las vistas, es el nico destino posible. Para las consultas, es uno de los
posibles, porque puede haber otros.
El cursor resultante de una vista o consulta tiene, como hemos dicho, la estructura de una tabla, pero
no se guarda en disco, sino en memoria interna. Esto hace que VFP lo destruya cuando se deje de usar.
Dejar de usar significa emitir un comando que cierre todas las tablas abiertas: el cursor, que es una tabla
virtual abierta, se cierra, pero como no se guarda en disco, se pierde. Cerrar VFP produce el mismo efecto.
Ahora bien, como quasi tabla, el cursor debe tener un nombre. A lo largo de esta obra no nos hemos
ocupado de este aspecto, porque VFP inventa un nombre para cada cursor. Incluso el nombre del cursor
producido por una misma vista o consulta depende del momento en que se las ejecuta, porque VFP lo de-
riva del reloj del sistema operativo. Un nombre producido de esta forma tiene la propiedad de no repetirse
nunca.
La pregunta es: cmo dar un nombre fijo a un cursor? Este nombre podra necesitarse para referirse
al cursor en la programacin, luego de ejecutar la vista o consulta, mientras exista en la memoria, o para
guardar en forma permanente el resultado en una tabla. La solucin la contemplan nicamente las consul-
tas, que permiten mandar el resultado a otros destinos, como a un cursor con nombre establecido por el
programador humano, o a una tabla, o a un informe.
Adems del destino Examinar, de todos los otros nos interesan los destinos Cursor y Tabla. Para po-
derlos establecer se debe usar el botn Destino de la consulta de la barra de herramientas Diseador de
consultas, el comando Consulta Destino de la consulta o la opcin Configuracin de salida que aparece
con el botn secundario. Estos procedimientos abren un cuadro de dilogo con diferentes botones para di-
ferentes destinos. Los botones Cursor y Tabla presentan un cuadro de texto para definir el nombre que se
desea. Establecidos estos destinos, cuando se ejecute la consulta no se abrir la ventana Examinar, pero
el cursor o la tabla estarn abiertos y se podrn acceder por su nombre para lo que se necesite.
Las vistas, aunque tienen la ventaja de los parmetros, no pueden producir cursores con nombre ni ta-
blas directamente. Para aprovechar las ventajas de las vistas y obtener cursores con nombre o tablas, se
puede primero disear una vista y despus disear una consulta que tome como entrada esa vista y ob-
tenga como resultado exactamente los mismos componentes, mandndolo al destino necesitado.

Anda mungkin juga menyukai