You are on page 1of 15

APPEND MEMO (Comando)

Visual Studio .NET 2003


Copia a un campo memo el contenido de un archivo de texto.
APPEND MEMO MemoFieldName FROM FileName[OVERWRITE] [AS
nCodePage]
Parmetros
MemoFieldName
Especifica el nombre de un campo memo al que se anexa el archivo.
FROM FileName
Especifica el archivo de texto cuyo contenido se copia al campo memo. Debe incluir el nombre
completo del archivo de texto, incluida la extensin.
OVERWRITE
Reemplaza el contenido actual del campo memo por el contenido del archivo.
AS nCodePage
Especifica la pgina de cdigos del archivo de texto que se copia al campo memo. Microsoft
Visual FoxPro copia el contenido del archivo de texto y, a medida que copia los datos al campo
memo, los convierte automticamente de la pgina de cdigos especificada a la pgina de
cdigos de la tabla que contiene el campo memo. Si la tabla que contiene el campo memo no
est marcada con una pgina de cdigos, Visual FoxPro convertir automticamente los datos de
la pgina de cdigos especificada a la pgina de cdigos actual de Visual FoxPro.
Si especifica un valor no admitido para nCodePage, Visual FoxPro generar un mensaje de error.
Puede utilizar GETCP( ) para que nCodePage muestre el cuadro de dilogo Pgina de cdigos, lo
que permite especificar una pgina de cdigos para la tabla o el archivo anexado.
Si omite la clusula AS nCodePage o si especifica 0 para nCodePage, no se realizar ninguna
conversin de pgina de cdigos para el archivo de texto.
Observaciones
Todo el contenido del archivo de texto se anexa al contenido del campo memo especificado en el
registro actual si se omite OVERWRITE.
Ejemplo
En el ejemplo siguiente, el contenido del campo memo notes se copiar a un archivo llamado
Test.txt. Luego, el contenido de Test.txt se anexa al contenido del campo memo. Finalmente, el
contenido de Test.txt reemplaza el contenido actual del campo memo.
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE employee && Open Employee table
WAIT WINDOW 'Employee notes memo field - press ESC' NOWAIT
MODIFY MEMO notes NOEDIT && Open the notes memo field
COPY MEMO notes TO test.txt && Create test file from memo field
WAIT WINDOW 'TEST.TXT text file - press ESC' NOWAIT
MODIFY FILE test.txt NOEDIT && Open the text file
WAIT WINDOW 'Employee notes now appended - press ESC' NOWAIT
APPEND MEMO notes FROM test.txt && Add contents of text file
MODIFY MEMO notes NOEDIT && Display memo field again
WAIT WINDOW 'Overwrite Employee notes- press ESC' NOWAIT
APPEND MEMO notes FROM test.txt OVERWRITE && Replace notes
MODIFY MEMO notes NOEDIT NOWAIT
DELETE FILE test.txt
Vea tambin
COPY MEMO | GETCP( ) | CLOSE MEMO | SET WINDOW OF MEMO
COPY MEMO (Comando)

Visual Studio .NET 2003


Copia a un archivo de texto el contenido del campo memo
especificado en el registro actual.
COPY MEMO MemoFieldName TO FileName [ADDITIVE] [AS nCodePage]
Parmetros
MemoFieldName
Especifica el nombre del campo memo copiado al archivo de texto.
TO FileName
Especifica el nombre de un archivo de texto nuevo o existente al que se copia el campo memo.
Si no proporciona ninguna extensin en FileName, se asignar la extensin .txt. Tambin puede
incluir una ruta de acceso junto con el nombre de archivo.
ADDITIVE
Anexa el contenido del campo memo al final del archivo de texto especificado. Si omite
ADDITIVE, el contenido del campo memo reemplazar el contenido del archivo de texto.
AS nCodePage
Especifica la pgina de cdigos para el archivo de texto creado por COPY MEMO. Visual FoxPro
copia el contenido del campo memo especificado y, a medida que copia los datos, los convierte
automticamente a la pgina de cdigos especificada para el archivo de texto.
Si especifica un valor no admitido para nCodePage, Visual FoxPro generar un mensaje de error.
Puede utilizar GETCP( ) para que nCodePage muestre el cuadro de dilogo Pgina de cdigos y le
permita especificar otra pgina de cdigos distinta para el archivo creado por Visual FoxPro.
Si AS nCodePage se omite o es 0, no se producir la conversin de la pgina de cdigos.
Ejemplo
En el ejemplo siguiente, el contenido del campo memo notes se copia al archivo Test.txt. El
campo memo se copia luego otra vez y se anexa al final del archivo de texto.
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE employee && Opens Employee table
COPY MEMO notes TO test.txt
WAIT WINDOW 'Memo contents now in test.txt' NOWAIT
MODIFY FILE test.txt
COPY MEMO notes TO test.txt ADDITIVE
WAIT WINDOW 'Memo contents added again to test.txt' NOWAIT
MODIFY FILE test.txt
DELETE FILE test.txt
Vea tambin
APPEND MEMO | COPY FILE | COPY TO | MODIFY MEMO
MODIFY MEMO (Comando)

Visual Studio .NET 2003


Abre una ventana de edicin para un campo memo en el registro actual.
MODIFY MEMO MemoField1 [, MemoField2 ...] [NOEDIT] [NOMENU]
[NOWAIT] [RANGE nStartCharacter, nEndCharacter]
[[WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN SCREEN]]
[SAME] [SAVE]
Parmetros
MemoField1 [, MemoField2 ...]
Especifica los nombres de los campos memo a modificar. Para abrir una ventana de edicin de
campos memo en una tabla abierta en otra rea de trabajo, incluya el alias de la tabla con el
campo memo.
NOEDIT
Especifica que el campo memo no podr cambiarse pero podr visualizarse y copiarse al
Portapapeles.
NOMENU
Elimina el ttulo de men Formato de la barra de mens del sistema de Visual FoxPro, lo que
impide cambios de fuente, tamao de fuente, espacio interlineal y sangrado.
NOWAIT
Contina con la ejecucin del programa despus de que se abra la ventana de edicin de texto.
El programa no espera a que la ventana de edicin se cierre, sino que contina la ejecucin en la
lnea de programa siguiente a la que contiene MODIFY MEMO NOWAIT. Si omite NOWAIT al
ejecutar MODIFY MEMO en un programa, se abre una ventana de edicin y la ejecucin del
programa se interrumpe hasta que se cierre la ventana de edicin.
NOWAIT slo es efectivo desde dentro de un programa. No ejerce ningn efecto en MODIFY
MEMO cuando se ejecuta desde la ventana Comandos.
RANGE nStartCharacter, nEndCharacter
Especifica un rango de caracteres seleccionado cuando la ventana de edicin de texto es abierta.
Los caracteres se seleccionan comenzando en la posicin especificada con nStartCharacter hasta
el carcter que se encuentre en la posicin nEndCharacter. Si nStartCharacter es igual a
nEndCharacter, no se seleccionar ningn carcter y el cursor se situar en la posicin
especificada con nStartCharacter.
WINDOW WindowName1
Especifica una ventana de la cual asumir las caractersticas la ventana de edicin de texto. Por
ejemplo, si la ventana est definida con la clusula FLOAT de DEFINE WINDOW, la ventana de
edicin de texto podr moverse. No es necesario que la ventana est activa o sea visible, pero
debe estar definida.
IN [WINDOW] WindowName2
Especifica una ventana primaria dentro de la cual se abrir una ventana de edicin de texto. La
ventana de edicin de texto no asumir las caractersticas de la ventana primaria y no puede
moverse fuera de la ventana primaria. Si se mueve la ventana primaria, la ventana de edicin de
texto se mover con ella.
Para tener acceso a la ventana de edicin de texto, la ventana primaria debe estar definida
anteriormente con DEFINE WINDOW y debe estar visible.
IN SCREEN
Abre explcitamente la ventana de edicin en la ventana principal de Visual FoxPro, despus de
haberla situado en una ventana primaria. Se colocar una ventana de edicin en una ventana
primaria incluyendo la clusula IN WINDOW.
SAME
Evita que la ventana de edicin de texto se ponga delante como ventana activa. Si la ventana de
edicin de texto est oculta, se mostrar pero no se convertir en la ventana activa.
SAVE
Conserva la ventana de edicin de texto abierta despus de que otra ventana se active. Si omite
SAVE, la ventana de edicin de texto se cierra cuando otra ventana se activa. El hecho de incluir
SAVE no tiene ningn efecto cuando se ejecuta desde la ventana Comandos.
Observaciones
En la ventana de edicin, podr ver o cambiar el contenido de un campo memo.
En una tabla abierta para acceso compartido en una red, el registro actual se bloquea
automticamente cuando comienza la edicin de uno de sus campos memo.
Note El uso de colores en la sintaxis en ventanas de modificacin de campos memo est
deshabilitada en aplicaciones de tiempo de ejecucin distribuidas.
Para habilitar la sintaxis con colores en una ventana de modificacin durante la programacin
Haga clic con el botn secundario del mouse en la ventana de modificacin y elija Propiedades
en el men contextual.
Seleccione la casilla de verificacin Colorear la sintaxis.
Ejemplo
El ejemplo siguiente abre el campo memo notes del primer registro de employee en una ventana
de edicin con un rango resaltado.
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
USE employee && Opens Employee table
MODIFY MEMO notes NOEDIT RANGE 1,10 && First 10 characters selected
USE
Vea tambin
CLOSE MEMO | APPEND MEMO (Comando) | COPY MEMO (Comando)
COMANDO SELECT

SELECT - SQL (Comando)

Visual Studio .NET 2003


Recupera datos de una o ms tablas.
SELECT [ALL | DISTINCT] [TOP nExpr [PERCENT]] [Alias.] Select_Item
[[AS] Column_Name] [, [Alias.] Select_Item [[AS] Column_Name] ...]
FROM [FORCE][DatabaseName!]Table [[AS] Local_Alias]
[[INNER | LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER] JOIN
DatabaseName!] Table [[AS] Local_Alias] [ON JoinCondition ]
[[INTO Destination] | [TO FILE FileName [ADDITIVE] | TO PRINTER
[PROMPT] | TO SCREEN]] [PREFERENCE PreferenceName]
[NOCONSOLE] [PLAIN] [NOWAIT]
[WHERE JoinCondition [AND JoinCondition ...]
[AND | OR FilterCondition [AND | OR FilterCondition ...]]]
[GROUP BY GroupColumn [, GroupColumn ...]]
[HAVING FilterCondition] [UNION [ALL] SELECTCommand]
[ORDER BY Order_Item [ASC | DESC] [, Order_Item [ASC | DESC] ...]]
Parmetros
SELECT
Especifica los campos, constantes y expresiones que se mostrarn en el resultado de la consulta.
ALL
De forma predeterminada, se muestran todas las filas del resultado de la consulta.
DISTINCT
Excluye duplicados de cualquier fila del resultado de la consulta.
Nota Puede utilizar DISTINCT nicamente una vez por cada clusula SELECT.
TOP nExpr [PERCENT]
Especifica que el resultado de la consulta contenga un nmero determinado de filas o un
porcentaje de filas en el resultado de la consulta. Es necesario incluir una clusula ORDER BY si
incluye la clusula TOP. La clusula ORDER BY especifica las columnas en las que la clusula TOP
determinar el nmero de filas que se va a incluir en el resultado de la consulta.
Puede especificar desde 1 a 32.767 filas. Las filas de valores idnticos para las columnas
especificadas en la clusula ORDER BY se incluyen en el resultado de la consulta. Por lo tanto, si
especifica 10 para nExpr, el resultado de la consulta podr obtener ms de 10 filas, si hay ms
de 10 filas con valores idnticos para las columnas especificadas en la clusula ORDER BY.
Si se incluye la palabra clave PERCENT, se redondear al nmero entero ms alto el nmero de
columnas devuelto en el resultado. Los valores permitidos para nExpr cuando se incluye la
palabra clave PERCENT son de 0,01 a 99,99.
Alias.
Califica nombres de elementos coincidentes. Cada elemento que especifique con Select_Item
genera una columna de los resultados de la consulta. Si dos o ms elementos tienen el mismo
nombre, incluya el alias de la tabla y un punto antes del nombre del elemento para impedir la
duplicacin de las columnas.
Select_Item especifica un elemento que se incluir en el resultado de la consulta. Un elemento
puede ser uno de los siguientes:
El nombre de un campo de una tabla de la clusula FROM.
Una constante, especificando que el mismo valor constante debe aparecer en cada fila del
resultado de la consulta.
Una expresin que puede ser el nombre de una funcin definida por el usuario (FDU).
AS Column_Name
Especifica el ttulo de una columna en el resultado de la consulta. Esta opcin resulta muy til
cuando Select_Item es una expresin o contiene una funcin de campo y desea dar un nombre
significativo a la columna. Column_Name puede ser una expresin, pero no puede contener
caracteres (por ejemplo, espacios) que no estn permitidos para nombres de campos de tablas.
FROM
Indica las tablas que contienen los datos que ha obtenido la consulta. Si no hay ninguna tabla
abierta, Visual FoxPro muestra el cuadro de dilogo Abrir, donde puede especificar la ubicacin
del archivo. Una vez abierta, la tabla permanece abierta cuando finaliza la consulta.
FORCE especifica que las tablas se combinen en el orden de aparicin en la clusula FROM. Si se
omite FORCE, Visual FoxPro intentar optimizar la consulta. Sin embargo, es posible que la
consulta se ejecute ms rpido si se incluye la palabra clave FORCE para desactivar la
optimizacin de consultas de Visual FoxPro.
DatabaseName!
Especifica el nombre de una base de datos inactiva que contiene la tabla. Es necesario incluir el
nombre de la base de datos que contiene la tabla en caso de que no sea la base de datos activa.
Incluya el delimitador signo de exclamacin (!) despus del nombre de la base de datos y antes
del nombre de la tabla.
[AS] Local_Alias
Especifica un nombre temporal para la tabla indicada en Table. Si especifica un alias local, debe
utilizar el alias local en lugar del nombre de la tabla en toda la instruccin SELECT.
INNER JOIN especifica que el resultado de la consulta contenga slo filas en una tabla con la que
coincidan una o varias filas de otra tabla.
LEFT [OUTER] JOIN especifica que el resultado de la consulta contenga todas las filas de la tabla
a la izquierda de la palabra clave JOIN y slo las filas que coincidan procedentes de la tabla a la
derecha de la palabra clave JOIN. La palabra clave OUTER es opcional; se puede incluir para
resaltar que se ha creado una combinacin externa.
RIGHT [OUTER] JOIN especifica que el resultado de la consulta contenga todas las filas de la tabla
a la derecha de la palabra clave JOIN y slo las filas que coincidan de la tabla a la izquierda de la
palabra clave JOIN. La palabra clave OUTER es opcional; se puede incluir para resaltar que se ha
creado una combinacin externa.
FULL [OUTER] JOIN especifica que el resultado de la consulta contenga todas las filas, coincidan o
no, de ambas tablas. La palabra clave OUTER es opcional; se puede incluir para resaltar que se
ha creado una combinacin externa.
ON Join Condition especifica las condiciones segn las cuales se combinan las tablas.
INTO Destination
Determina donde se almacenan los resultados de la consulta. Si incluye una clusula INTO y una
clusula TO en la misma consulta, la clusula TO se pasar por alto. Si no incluye la clusula
INTO, los resultados de la consulta se mostrarn en la ventana Examinar. Los resultados de la
consulta pueden dirigirse tambin a la impresora o a un archivo con la clusula TO.
Destination puede ser uno de los siguientes:
ARRAY ArrayName, que almacena los resultados de la consulta en una matriz de variable de
memoria. Si la consulta selecciona 0 registros, la matriz no se crear.
CURSOR CursorName [NOFILTER | READWRITE], que almacena los resultados de una consulta en
un cursor. Si especifica el nombre de una tabla abierta, Visual FoxPro generar un mensaje de
error. Despus de ejecutar SELECT, el cursor temporal permanecer abierto y estar activo y
ser de slo lectura a menos que se especifique la opcin READWRITE. Cuando cierre este cursor
temporal, se borrar. Los cursores pueden existir como un archivo temporal en la unidad
SORTWORK.
Incluya NOFILTER para crear un cursor que se pueda usar en consultas posteriores. En versiones
anteriores de Visual FoxPro, era necesario incluir una expresin o una constante adicional como
un filtro para crear un cursor utilizable en consultas posteriores. Por ejemplo, la adicin de un
valor lgico verdadero como una expresin de filtro creaba una consulta que poda utilizarse en
consultas posteriores:
SELECT *, .T. FROM customers INTO CURSOR myquery
Si se incluye NOFILTER, es posible que disminuya el rendimiento de la consulta, puesto que se
crea una tabla temporal en el disco. Cuando se cierre el cursor se eliminar del disco la tabla
temporal.
La clusula READWRITE especifica que el cursor es temporal y se puede modificar.
DBF | TABLE TableName[DATABASE DatabaseName [NAME LongTableName]] almacena los
resultados de una consulta en una tabla. Si especifica una tabla que ya est abierta y SET
SAFETY est en OFF, Visual FoxPro sobrescribir la tabla sin previo aviso. Si no ha especificado
ninguna extensin, Visual FoxPro asignar la extensin .DBF a la tabla. La tabla permanecer
abierta y activa despus de ejecutar SELECT.
Incluya DATABASE DatabaseName para especificar una base de datos a la que se agregar la
tabla. Incluya NAME LongTableName para especificar un nombre largo para la tabla. Los nombres
largos pueden contener un mximo de 128 caracteres y se pueden utilizar en lugar de nombres
de archivo cortos en la base de datos.
TO FILE FileName
Si incluye una clusula TO pero no una clusula INTO, puede dirigir el resultado de la consulta a
un archivo de texto ASCII llamado FileName, a la impresora o a la ventana principal de Visual
FoxPro.
ADDITIVE anexa los resultados de la consulta al contenido existente del archivo de texto
especificado en TO FILE FileName.
TO PRINTER [PROMPT] dirige los resultados de la consulta a una impresora. Utilice la clusula
PROMPT opcional para mostrar un cuadro de dilogo antes de que empiece la impresin. En este
cuadro de dilogo puede modificar la configuracin de la impresora. Las opciones de
configuracin de la impresora que puede ajustar dependen del controlador de impresora que
tenga instalado actualmente. Coloque PROMPT justo despus de TO PRINTER.
TO SCREEN dirige los resultados de la consulta a la ventana principal de Visual FoxPro o a una
ventana activa definida por el usuario.
PREFERENCE PreferenceName
Si el resultado de una consulta se enva a una ventana Examinar, guarda los atributos y opciones
de la ventana Examinar para utilizarlos despus. PREFERENCE guarda los atributos, o
preferencias, por tiempo indefinido en el archivo de recursos FOXUSER. Las preferencias se
pueden recuperar en cualquier momento.
Ejecutando SELECT con PREFERENCE PreferenceName por primera vez, se crea la preferencia.
Ejecutando posteriormente SELECT con el mismo nombre de preferencia, se restaura la ventana
Examinar con el mismo estado de preferencia. Cuando se cierre la ventana Examinar, se
actualiza la preferencia.
Si sale de una ventana Examinar presionando CTRL+Q+W, no se guardarn los cambios de la
ventana Examinar en el archivo de recursos.
NOCONSOLE
Impide que el resultado de la consulta se enve a un archivo, a la impresora o a la ventana
principal de Visual FoxPro.
PLAIN
Impide que aparezcan los encabezados de las columnas al mostrar los resultados de la consulta.
PLAIN puede utilizarse tanto si est presente una clusula TO como si no. Si se incluye una
clusula TO, se pasar por alto PLAIN.
NOWAIT
Contina la ejecucin del programa despus de abrir la ventana Examinar y de dirigir a ella los
resultados de la consulta. El programa no esperar a que la ventana Examinar se cierre, sino que
continuar con la ejecucin de la lnea de programa inmediatamente siguiente a la instruccin
SELECT.
Cuando se incluye TO SCREEN para dirigir los resultados hacia la ventana principal de Visual
FoxPro o una ventana definida por el usuario, los resultados se detienen cuando la ventana
principal de Visual FoxPro o la ventana definida por el usuario se llena con resultados de la
consulta. Presione una tecla para ver el siguiente conjunto de resultados de la consulta. Si se
incluye NOWAIT, los resultados de la consulta se desplazarn fuera de la ventana principal de
Visual FoxPro o de la ventana definida por el usuario sin esperar a que se presione una tecla.
NOWAIT se pasa por alto si se incluye con la clusula INTO.
WHERE
Especifica que Visual FoxPro slo debe incluir en los resultados de la consulta los registros que
satisfagan los criterios especificados.
JoinCondition
Especifica los campos que vinculan las tablas en la clusula FROM. Si incluye ms de una tabla
en una consulta, deber especificar una condicin de combinacin para cada tabla despus de la
primera.
Las condiciones de combinacin mltiples deben conectarse mediante el operador AND. Cada
condicin de combinacin tiene la forma siguiente:
FieldName1 Comparison FieldName2
FieldName1 es el nombre de un campo de una tabla, FieldName2 es el nombre de un campo de
otra tabla y Comparison es uno de los operadores siguientes:
Operador Comparacin
= Igual
== Exactamente igual
LIKE SQL LIKE
<>, !=, # Distinto de
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
Cuando utiliza el operador = con cadenas, acta de forma distinta dependiendo del ajuste de
SET ANSI. Cuando SET ANSI est desactivado, Visual FoxPro trata las comparaciones de cadenas
en la forma habitual en Xbase. Cuando SET ANSI est activado, Visual FoxPro sigue las normas
ANSI para las comparaciones de cadenas. Vea SET ANSI y SET EXACT para obtener informacin
adicional acerca de cmo realiza Visual FoxPro las comparaciones de cadenas.
La clusula WHERE admite el operador ESCAPE para la JoinCondition, lo que le permite realizar
consultas significativas sobre datos que contengan caracteres comodn _ y % de SELECT - SQL.
La clusula ESCAPE le permite especificar que se traten los caracteres comodn de SELECT - SQL
como si fueran caracteres literales. En la clusula ESCAPE se especifica un carcter, que si se
coloca inmediatamente antes del carcter comodn, indica que se tratar al carcter comodn
como a un carcter literal.
FilterCondition
Especifica los criterios que deben satisfacer los registros para ser incluidos en los resultados de
la consulta. Una consulta puede incluir tantas condiciones de filtro como desee, conectadas con
el operador AND y OR. Tambin puede utilizar el operador NOT para invertir el valor de una
expresin lgica o utilizar EMPTY( ) para comprobar si hay campos vacos.
FilterCondition puede adoptar cualquier de las formas de los siguientes ejemplos:
Ejemplo 1
En el ejemplo 1 se muestra FilterCondition como FieldName1 Comparison FieldName2
customer.cust_id = orders.cust_id
Ejemplo 2
En el ejemplo 2 se muestra FilterCondition como FieldName Comparison Expression
payments.amount >= 1000
Ejemplo 3
En el ejemplo 3 se muestra FilterCondition como FieldName Comparison ALL (Subquery)
Cuando la condicin de filtro incluye ALL, el campo debe cumplir la condicin de comparacin
para todos los valores generados por la subconsulta antes de que se incluya el registro en el
resultado de la consulta.
company < ALL ;
(SELECT company FROM customer WHERE country = "UK")
Ejemplo 4
En el ejemplo 4 se muestra FilterCondition como FieldName Comparison ANY | SOME (Subquery)
Cuando la condicin de filtro incluye ANY o SOME, el campo debe cumplir la condicin de
comparacin en al menos uno de los valores generados por la subconsulta.
company < ANY ;
(SELECT company FROM customer WHERE country = "UK")
Ejemplo 5
En el ejemplo 5 se muestra FilterCondition como FieldName [NOT] BETWEEN Start_Range AND
End_Range
Este ejemplo comprueba si los valores del campo estn dentro de un intervalo de valores
especificado.
customer.postalcode BETWEEN 90000 AND 99999
Ejemplo 6
En el ejemplo 6 se muestra FilterCondition como [NOT] EXISTS (Subquery)
Este ejemplo comprueba si al menos una lnea cumple los criterios de la subconsulta. Cuando la
condicin de filtro incluye EXISTS, la condicin de filtro se evala como verdadero (.T.) a no ser
que la subconsulta sea un conjunto vaco.
EXISTS ;
(SELECT * FROM orders WHERE customer.postalcode = orders.postalcode)
Ejemplo 7
En el ejemplo 7 se muestra FilterCondition como FieldName [NOT] IN Value_Set
Cuando una condicin de filtro incluye IN, el campo debe contener uno de los valores antes de
que el registro se incluya en los resultados de la consulta.
customer.postalcode NOT IN ("98052","98072","98034")
Ejemplo 8
En el ejemplo 8 se muestra FilterCondition como FieldName [NOT] IN (Subquery)
Aqu, el campo debe contener uno de los valores devueltos por la subconsulta antes de que su
registro se incluya en los resultados de la consulta.
customer.cust_id IN ;
(SELECT orders.cust_id FROM orders WHERE orders.city="Seattle")
Ejemplo 9
En el ejemplo 9 se muestra FilterCondition como FieldName [NOT] LIKE cExpression
customer.country NOT LIKE "UK"
Esta condicin de filtro busca cada uno de los campos que coinciden con cExpression.
Puede utilizar el signo de porcentaje (%) y subrayado ( _ ) como parte de cExpression. El signo de
porcentaje representa a cualquier secuencia de caracteres desconocidos en la cadena. El
subrayado representa un solo carcter desconocido en la cadena.
GROUP BY GroupColumn [, GroupColumn ...]
Agrupa las filas de la consulta basndose en los valores de una o ms columnas. GroupColumn
puede ser el nombre de un campo normal de una tabla, o un campo que incluya una funcin de
campo SQL o una expresin numrica que indique la posicin de la columna en la tabla de
resultados (la columna ms a la izquierda tiene el nmero 1).
HAVING FilterCondition
Especifica una condicin de filtro que los grupos deben satisfacer para quedar incluidos en el
resultado de la consulta. HAVING debe utilizarse con GROUP BY. Puede incluir tantas condiciones
de filtro como desee, conectadas con los operadores AND u OR. Tambin puede utilizar NOT para
invertir el valor de una expresin lgica.
FilterCondition no puede contener una subconsulta.
Una clusula HAVING sin una clusula GROUP BY acta como una clusula WHERE. Puede utilizar
alias locales y funciones de campo en la clusula HAVING. Utilice una clusula WHERE para
acelerar el rendimiento si la clusula HAVING no contiene funciones de campo. No olvide que la
clusula HAVING debera de aparecer antes de una clusula INTO porque de lo contrario se
producir un error de sintaxis.
[UNION [ALL] SELECTCommand]
Combina el resultado final de un SELECT con el resultado final de otro SELECT. De forma
predeterminada, UNION comprueba el resultado combinado y elimina las filas duplicadas. Puede
utilizar parntesis para combinar varias clusulas UNION.
ALL impide que UNION elimine filas duplicadas de los resultados combinados.
Las clusulas UNION siguen las reglas siguientes:
No puede utilizar UNION para combinar subconsultas.
Los resultados de ambos SELECT deben tener el mismo nmero de columnas.
Cada columna de resultados de la consulta de un SELECT debe tener el mismo tipo de datos y
ancho que su columna correspondiente en el otro SELECT.
nicamente el SELECT final puede tener una clusula ORDER BY, que debe referirse a las
columnas de resultados por su nmero. Si se incluye otra clusula ORDER BY, afectar al
resultado completo.
Tambin puede utilizar la clusula UNION para simular una combinacin externa.
Al combinar dos tablas en una consulta, slo se incluirn en los resultados los registros que
tengan valores coincidentes en los campos combinados. Si un registro de la tabla primaria no
tiene un registro correspondiente en la tabla secundaria, no se incluir en los resultados. Una
combinacin externa permite incluir todos los registros de la tabla primaria en los resultados,
junto con los registros coincidentes de la tabla secundaria. Para crear una combinacin externa
en Visual FoxPro, debe utilizar un comando SELECT anidado, como en el siguiente ejemplo:
SELECT customer.company, orders.order_id, orders.emp_id ;
FROM customer, orders ;
WHERE customer.cust_id = orders.cust_id ;
UNION ;
SELECT customer.company, 0, 0 ;
FROM customer ;
WHERE customer.cust_id NOT IN ;
(SELECT orders.cust_id FROM orders)
Nota Asegrese de incluir el espacio que precede a cada punto y coma. Si no lo hace as; se
producir un error.
La seccin del comando anterior a la clusula UNION selecciona registros de las dos tablas que
tengan valores coincidentes. No se incluirn las compaas de clientes que no tengan facturas
asociadas. La seccin del comando situada despus de la clusula UNION selecciona registros de
la tabla de clientes que no tengan registros coincidentes en la tabla de pedidos.
En cuanto a la segunda seccin del comando, tenga en cuenta lo siguiente:
Se procesar primero la instruccin SELECT escrita entre parntesis. Esta instruccin realiza una
seleccin de todos los nmeros de cliente de la tabla de pedidos.
La clusula WHERE busca todos los nmeros de cliente de la tabla de clientes que no estn en la
tabla de pedidos. Como la primera seccin del comando proporcionaba todas las compaas que
tuvieran un nmero de cliente en la tabla de pedidos, ahora se incluirn en el resultado de la
consulta todas las compaas de la tabla de clientes.
Como las estructuras de las tablas incluidas en una clusula UNION deben ser idnticas, hay dos
marcadores en la segunda instruccin SELECT para representar los parmetros orders.order_id y
orders.emp_id de la primera instruccin SELECT.
Nota Los marcadores deben tener el mismo tipo que los campos que representan. Si el campo
es un tipo de datos, el marcador debe ser { / / }. Si el campo es un tipo Character, el marcador
debe ser la cadena vaca ("").
En determinadas circunstancias puede producirse una transformacin de datos automtica,
como en los dos ejemplos siguientes:
CREATE CURSOR table1 (field1 c(1))
CREATE CURSOR table2 (field1 c(2))
SELECT field1 FROM table1 UNION SELECT NVL(field1,' ') FROM table2

CREATE CURSOR table1 (field1 n(20,5))


CREATE CURSOR table2 (field1 i)
SELECT field1 FROM table1 UNION SELECT field1 FROM table2
ORDER BY Order_Item
Ordena el resultado de la consulta basndose en los datos de una o varias columnas. Cada
Order_Item debe corresponder a una columna de resultados de la consulta y puede ser uno de
los siguientes:
Un campo de una tabla FROM que tambin es un elemento de seleccin en la clusula principal
SELECT (no en una subconsulta).
Una expresin numrica que indica la ubicacin de la columna en la tabla de resultados. (La
columna de la izquierda es la nmero 1.)
ASC especifica un orden ascendente para los resultados de la consulta, de acuerdo con el
elemento o los elementos de orden, y es el valor predeterminado para ORDER BY.
DESC especifica un orden descendente para los resultados de la consulta.
Los resultados de la consulta aparecern desordenados si no especifica un orden con ORDER BY.
Observaciones
SELECT es un comando SQL incorporado en Visual FoxPro como cualquier otro comando de Visual
FoxPro. Cuando utiliza SELECT para componer una consulta, Visual FoxPro interpreta la consulta y
recupera los datos especificados de las tablas. Puede crear una consulta SELECT:
En la ventana Comandos
En un programa de Visual FoxPro (como cualquier otro comando de Visual FoxPro)
En el Diseador de consultas
Cuando ejecuta SET TALK ON y ejecuta SELECT, Visual FoxPro muestra la duracin de la consulta
y el nmero de registros del resultado. _TALLY contiene el nmero de registros del resultado de la
consulta.
SELECT no respeta la condicin de filtro actual especificada con SET FILTER.
Nota Una subconsulta, a la que se hace referencia en los argumentos siguientes, es un
comando SELECT dentro de otro SELECT y debe incluirse entre parntesis. Puede tener hasta dos
subconsultas al mismo nivel (no anidadas) en la clusula WHERE (consulte esta seccin de los
argumentos). Las subconsultas pueden contener condiciones de combinacin mltiples.
Cuando se obtiene el resultado de una consulta, las columnas se denominan segn las siguientes
reglas:
Si un elemento seleccionado es un campo con un nombre nico, el nombre de la columna de
resultados es el nombre del campo.
Si hay ms de un elemento seleccionado con el mismo nombre, se anexarn un signo de
subrayado y una letra al nombre de la columna. Por ejemplo, si una tabla llamada Customer
tiene un campo llamado STREET, y una tabla llamada Employees tambin tiene un campo
llamado STREET, las columnas de resultado se llamarn Extension_A y Extension_B (STREET_A y
STREET_B). En el caso de un elemento seleccionado con un nombre de 10 caracteres, se
truncar el nombre para agregar el smbolo de subrayado y la letra. Por ejemplo, DEPARTMENT
se convertira en DEPARTME_A.
Si un elemento seleccionado es una expresin, su columna de resultado se llamar EXP_A.
Cualquier otra expresin recibir el nombre de EXP_B, EXP_C, y as sucesivamente.
Si un elemento seleccionado contiene una funcin de campo como, por ejemplo, COUNT( ), la
columna de resultado se llamar CNT_A. Si otro elemento seleccionado contiene SUM( ), su
columna de resultado se llamar SUM_B.
Funciones definidas por el usuario con SELECT Aunque la utilizacin de funciones definidas por
el usuario en la clusula SELECT ofrece unas ventajas evidentes, tambin debera tener en
cuenta las siguientes limitaciones:
Es posible que la velocidad de las operaciones con SELECT se vea limitada por la velocidad a la
que se ejecutan las funciones definidas por el usuario. Las manipulaciones de un gran volumen
que impliquen funciones definidas por el usuario se pueden realizar mejor utilizando funciones
API y funciones definidas por el usuario escritas en C o en lenguaje ensamblador.
No se puede suponer nada acerca de la entrada/salida (E/S) de Visual FoxPro ni del entorno de la
tabla en funciones definidas por el usuario invocadas a partir de SELECT. Generalmente no se
puede saber qu rea de trabajo se ha seleccionado, el nombre de la tabla actual, ni los nombres
de los campos que se estn procesando. El valor de estas variables depende del lugar especfico,
en el proceso de optimizacin, en el que se invoque la funcin definida por el usuario.
En funciones definidas por el usuario invocadas desde SELECT, no es seguro cambiar la E/S de
Visual FoxPro ni el entorno de la tabla. En general, los resultados son impredecibles.
La nica forma segura de pasar valores a funciones definidas por el usuario invocadas desde
SELECT es por medio de la lista de argumentos pasada a la funcin al invocarla.
Si prueba y descubre una manipulacin tericamente prohibida que funciona correctamente en
una versin determinada de FoxPro, eso no significa que tambin funcione en versiones
posteriores.
Fuera de estas limitaciones, las funciones definidas por el usuario son aceptables en la clusula
SELECT. Sin embargo, recuerde que la utilizacin de SELECT puede reducir el rendimiento.
Las siguientes funciones de campo estn disponibles para ser utilizadas con un elemento
seleccionado que sea un campo o una expresin que incluya a un campo:
AVG(Select_Item), que promedia una columna de datos numricos.
COUNT(Select_Item), que cuenta el nmero de elementos seleccionados en una columna.
COUNT(*) cuenta el nmero de filas en el resultado de la consulta.
MIN(Select_Item), que determina el menor valor de Select_Item en una columna.
MAX(Select_Item), que determina el mayor valor de Select_Item en una columna.
SUM(Select_Item), que proporciona el total de la suma de una columna de datos numricos.
No se pueden anidar las funciones de campo.
Combinaciones Visual FoxPro admite sintaxis de combinacin de 1992 SQL ANSI, lo que le
permite crear consultas que vinculen las filas en dos o ms tablas mediante la comparacin de
los valores de campos especificados. Por ejemplo, una combinacin interna selecciona filas
procedentes de dos tablas slo cuando los valores de los campos combinados son iguales. Visual
FoxPro admite combinaciones anidadas.
Como SQL est basado en la teora matemtica de conjuntos, cada tabla se puede representar
como un crculo. La clusula ON que especifica las condiciones de la combinacin determina el
punto de interseccin, que representa el conjunto de filas que coinciden. En el caso de una
combinacin interna, la interseccin tendr lugar en el interior o en una parte interna de los
dos crculos. Una combinacin externa incluye tanto las filas coincidentes que se han encontrado
en la seccin de interseccin interna de las tablas, como las filas de la parte externa del crculo,
a la izquierda o a la derecha de la interseccin.
Nota Tenga presente la siguiente informacin a la hora de crear condiciones de combinacin:
Si incluye dos tablas en una consulta y no especifica una condicin de combinacin, cada
registro de la primera tabla se combinar con cada registro de la segunda tabla mientras se
cumplan las condiciones del filtro. Una consulta de este tipo puede producir unos resultados muy
largos.
Sea prudente al utilizar, en condiciones de combinacin, funciones como DELETED( ), EOF( ),
FOUND( ), RECCOUNT( ) y RECNO( ), que aceptan un rea de trabajo o un alias opcional. La
inclusin de un alias o de un rea de trabajo en estas funciones puede producir resultados
inesperados. SELECT no utiliza sus reas de trabajo; realiza lo mismo que USE ... AGAIN. Las
consultas de una sola tabla que utilizan estas funciones sin un rea de trabajo o un alias
opcional, devolvern resultados correctos. De todas formas, las consultas de varias tablas que
utilicen dichas funciones (incluso sin un rea de trabajo o un alias opcional) pueden devolver
resultados inesperados.
Tenga cuidado al combinar tablas que contengan campos vacos, ya que Visual FoxPro establece
coincidencias entre los campos vacos. Por ejemplo, si combina CUSTOMER.ZIP e INVOICE.ZIP, y
CUSTOMER contiene 100 cdigos postales vacos e INVOICE contiene 400 cdigos postales
vacos, el resultado de la consulta contendr 40.000 registros ms, como resultado de los
campos vacos. Use la funcin EMPTY( ) para eliminar los registros vacos del resultado de la
consulta.
El nmero de combinaciones que puede utilizar est limitado. Por cada instruccin Select se
admiten nueve combinaciones como mximo.
Si se incluye la funcin EVALUATE( ) en la clusula WHERE de una consulta SQL, podran
devolverse datos incorrectos.
Para obtener informacin adicional acerca de las combinaciones, vea Definir mltiples
condiciones de combinacin en Crear vistas.
Ejemplos
Los siguientes ejemplos ilustran la utilizacin de las funciones definidas por el usuario con
SELECT - SQL:
Ejemplo 1
En el ejemplo 1 se muestran los nombres de todas las compaas en customer (un campo de una
tabla).
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT customer.company ;
FROM customer
Ejemplo 2
El ejemplo 2 muestra el contenido de tres campos de dos tablas y combina las dos tablas
basndose en el campo cust_id. Utiliza alias locales para ambas tablas.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT x.company, y.order_date, y.shipped_on ;
FROM customer x, orders y ;
WHERE x.cust_id = y.cust_id
Ejemplo 3
El ejemplo 3 muestra nicamente registros con datos nicos en los campos especificados.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT DISTINCT x.company, y.order_date, y.shipped_on ;
FROM customer x, orders y ;
WHERE x.cust_id = y.cust_id
Ejemplo 4
El ejemplo 4 muestra los campos country, postalcode y company en orden ascendente.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT country, postalcode, company ;
FROM customer ;
ORDER BY country, postalcode, company
Ejemplo 5
El ejemplo 5 almacena el contenido de los campos de dos tablas en una tercera tabla.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT x.company, y.order_date, y.shipped_on ;
FROM customer x, orders y ;
WHERE x.cust_id = y.cust_id ;
INTO TABLE custship.dbf
BROWSE
Ejemplo 6
El ejemplo 6 muestra nicamente los registros con una fecha de pedido anterior al 16/02/1994.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT x.company, y.order_date, y.shipped_on ;
FROM customer x, orders y ;
WHERE x.cust_id = y.cust_id ;
AND y.order_date < {^1994-02-16}
Ejemplo 7
El ejemplo 7 muestra los nombres de todas las compaas de customer con un cdigo postal que
coincida con el cdigo postal de la tabla orders.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT company FROM customer x WHERE ;
EXISTS (SELECT * FROM orders y WHERE x.postalcode = y.postalcode)
Ejemplo 8
El ejemplo 8 muestra todos los registros de customer que tengan un nombre de compaa que
comience por una C mayscula y tenga cualquier longitud.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT * FROM customer x WHERE x.company LIKE "C%"
Ejemplo 9
El ejemplo 9 muestra todos los registros de customer que tengan un nombre de pas que
comience por U mayscula seguido de un carcter desconocido.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT * FROM customer x WHERE x.country LIKE "U_"
Ejemplo 10
El ejemplo 10 muestra los nombres de todas las ciudades de customer en maysculas y llama
CityList a la columna de resultados.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT UPPER(city) AS CityList FROM customer
Ejemplo 11
El ejemplo 11 muestra cmo se puede realizar una consulta de datos que contengan signos de
porcentaje (%). Se colocar una barra inversa (\) antes del signo de porcentaje para indicar que
debe ser tratado como un literal, y la barra inversa se especifica como el carcter de escape en
la clusula ESCAPE.
Dado que las tablas de ejemplo incluidas con Visual FoxPro no contienen el carcter de signo de
porcentaje, esta consulta no devolver ningn resultado.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT * FROM customer;
WHERE company LIKE "%\%%" ESCAPE "\"
Ejemplo 12
En el ejemplo 12 se muestra cmo se puede realizar una consulta de datos que contenga signos
de subrayado (_). Se coloca una barra inversa (\) antes del signo de subrayado para indicar que
debe ser tratado como un literal, y se especifica la barra inversa como el carcter de escape en
la clusula ESCAPE.
Dado que las tablas de ejemplo incluidas con Visual FoxPro no contienen el carcter de
subrayado, esta consulta no devolver ningn resultado.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT * FROM customer;
WHERE company LIKE "%\_%" ESCAPE "\"
Ejemplo 13
En el ejemplo 13, el carcter Escape se utiliza como un literal. El guin es tanto el carcter
escape como un literal. La consulta devuelve todas las filas en las que el nombre de la
organizacin contiene un signo de porcentaje seguido de un guin.
Dado que las tablas de ejemplo incluidas con Visual FoxPro no contienen el carcter de signo de
porcentaje, esta consulta no devolver ningn resultado.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'data\testdata')
SELECT * FROM customer;
WHERE company LIKE "%-%--%" Escape "-"
Vea tambin
CREATE QUERY | CREATE TABLE - SQL | INSERT - SQL | MODIFY QUERY | SET ANSI | SET EXACT |
SET PATH | _TALLY | Definir mltiples condiciones de combinacin

You might also like