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