SET ANSI
Determina cómo se hacen las comparaciones de cadenas de distintas longitudes utilizando el operador = en comandos SQL de Visual FoxPro.
SET ANSI ON | OFF
Parámetros
ON
Rellena la cadena más corta con los espacios en blanco necesarios para igualar la longitud de la cadena más larga. Las dos cadenas se comparan carácter a carácter en toda su longitud. Fíjese en esta comparación:
'Tommy' = 'Tom'
El resultado es falso (.F.) si SET ANSI está activado porque, al
rellenarse, ‘Tom’ se convierte en ‘Tom ’ y las cadenas ‘Tom ’ y ‘Tommy’
no coinciden carácter a carácter.
El operador = = utiliza este método para las comparaciones
de los comandos SQL de Visual FoxPro.
OFF
Especifica que la cadena más corta no se rellenará con espacios en
blanco. Las dos cadenas se comparan carácter a carácter hasta llegar al
final de la cadena más corta. Fíjese en esta comparación:
'Tommy' = 'Tom'
El resultado es verdadero (.T.) cuando SET ANSI está desactivado
porque la comparación termina después de ‘Tom’.
Observaciones
SET ANSI determina si se rellenará con espacios en blanco la cadena más corta para hacer la comparación de una cadena SQL. SET ANSI no tiene efecto sobre el operador ==; cuando utilice el operador ==, la cadena más corta se rellenará siempre con espacios al hacer la comparación.
SET ANSI tiene como alcance la sesión de datos actual.
SET ANSI y el Diseñador de consultas Visual FoxPro crea un comando SELECT - SQL en el Diseñador de consultas cuando usted crea una consulta. Al crear condiciones de unión y filtro, si elige las opciones Igual o Exactamente como, el operador = o = = se incluirá en el comando SELECT generado. La configuración de SET ANSI puede afectar al resultado de las consultas que cree y realice en el Diseñador de consultas.
Orden de las cadenas En los comandos SQL, el orden de izquierda a derecha de las dos cadenas en una comparación es irrelevante: cambiar una cadena de un lado a otro del operador = o = = no influye en el resultado de la comparación.
Especifica cómo asigna Visual FoxPro el espacio en disco para
el almacenamiento de los campos memo.
SET BLOCKSIZE TO nBytes
Parámetros
- nBytes
- Especifica el tamaño de los bloques en los que se asigna espacio en disco para los campos memo. Si nBytes es 0, el espacio en disco se asigna en bytes únicos (bloques de 1 byte). Si nBytes es un entero entre 1 y 32, el espacio en disco se asignará en bloques de nBytes bytes multiplicado por 512. Si nBytes es mayor que 32, el espacio en disco se asignará en bloques de nBytes bytes.
- Si especifica un valor de tamaño de bloque mayor que 32, ahorrará mucho espacio en disco.
Observaciones
El valor predeterminado de SET BLOCKSIZE es 64. Para restablecer el tamaño de bloque a un valor diferente después de que se ha creado el archivo, establezca el nuevo valor y luego utilice COPY para crear una nueva tabla. La tabla nueva tendrá el tamaño de bloque especificado.
SET BLOCKSIZE tiene como alcance la sesión actual de datos.
SET COLLATE
Especifica una secuencia de intercalación para los campos de caracteres en operaciones posteriores de indizado y orden.
SET COLLATE TO cSequenceName
Parámetros
cSequenceName
Especifica una secuencia de intercalación. Dispone de las siguientes opciones de secuencias de intercalación.
Opciones | Idioma |
ARABIC | Árabe |
CZECH | Checo |
DUTCH | Holandés |
GENERAL | Inglés, francés, alemán, español moderno, portugués y otros idiomas de Europa occidental |
GERMAN | Orden de la guía telefónica alemana (DIN) |
GREEK | Griego |
HEBREW | Hebreo |
HUNGARY | Húngaro |
ICELAND | Islandés |
JAPANESE | Japonés |
KOREAN | Coreano |
MACHINE | Máquina (es la secuencia de intercalación predeterminada para versiones anteriores de FoxPro) |
NORDAN | Noruego, danés |
PINYIN | Chino simplificado |
POLISH | Polaco |
RUSSIAN | Ruso |
SLOVAK | Eslovaco |
SPANISH | Español tradicional |
STROKE | Chino tradicional y simplificado |
SWEFIN | Sueco, finlandés |
THAI | Tailandés |
TURKISH | Turco |
UNIQWT | Peso único |
Nota
Cuando especifique la opción SPANISH, “ch” se considerará una sola letra ordenada entre la “c” y la “d”, y la “ll” se intercalará entre la “l” y la “m”. Si especifica una opción de secuencia de intercalación como una cadena de caracteres literales, asegúrese de incluir la opción entre comillas:
SET COLLATE TO "SWEFIN"
MACHINE es la opción de secuencia de intercalación predeterminada, y es la secuencia con la que están familiarizados los usuarios de Xbase. Los caracteres se ordenan tal y como aparecen en la página de códigos actual.
GENERAL puede ser preferible para los usuarios de EE.UU. y de Europa occidental. Los caracteres se ordenan tal y como aparecen en la página de códigos actual. Es posible que en versiones de FoxPro anteriores a la 2.5 haya utilizado UPPER( ) o LOWER( ) en campos de caracteres al crear índices. En versiones de FoxPro posteriores a la 2.5, puede especificar en su lugar la opción de secuencia de intercalación GENERAL y omitir la conversión UPPER( ).
Si especifica una opción de secuencia de intercalación distinta de MACHINE y crea un archivo .idx, siempre se creará un .idx compacto.
Use SET(“COLLATE”) para volver a la secuencia de intercalación actual.
Si incluye la siguiente línea en el archivo de configuración de Visual FoxPro, se especificará una secuencia de intercalación al iniciar Visual FoxPro:
COLLATE = cSequenceName
Esto es lo mismo que ejecutar el siguiente comando:
SET COLLATE TO cSequenceName
Observaciones
SET COLLATE le permite ordenar tablas que contienen caracteres acentuados en cualquiera de los idiomas admitidos. Cambiar la configuración de SET COLLATE no afecta a la secuencia de intercalación de índices abiertos con anterioridad. Visual FoxPro mantiene automáticamente los índices existentes, proporcionando flexibilidad para crear muchos tipos distintos de índices, incluso para el mismo campo.
Por ejemplo, si se crea un índice con SET COLLATE definido como GENERAL y posteriormente se cambia el valor de configuración de SET COLLATE a SPANISH, el índice conservará la secuencia de intercalación GENERAL.
SET COLLATE tiene como alcance la sesión actual de datos.
Al utilizar el comando SET COLLATE TO, podría recibir el error “No se encuentra la secuencia de intercalación <
nombre_secuencia>.” Esto sucede cuando se intenta utilizar una secuencia de intercalación incompatible con la página de códigos actual. Para evitar este error, debe especificar una página de códigos compatible en el archivo de configuración de Visual FoxPro. Por ejemplo, podría aparecer el error “No se encuentra la secuencia de intercalación 'CZECH'” al ejecutar el comando
SET COLLATE TO 'CZECH'
.
Para habilitar la compatibilidad con la secuencia de intercalación del checo, agregue la siguiente línea al archivo config.fpw y reinicie Visual FoxPro:
CODEPAGE = 1250
SET DELETED
Especifica si Visual FoxPro procesará o no los registros marcados para su eliminación, y si estarán disponibles o no para utilizarse en otros comandos.
SET DELETED ON | OFF
Parámetros
ON
Especifica que los comandos que realizan operaciones en registros (incluidos los registros de las tablas relacionadas) utilizando un alcance pasen por alto los registros marcados para su eliminación.
OFF
(Predeterminado) Especifica que puedan tener acceso a los registros marcados para eliminación los comandos que actúan sobre registros (incluidos los registros de las tablas relacionadas), utilizando un alcance.
Observaciones
Las consultas que utilizan DELETED( ) para comprobar el estado de los registros pueden optimizarse utilizando la tecnología Rushmore si la tabla está indizada en DELETED( ).
Puede marcar registros para su eliminación ejecutando DELETE - SQL o DELETE, o eligiendo Eliminar registros... en el menú Tabla desde una ventana Examinar o Modificar.
Puede recuperar registros ejecutando RECALL o eligiendo Desmarcar registros... en el menú Tabla de una ventana Examinar o Modificar.
Nota
SET DELETED se pasa por alto si el alcance predeterminado del comando es el registro actual o si incluye un alcance de un único registro. INDEX y REINDEX siempre pasan por alto SET DELETED e indizan todos los registros de la tabla.
SET DELETED tiene como alcance la sesión actual de datos.
SET EXACT
Especifica las reglas que utiliza Visual FoxPro al comparar dos cadenas de diferente longitud.
SET EXACT ON | OFF
Parámetros
- ON
Especifica que las expresiones deben coincidir carácter a carácter para que se consideren equivalentes. La comparación pasa por alto los espacios en blanco finales que puedan existir en las expresiones. Para la comparación, la más corta de las dos expresiones se rellena por la derecha con espacios en blanco hasta igualar la longitud de la expresión más larga.
- OFF
-
(Predeterminado) Especifica que, para que se consideren equivalentes, las
expresiones deben coincidir carácter a carácter hasta llegar al final
de la expresión del lado derecho.
Observaciones
La configuración de SET EXACT no tiene efecto si ambas cadenas tienen la misma longitud.
Comparaciones de cadenas
Visual FoxPro tiene dos operadores relacionales para probar la igualdad. El operador = realiza una comparación entre dos valores del mismo tipo. Este operador es apropiado para comparar datos de tipo Character, Numeric, Date y Logical.
Sin embargo, cuando compara expresiones de tipo Character con el operador =, el resultado puede no ser exactamente el que usted espera. Las expresiones Character se comparan carácter a carácter de izquierda a derecha hasta que una de las los expresiones no es igual a la otra, hasta que se llega al final de la expresión que hay al lado derecho del operador = (SET EXACT OFF) o hasta que se llega al final de las dos expresiones (SET EXACT ON).
El operador = = puede utilizarse cuando se necesita una comparación exacta de datos de tipo Character. Al comparar dos expresiones de caracteres con el operador ==, las expresiones a ambos lados de dicho operador se consideran iguales si contienen exactamente los mismos caracteres, incluidos los espacios en blanco. La configuración de SET EXACT se pasa por alto al comparar cadenas de caracteres con el operador ==.
La tabla siguiente muestra cómo afecta a las comparaciones la elección del operador y la configuración de SET EXACT. (Los subrayados representan espacios en blanco.)
Comparación | = EXACT OFF | = EXACT ON | == EXACT ON o OFF |
“abc” = “abc” | Coincide | Coincide | Coincide |
“ab” = “abc” | No coincide | No coincide | No coincide |
“abc” = “ab” | Coincide | No coincide | No coincide |
“abc” = “ab_” | No coincide | No coincide | No coincide |
“ab” = “ab_” | No coincide | Coincide | No coincide |
“ab_” = “ab” | Coincide | Coincide | No coincide |
“” = “ab” | No coincide | No coincide | No coincide |
“ab” = “” | Coincide | No coincide | No coincide |
"__" = "" | Coincide | Coincide | No coincide |
"" = "___" | No coincide | Coincide | No coincide |
TRIM(“___”) = “” | Coincide | Coincide | Coincide |
“” = TRIM(“___”) | Coincide | Coincide | Coincide |
SET EXACT tiene como alcance la sesión actual de datos.
SET EXCLUSIVE
Especifica si Visual FoxPro abre los archivos de tabla para uso exclusivo o compartido en una red.
SET EXCLUSIVE ON | OFF
Parámetros
- ON
-
- (El valor predeterminado para la sesión de datos global.) Limita el acceso a una tabla abierta en red al usuario que la abrió. Otros usuarios de la red no tienen acceso a la tabla. A diferencia de FLOCK( ), SET EXCLUSIVE ON impide también que otros usuarios tengan acceso de sólo lectura. También puede abrirse un archivo en una red para uso exclusivo incluyendo la cláusula EXCLUSIVE con el comando USE. No es necesario realizar un bloqueo de registro o archivo en una tabla abierta para uso exclusivo.
-
-
- Al abrir una tabla para uso exclusivo se asegura que otros usuarios no puedan cambiar el archivo. Algunos comandos no pueden ejecutarse a menos que se abra una tabla para uso exclusivo. Estos comandos son INSERT, INSERT BLANK, MODIFY STRUCTURE, PACK, REINDEX y ZAP.
-
-
- OFF
-
-
- (El valor predeterminado para una sesión de datos privada.) Permite que cualquier usuario de la red pueda compartir y modificar una tabla abierta en red.
-
-
Observaciones
Al cambiar la configuración de SET EXCLUSIVE no cambiará el estado de las tablas abiertas previamente. Por ejemplo, si una tabla se abre con SET EXCLUSIVE ON y SET EXCLUSIVE se cambia posteriormente a OFF, la tabla mantendrá su estado de uso exclusivo.
SET EXCLUSIVE tiene como alcance la sesión actual de datos.
-
SET FULLPATH
Especifica si CDX( ), DBF( ), MDX( ) y NDX( ) devuelven la ruta de acceso en un nombre de archivo.
SET FULLPATH ON | OFF
Parámetros
- ON
-
- (Predeterminado) Especifica que CDX( ), DBF( ), IDX( ) y NDX( ) devuelven el designador de unidad, la ruta de acceso y el nombre del archivo.
-
-
- OFF
-
- Solamente se devolverá el designador de unidad y el nombre de archivo.
-
-
-
-
-
-
-
- SET MULTILOCKS
- Determina si puede bloquear múltiples registros con LOCK( ) o RLOCK( ).
SET MULTILOCKS ON | OFF
Parámetros
- ON
-
-
- Le permite intentar bloquear un conjunto de registros. Para intentar bloquear varios registros, incluya una serie de números de registro en LOCK( ) o RLOCK( )..
-
-
-
-
- OFF
-
-
- (Predeterminado) Le permite intentar bloquear un registro único con LOCK( ) o RLOCK( ).
Observaciones
Cuando se abre una tabla para uso compartido en una red, puede intentar bloquear más de un registro de un archivo de tabla. La configuración de SET MULTILOCKS determina si puede intentar bloquear un registro único o un conjunto de registros. Los registros pueden bloquearse con la función LOCK( ) o RLOCK( ).
Nota
Al conmutar SET MULTILOCKS de ON a OFF o de OFF a ON, se ejecuta implícitamente UNLOCK ALL; es decir, se liberan todos los registros bloqueados de todas las áreas de trabajo.
SET MULTILOCKS alcanza la sesión de datos actual.
Es necesario que MULTILOCKS esté en ON antes de activar el almacenamiento de filas o de tablas en búfer con CURSORSETPROP( ). Para obtener más información acerca del almacenamiento de filas y tablas en búfer, vea
CURSORSETPROP( ).
Si activa la casilla de verificación Activar almacenamiento de datos en búfer en el cuadro de diálogo Propiedades del área de trabajo (que aparece al elegir el botón Propiedades en la ventana Sesión de datos), MULTILOCKS se establecerá automáticamente en ON para la sesión de datos actual. Sin embargo, el hecho de desactivar la casilla de verificación Activar almacenamiento de datos en búfer no establece MULTILOCKS en OFF para la sesión de datos actual.
-
SET NULL
Determina si los comandos ALTER TABLE, CREATE TABLE e INSERT - SQL admiten valores NULL.
SET NULL ON | OFF
Parámetros
- ON
-
- Especifica que todas las columnas de una tabla creadas con ALTER TABLE y CREATE TABLE permiten valores NULL. Es posible anular el soporte para valores NULL para columnas de la tabla incluyendo la cláusula NOT NULL en las definiciones de columnas.
-
-
- Además, especifica que INSERT - SQL intentará insertar valores NULL en cualquier columna que no esté incluida en la cláusula INSERT - SQL VALUE. INSERT - SQL sólo podrá insertar correctamente valores NULL en columnas que admitan valores NULL.
-
-
-
- OFF
-
-
- (Predeterminado) Especifica que todas las columnas de una tabla creada con ALTER TABLE y CREATE TABLE no admiten valores NULL. Es posible designar soporte de valores NULL para columnas en ALTER TABLE y CREATE TABLE incluyendo la cláusula NULL en las definiciones de columnas.
-
-
- Asimismo, especifica que INSERT - SQL insertará valores en blanco en las columnas no incluidas en la cláusula INSERT - SQL VALUE.
-
-
-
-
- Nota
-
- Si agrega soporte para valores NULL en una o varias columnas de una tabla, el límite de número de columnas para dicha tabla disminuirá de 255 a 254.
-
-
Observaciones
SET NULL sólo afecta al soporte para valores NULL de ALTER TABLE, CREATE TABLE e INSERT - SQL. Otros comandos no se ven afectados por SET NULL. SET NULL tiene como alcance la sesión actual de datos.
Ejemplo
El ejemplo siguiente demuestra cómo afecta SET NULL al soporte de valores NULL. La primera tabla,
employee
, se crea con SET NULL ON, por lo que sus campos aceptan valores NULL. Se usa REPLACE para situar un valor NULL en el campo
cLastName
. La segunda tabla,
staff
, se crea con SET NULL OFF, por lo que sus campos no aceptan valores NULL. Se usa REPLACE para colocar cero en el campo
cLastName
.
CLOSE DATABASES
SET NULL ON && Fields will support null values
CREATE TABLE employee (cLastName C(20), ySalary Y(12,2))
APPEND BLANK && Add a new blank record
REPLACE cLastName WITH .NULL. && cLastName supports null values
SET NULL OFF && Fields will not support null values
CREATE TABLE staff (cLastName C(20), ySalary Y(12,2))
APPEND BLANK && Add a new blank record
REPLACE cLastName WITH 0 && Doesn't support null values
SET PATH
Especifica una ruta de acceso para buscar archivos.
SET PATH TO [Path]
Parámetros
- TO [Path]
- Especifica los directorios en los que desea que busque Visual FoxPro. Use comas o punto y coma para separar los directorios.
Nota Visual FoxPro no reconocerá correctamente un nombre de ruta de acceso si el nombre del disco o del directorio contiene un signo de admiración (!).
En todas las plataformas FoxPro, las funciones que devuelven información acerca de las rutas de acceso, como CURDIR( ), DBF( ) y SYS(2003), utilizan convenciones de denominación de rutas de acceso de MS-DOS en los valores que devuelven.
Observaciones
Ejecute SET PATH TO sin
Path para restaurar la ruta de acceso al directorio predeterminado. Use SET DEFAULT para especificar el directorio predeterminado y CURDIR( ) para devolver el directorio predeterminado actual.
SET PATH no tiene como alcance la sesión de datos actual; los cambios realizados en la ruta de acceso predeterminada con el comando SET PATH afectarán a todas las sesiones de datos.
SET REPROCESS
Especifica cuántas veces o durante cuánto tiempo intenta Visual FoxPro bloquear un archivo o un registro después de que fracase un intento de bloqueo.
SET REPROCESS TO nAttempts [SECONDS] [SYSTEM] | TO AUTOMATIC [SYSTEM]
Parámetros
- TO nAttempts [SECONDS]
- Especifica el número de veces que Visual FoxPro intenta bloquear un registro o un archivo después de un intento fracasado. El valor predeterminado es 0 y el valor máximo es 32.000. SECONDS especifica que Visual FoxPro intenta bloquear un archivo o registro durante nAttempts segundos. Solamente está disponible cuando nAttempts es mayor que cero.
Por ejemplo, si nAttempts es 30, Visual FoxPro intentará bloquear un registro o archivo hasta 30 veces. Si también incluye SECONDS (
SET REPROCESS TO 30 SECONDS
), Visual FoxPro intentará bloquear continuamente un registro o archivo durante un máximo de 30 segundos.
Aparece un mensaje del sistema (“Esperando bloqueo... ”) si SET STATUS está en ON.
Si hay una rutina ON ERROR activa y fracasan los intentos realizados por el comando para bloquear el registro o archivo, se ejecutará la rutina ON ERROR. Sin embargo, si una función intenta establecer el bloqueo, no se ejecutará la rutina y la función devolverá falso (.F.).
Si no hay ninguna rutina ON ERROR activa, un comando intenta bloquear el registro o archivo, y este bloqueo no se puede realizar, aparecerá una alerta adecuada (por ejemplo,“El registro está siendo utilizado por otra persona”). Si una función intenta realizar el bloqueo, la alerta no se mostrará y la función devolverá falso (.F.).
Si nAttempts es 0 (el valor predeterminado) y ejecuta un comando o función que intenta bloquear un registro o archivo, Visual FoxPro intentará bloquear el registro o archivo indefinidamente. Visual FoxPro muestra el mensaje del sistema, “Intentando bloquear... Presione Esc para cancelar,” mientras intenta bloquear el registro o el archivo. El bloqueo se realiza y el mensaje del sistema se borra si el registro o el archivo llegan a estar disponibles para bloquearse mientras espera. Si una función intenta realizar el bloqueo, devolverá verdadero (.T.).
Si presiona ESC en respuesta al mensaje del sistema, aparecerá una alerta adecuada (por ejemplo, “El registro está siendo utilizado por otra persona”). Si una función intenta realizar el bloqueo, la alerta no se mostrará y la función devolverá falso (.F.).
Si hay una rutina ON ERROR activa y un comando intenta bloquear el registro o el archivo, la rutina ON ERROR tendrá preferencia sobre otros intentos para bloquear el registro o el archivo. La rutina ON ERROR se ejecuta inmediatamente. Visual FoxPro no intenta realizar bloqueos adicionales de registros ni de archivos, y no muestra el mensaje del sistema.
Si nAttempts es –1, Visual FoxPro intentará bloquear el registro o archivo indefinidamente. No podrá cancelar los intentos de bloqueo presionando la tecla ESC y no se ejecutará ninguna rutina ON ERROR.
Cuando nAttempts está establecido en –2, equivale a la utilización de la cláusula TO AUTOMATIC.
Visual FoxPro solamente muestra el mensaje del sistema “Esperando bloqueo ... ” si SET STATUS está en ON.
Si otro usuario ha establecido un bloqueo en el registro o archivo que intenta bloquear, deberá esperar
hasta que el otro usuario libere el bloqueo.
- TO AUTOMATIC
- Especifica que Visual FoxPro intenta bloquear indefinidamente el registro o el archivo (lo que equivale a establecer nAttempts en
–2
). Esta cláusula se parece al establecimiento de nAttempts a -1, excepto porque incluye la posibilidad de salir del intento de bloquear un registro o un archivo. El mensaje del sistema “Intentando bloquear... Presione Esc para cancelar” aparece mientras Visual FoxPro intenta bloquear el registro o archivo. El bloqueo se realiza y el mensaje del sistema se borra si el registro o el archivo llegan a estar disponibles para bloquearse mientras espera. Si se utiliza una función para establecer el bloqueo, la función devolverá verdadero (.T.).
Si no hay una rutina ON ERROR activa y presiona ESC en respuesta al mensaje del sistema, se mostrará la alerta apropiada (por ejemplo, “El registro está siendo utilizado por otra persona”). Si una función intenta realizar el bloqueo, la alerta no se mostrará y la función devolverá falso (.F.).
Si una rutina ON ERROR está activa y presiona ESC, se ejecutará la rutina ON ERROR. Si una función intenta establecer el bloqueo, no se ejecutará la rutina ON ERROR y la función devolverá falso (.F.).
- SYSTEM
- Especifica que SET REPROCESS se aplica a la sesión de datos del sistema, que controla las tablas utilizadas internamente, como una base de datos, FOXUSER, archivos .scx, etc. Para obtener más información acerca del bloqueo de registros y archivos, así como del uso compartido de tablas en una red.
Observaciones
Un bloqueo de registro o de archivo no siempre se consigue en el primer intento. Con frecuencia, un registro o archivo está bloqueado por otro usuario de la red. SET REPROCESS determina si Visual FoxPro debe realizar más intentos de bloquear el registro o archivo cuando fracasa el primer intento. Puede especificar cuántos intentos más se harán o durante cuánto tiempo se intentará. Una rutina ON ERROR afecta a cómo se controlan los intentos de bloqueo fracasados.
SET REPROCESS tiene como alcance la sesión actual de datos. SET REPROCESS SYSTEM tiene como alcance la sesión de datos del sistema.
Nota Los cambios realizados en la ficha Datos del cuadro de diálogo Opciones de herramientas sólo afectan a la sesión actual.
Ejemplo:
SET ("REPROCESS") && Returns the current session setting
SET("REPROCESS",1) && Returns the system session setting
* In the config.fpw file, the following code changes the default session.
REPROCESS = 100