Compatibilidad API de ODBC

El controlador ODBC de Visual FoxPro es compatible con:

•	Todas las API a nivel de núcleo

•	Todas las API de nivel 1

•	La mayor parte de las API de nivel 2

Para obtener más detalles sobre cualquier función de la API de ODBC, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.

Cada tema de la API proporciona un breve resumen y detalles específicos de Visual FoxPro. Observe que varias de las funciones tienen distinto comportamiento en función de si el origen de datos está definido como una conexión a un directorio de tablas libres (archivos .DBF) o a una base de datos de Visual FoxPro (archivo .DBC). Algunas operaciones sólo se admiten para conexiones de base de datos.

Compatibilidad con API a nivel de núcleo

Compatibilidad con API de nivel 1

Compatibilidad con API de nivel 2


Compatibilidad con API a nivel de núcleo

Todas las API a nivel de núcleo de ODBC son comapatibles. A continuación se expone una breve descripción de cada una de ellas, así como otros detalles como que pertenecen a Visual FoxPro.

SQLAllocConnect

SQLAllocEnv

SQLAllocStmt

SQLBindCol

SQLCancel

SQLColAttributes

SQLConnect

SQLDescribeCol

SQLDisconnect

SQLError

SQLExecDirect

SQLExecute

SQLFetch

SQLFreeConnect

SQLFreeEnv

SQLFreeStmt

SQLGetCursorName

SQLNumResultCols

SQLPrepare

SQLRowCount

SQLSetCursorName

SQLTransact


Compatibilidad con API de nivel 1

Todas las API de ODBC de nivel 1 son compatibles. A continuación se expone una breve descripción de cada una de ellas, así como otros detalles como que pertenecen a Visual FoxPro.

SQLBindParameter

SQLColumns

SQLDriverConnect

SQLGetConnectOption

SQLGetData

SQLGetFunctions

SQLGetInfo

SQLGetStmtOption

SQLGetTypeInfo

SQLParamData

SQLPutData

SQLSetConnectOption

SQLSetStmtOption

SQLSpecialColumns

SQLStatistics

SQLTables


Compatibilidad con API de nivel 2

Son compatibles total o parcialmente las siguientes API de ODBC de nivel 2:

SQLDataSources

SQLDrivers

SQLExtendedFetch

SQLMoreResults

SQLNumParams

SQLParamOptions

SQLPrimaryKeys

SQLSetPos

SQLSetScrollOptions (compatibilidad parcial)

No son compatibles las siguientes API de nivel 2:

SQLBrowseConnect

SQLColumnPrivileges

SQLDescribeParam

SQLForeignKeys

SQLNativeSql

SQLProcedureColumns

SQLProcedures

SQLTablePrivileges


SQLAllocConnect

Compatibilidad: Total         Conformidad con API de ODBC: A nivel de núcleo

Asigna memoria para un controlador de conexión, hdbc, en el entorno identificado por henv. El Administrador de controladores procesa esta llamada y llama al SQLAllocConnect del controlador siempre que se llame a SQLConnect, SQLBrowseConnect o SQLDriverConnect.

Para obtener más información sobre SQLAllocConnect, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLAllocEnv

Compatibilidad: Total         Conformidad con API de ODBC: A nivel de núcleo

Asigna memoria para un controlador de entorno, henv, e inicializa la interfaz a nivel de llamadas ODBC para su utilización por una aplicación.

Para obtener más información sobre SQLAllocEnv, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLAllocStmt

Compatibilidad: Total         Conformidad con API de ODBC: A nivel de núcleo

Asigna memoria para un controlador de instrucción y lo asocia a la conexión especificada por hdbc. El Administrador de controladores pasa esta llamada al controlador, que asigna la memoria para la estructura hstmt.

Para obtener más información sobre SQLAllocStmt, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLBindCol

Compatibilidad: Total         Conformidad con API de ODBC: A nivel de núcleo

Asigna espacio de almacenamiento para una columna de resultados y especifica el tipo de resultado. Cuando se llama a SQLFetch o a SQLExtendedFetch, el controlador coloca los datos de todas las columnas dependientes en las ubicaciones asignadas. Vea SQLGetTypeInfo para conocer la correspondencia entre los tipos de datos de ODBC y los de Visual FoxPro.

Para obtener más información sobre SQLBindCol, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLBindParameter

Compatibilidad: Total         Conformidad con API de ODBC: Nivel uno

Asocia un búfer con un marcador de parámetro en una instrucción SQL. El controlador ODBC de Visual FoxPro admite parámetros de entrada según se especifica en el argumento fParamType.

Para obtener más información sobre SQLBindParameter, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLCancel

Compatibilidad: Total         Conformidad con API de ODBC: A nivel de núcleo

Cancela el procesamiento en un controlador de instrucción, hstmt.

Para obtener más información sobre SQLCancel, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLColAttributes

Compatibilidad: Total         Conformidad con API de ODBC: A nivel de núcleo

Devuelve información de descriptor para una columna en un conjunto de resultados; la información de descriptor se devuelve como una cadena de caracteres, un valor dependiente del descriptor de 32 bits o un valor entero.

Nota  No se puede utilizar SQLColAttributes para devolver información sobre el marcador de columna (columna 0).

El controlador ODBC de Visual FoxPro admite todos los valores fDescType. La tabla siguiente incluye comentarios sobre la implementación en el controlador de los valores seleccionados:

fDescType	Comentario
SQL_COLUMN_AUTO_INCREMENT	Devuelve FALSE: Visual FoxPro no tiene campos de tipo contador.
SQL_COLUMN_CASE_SENSITIVE	Siempre devuelve TRUE si el tipo de datos de la columna es Carácter.
SQL_COLUMN_LABEL	Devuelve el nombre de la columna, que también lo devuelve SQL_COLUMN_NAME.
SQL_COLUMN_MONEY	DevuelveTRUE si el tipo de datos de la columna es Moneda (representado por “Y” en el lenguaje Visual FoxPro).
SQL_COLUMN_OWNER_NAME	Devuelve siempre una cadena vacía.
SQL_COLUMN_SEARCHABLE	Devuelve SQL_UNSEARCHABLE para columnas de tipo General; estas columnas no se pueden utilizar en una cláusula WHERE. Devuelve SQL_SEARCHABLE para columnas de tipo Carácter o Memo con NOCPTRANS no definido; estas columnas se pueden utilizar en una cláusula WHERE con cualquier operador de comparación. Devuelve SQL_ALL_EXCEPT_LIKE para todos los demás tipos de columna; estas columnas se pueden utilizar en una cláusula WHERE con todos los operadores de comparación excepto LIKE.
Para obtener más información sobre SQLColAttributes, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLColumns

Compatibilidad: Total         Conformidad con API de ODBC: Nivel uno

Crea un conjunto de resultados para una tabla que es la lista de columnas para la tabla o tablas especificadas.

Para obtener más información sobre SQLColumns, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLConnect

Compatibilidad: Total         Conformidad con API de ODBC: A nivel de núcleo

Conecta con un origen de datos, que puede ser una base de datos o un directorios de tablas. El controlador ODBC de Visual FoxPro pasa por alto los argumentos szUID, cbUID, szAuthStr y cbAuthStr.

Para obtener más información sobre SQLConnect, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLDataSources

Compatibilidad: Total         Conformidad con API de ODBC: Nivel dos

Enumera nombres de orígenes de datos.

Para obtener más información sobre SQLDataSources, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLDescribeCol

Compatibilidad: Total         Conformidad con API de ODBC: A nivel de núcleo

Devuelve el nombre, el tipo, la precisión, la escala y la capacidad para admitir valores NULL de la columna de resultados dada.

Para obtener más información sobre SQLDescribeCol, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLDisconnect

Compatibilidad: Total         Conformidad con API de ODBC: A nivel de núcleo

Cierra una conexión.

Para obtener más información sobre SQLDisconnect, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLDriverConnect

Compatibilidad: Total         Conformidad con API de ODBC: Nivel uno

Conecta con un origen de datos existente, que puede ser una base de datos o un directorio de tablas libres. Las palabras clave de atributo ODBC UID y PWD se pasan por alto. La tabla siguiente enumera las otras palabras clave de atributo admitidas.

Palabra clave de atributo ODBC	Valor del atributo
DSN
UID	El controlador ODBC de Visual FoxPro lo pasa por alto, pero no genera un error.
PWD	El por el controlador ODBC de Visual FoxPro lo pasa por alto, pero no genera un error.
Driver	Nombre y ubicación del controlador ODBC de Visual FoxPro; implementado por el Administrador de controladores.
Palabra clave de atributo del controlador ODBC de Visual FoxPro	Valor del atributo
BackgroundFetch	“Yes” o “No”
Collate	“Machine” u otra secuencia de ordenación. Vea SET COLLATE para obtener una lista de las secuencias de ordenación admitidas.
Description
Exclusive	“Yes” o “No”
SourceDB	Una ruta totalmente cualificada a un directorio que contiene cero o más tablas libres, o la ruta y nombre de archivo absolutos para una base de datos.
SourceType	“DBC” o “DBF”
Version
Si no se especifica el nombre del origen de datos, el Administrador de controladores solicita al usuario la información (dependiendo del valor del argumento fDriverCompletion) y después continúa. Si es necesaria más información, el controlador ODBC de Visual FoxPro muestra el cuadro de diálogo de petición de datos.

Para obtener más información sobre SQLDriverConnect, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLDrivers

Compatibilidad: Total         Conformidad con API de ODBC: Nivel dos

Enumera las descripciones de controlador y las palabras clave de atributo de controlador.

Para obtener más información sobre SQLDrivers, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLError

Compatibilidad: Total         Conformidad con API de ODBC: A nivel de núcleo

Devuelve información de error o de estado relativa al último error. El controlador mantiene una pila o lista de errores que se pueden devolver para los argumentos hstmt, hdbc y henv, dependiendo de cómo se haga la llamada a SQLError. La cola de errores se inicializa después de cada instrucción.

La tabla siguiente describe los argumentos SQLError y devuelve los valores usados por el controlador.

Argumento SQLError	Descripción del valor devuelto
szSQLState	Valor de SQLSTATE representado por el error.
pfNativeError	Un valor distinto de cero indica un Mensaje de error nativo del controlador ODBC de Visual FoxPro. Un valor cero indica que el controlador ha detectato un error y se ha aplicado al   Código de error ODBC adecuado.
szErrorMsg	Texto para el error nativo o para el error ODBC.
pcbErrorMsg	Longitud del texto del mensaje más la longitud de los identificadores.
Para obtener más información sobre los mensajes de error del controlador, vea Introducción a los mensajes de error. Para obtener más información sobre SQLError, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLExecDirect

Compatibilidad: Total         Conformidad con API de ODBC: A nivel de núcleo

Ejecuta una nueva instrucción SQL preparable. El controlador ODBC de Visual FoxPro utiliza los valores actuales de las variables marcador de parámetro si existen parámetros en la instrucción.

Si quiere crear un comando de proceso por lotes para ejecutar más de una instrucción SQL a la vez, utilice un punto y coma (;) para separar cada instrucción SQL.

Si los nombres de tabla, vista o campo contienen espacios en blanco, escriba los nombres entre comillas invertidas. Por ejemplo, si la base de datos contiene una tabla llamada Mi Tabla y un campo Mi Campo, escriba cada elemento del identificador como se indica a continuación:

SELECT `Mi Tabla`.`Campo1`, `Mi Tabla`.`Campo2` FROM `Mi Tabla`

Para obtener más información sobre SQLExecDirect, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLExecute

Compatibilidad: Total         Conformidad con API de ODBC: A nivel de núcleo

Ejecuta una instrucción SQL preparada (una instrucción preparada por SQLPrepare). El controlador utiliza los valores actuales de las variables marcador de parámetro si existen parámetros en la instrucción.

Para obtener más información sobre SQLExecute, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLExtendedFetch

Compatibilidad: Total         Conformidad con API de ODBC: Nivel dos

Similar a SQLFetch, pero devuelve múltiples filas utilizando una matriz para cada columna. El conjunto de resultados es desplazable hacia adelante y se puede hacer desplazable hacia atrás si se define el cursor como estático, no sólo con desplazamiento hacia adelante.

De forma predeterminada, el controlador ODBC de Visual FoxPro no devuelve filas marcadas como eliminadas en una tabla de FoxPro. Las filas marcadas para su eliminación, pero no eliminadas aún de una tabla, no se pueden incluir en el cursor del conjunto de resultados. Puede modificar este comportamiento utilizando el comando SET DELETED.

Para obtener más información sobre SQLExtendedFetch, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLFetch

Compatibilidad: Total         Conformidad con API de ODBC: A nivel de núcleo

Recupera una fila de un conjunto de resultados en las ubicaciones especificadas por las llamadas previas a SQLBindCol. Prepara el controlador para una llamada a SQLGetData para las columnas independientes.

Para obtener más información sobre SQLFetch, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLFreeConnect

Compatibilidad: Total         Conformidad con API de ODBC: A nivel de núcleo

Libera un controlador de conexión y libera toda la memoria asignada al controlador.

Para obtener más información sobre SQLFreeConnect, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLFreeEnv

Compatibilidad: Total         Conformidad con API de ODBC: A nivel de núcleo

Cierra el controlador ODBC de Visual FoxPro y libera toda la memoria asociada al controlador.

Para obtener más información sobre SQLFreeEnv, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLFreeStmt

Compatibilidad: Total         Conformidad con API de ODBC: A nivel de núcleo

Detiene el procesamiento asociado a un hstmt específico, cierra los cursores abiertos asociados al hstmt, descarta los resultados pendientes y, opcionalmente, libera todos los recursos asociados al controlador de la instrucción.

Para obtener más información sobre SQLFreeStmt, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLGetConnectOption

Compatibilidad: Parcial         Conformidad con API de ODBC: Nivel uno

Devuelve el valor actual de una opción de conexión. Esta función está admitida parcialmente: el controlador admite todos los valores del argumento fOption, pero no admite algunos valores de vParam para el argumento QL_TXN_ISOLATION de fOption.

Para ver una lista completa de argumentos de fOption, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.

La tabla siguiente describe sólo aquellos argumentos con un comportamiento específico de la implementación de SQLGetConnectOption del controlador ODBC de Visual FoxPro:

fOption	Observaciones
SQL_AUTOCOMMIT	Si elige SQL_AUTOCOMMIT_OFF, su aplicación debe confirmar o deshacer transacciones explícitamente con SQLTransact; el controlador ODBC de Visual FoxPro no confirma automáticamente una instrucción de transacción hasta que se ha completado. El controlador inicia una transacción si la instrucción lo permite.
SQL_CURRENT_QUALIFIER	Puede ser un nombre de base de datos totalmente cualificado (archivo .DBC) o una ruta totalmente cualificada a un directorio que contiene cero o más tablas (archivos .DBF).
SQL_LOGINTIMEOUT	Devuelve el error “El controlador no está capacitado”
SQL_CURSORS	Devuelve el error “El controlador no está capacitado”
SQL_PACKET_SIZE	Devuelve el error “El controlador no está capacitado”
SQL_TXN_ISOLATION	El controlador sólo permite: SQL_TXN_READ_COMMITTED; Los siguientes vParams no se admiten: SQL_TXN_READ_UNCOMMITTED; SQL_TXN_REAPEATABLE_READ; SQL_TXN_SERIALIZABLE
Para obtener más información sobre SQLGetConnectOption, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLGetCursorName

Compatibilidad: Total         Conformidad con API de ODBC: A nivel de núcleo

Devuelve el nombre del cursor asociado al hstmt dado. SQLGetCursorName está incluido en la API del controlador ODBC de Visual FoxPro porque es parte de la funcionalidad de la API a nivel de núcleo; no se puede usar con otras funciones de la API porque el controlador no admite actualizaciones posicionadas.

Para obtener más información sobre SQLGetCursorName, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLGetData

Compatibilidad: Total         Conformidad con API de ODBC: Nivel uno

Recupera el valor de un único campo del registro actual del conjunto de resultados dado.

Para obtener más información sobre SQLGetData, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLGetFunctions

Compatibilidad: Total         Conformidad con API de ODBC: Nivel uno

Devuelve TRUE para todas las funciones compatibles.

El controlador ODBC de Visual FoxPro es compatible con todas las funciones de la API ODBC de nivel 1 y a nivel de núcleo. La tabla siguiente indica si el controlador es compatible con una función específica de nivel 2:

fFunction	Compatible
SQL_API_SQLBROWSECONNECT	No
SQL_API_SQLCOLUMNPRIVELEGES	No
SQL_API_SQLDATASOURCES	Sí
SQL_API_SQLDESCRIBEPARAM	No
SQL_API_SQLDRIVERS	Sí
SQL_API_SQLEXTENDEDFETCH	Sí
SQL_API_SQLFOREIGNKEYS	No
SQL_API_SQLMORERESULTS	Sí
SQL_API_SQLNATIVESQL	No
SQL_API_SQLNUMPARAMS	Sí
SQL_API_SQLPARAMOPTIONS	Sí
SQL_API_SQLPRIMARYKEYS	Sí
SQL_API_SQLPROCEDURECOLUMNS	No
SQL_API_SQLPROCEDURES	No
SQL_API_SQLSETPOS	Sí
SQL_API_SQLSETSCROLLOPTIONS	Sí
SQL_API_SQLTABLEPRIVILEGES	No
Para obtener más información sobre SQLGetFunctions, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLGetInfo

Compatibilidad: Total         Conformidad con API de ODBC: Nivel uno

Devuelve información general sobre el controlador ODBC de Visual FoxPro y el origen de datos asociado a un controlador de conexión, hdbc. La lista siguiente muestra el valor devuelto por el controlador ODBC de Visual FoxPro para cada argumento fInfoType y comentarios relativos a los valores devueltos.

Para obtener más información sobre SQLGetInfo, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.

A

SQL_ACCESSIBLE_PROCEDURES devuelve ‘N’.

SQL_ACCESSIBLE_TABLES devuelve ‘Y’.

SQL_ACTIVE_CONNECTIONS devuelve 0.

SQL_ACTIVE_STATEMENTS devuelve 0.

SQL_ALTER_TABLE devuelve
SQL_AT_ADD_COLUMN
SQL_AT_DROP_COLUMN

B

SQL_BOOKMARK_PERSISTENCE devuelve SQL_BP_SCROLL.

C

SQL_COLUMN_ALIAS devuelve ‘Y’.

SQL_CONCAT_NULL_BEHAVIOR devuelve SQL_CB_NULL

SQL_CONVERT_BIGINT devuelve 0. El controlador ODBC de Visual FoxPro no admite BigInt.

SQL_CONVERT_BINARY devuelve 0

SQL_CONVERT_BIT devuelve 0

SQL_CONVERT_CHAR devuelve 0

SQL_CONVERT_DATE devuelve 0

SQL_CONVERT_DECIMAL devuelve 0

SQL_CONVERT_DOUBLE devuelve 0

SQL_CONVERT_FLOAT devuelve 0

SQL_CONVERT_INTEGER devuelve 0

SQL_CONVERT_LONGVARBINARY devuelve 0

SQL_CONVERT_LONGVARCHAR devuelve 0

SQL_CONVERT_NUMERIC devuelve 0

SQL_CONVERT_REAL devuelve 0

SQL_CONVERT_SMALLINT devuelve 0

SQL_CONVERT_TIME devuelve 0

SQL_CONVERT_TIMESTAMP devuelve 0

SQL_CONVERT_TINYINT devuelve 0

SQL_CONVERT_VARBINARY devuelve 0

SQL_CONVERT_VARCHAR devuelve 0

SQL_CONVERT_FUNCTIONS devuelve 0

SQL_CORRELATION_NAME devuelve SQL_CN_ANY

SQL_CURSOR_COMMIT_BEHAVIOR devuelve SQL_CB_PRESERVE

SQL_CURSOR_ROLLBACK_BEHAVIOR devuelve SQL_CB_PRESERVE

D

SQL_DATA_SOURCE_NAME devuelve el valor pasado como DSN a SQLConnect o SQLDriverConnect; devuelve una cadena vacia si no se ha especificado DSN.

SQL_DATA_SOURCE_READ_ONLY devuelve ‘N’

SQL_DATABASE_NAME devuelve una ruta UNC completa a la base de datos actual si el origen de datos es una base de datos. Si el origen de datos conecta con un directorio de tablas, la función devuelve la ruta al directorio.

SQL_DBMS_NAME devuelve “Visual FoxPro”

SQL_DBMS_VER devuelve “03.00.0000”

SQL_DEFAULT_TXN_ISOLATION devuelve SQL_TXN_READ_COMMITTED. Las lecturas “modificadas” no son posibles, pero sí lo son las lecturas y fantasmas no repetibles

SQL_DRIVER_HDBC está implementado por el Administrador de controladores

SQL_DRIVER_HENV está implementado por el Administrador de controladores

SQL_DRIVER_HLIB está implementado por el Administrador de controladores

SQL_DRIVER_HSTMT está implementado por el Administrador de controladores

SQL_DRIVER_NAME  devuelve “VFPODBC.DLL”

SQL_DRIVER_ODBC_VER devuelve “02.50” (SQL_SPEC_MAJOR, SQL_SPEC_MINOR)

SQL_DRIVER_VER devuelve “01.00.0000”

E

SQL_EXPRESSIONS_IN_ORDERBY devuelve ‘N’

F

SQL_FETCH_DIRECTION devuelve
SQL_FD_FETCH_NEXT
SQL_FD_FETCH_FIRST
SQL_FD_FETCH_LAST
SQL_FD_FETCH_PRIOR
SQL_FD_FETCH_ABSOLUTE
SQL_FD_FETCH_RELATIVE
SQL_FD_FETCH_BOOKMARK

SQL_FILE_USAGE devuelve SQL_FILE_QUALIFIER para orígenes de datos de base de datos (archivo .DBC) y tabla libre (archivo .DBF)

G-H

SQL_GETDATA_EXENSIONS devuelve
SQL_GD_ANY_COLUMN
SQL_GD_ANY_BLOCK
SQL_GD_ANY_BOUND
SQL_GD_ANY_ORDER

SQL_GROUP_BY devuelve SQL_GB_NO_RELATION

I-J

SQL_IDENTIFIER_CASE devuelve SQL_IC_MIXED

SQL_IDENTIFIER_QUOTE_CHAR devuelve `

K

SQL_KEYWORDS devuelve “”

L

SQL_LIKE_ESCAPE_CLAUSE devuelve ‘N’

SQL_LOCK_TYPES devuelve SQL_LCK_NO_CHANGE

M

SQL_MAX_BINARY_LITERAL_LEN devuelve 0

SQL_MAX_CHAR_LITERAL_LEN devuelve 254

SQL_MAX_COLUMN_NAME_LEN devuelve 128

SQL_MAX_COLUMNS_IN_GROUP_BY devuelve 16

SQL_MAX_COLUMNS_IN_ORDER_BY devuelve 16

SQL_MAX_COLUMNS_IN_INDEX devuelve 0

SQL_MAX_COLUMNS_IN_SELECT devuelve 254

SQL_MAX_COLUMNS_IN_TABLE devuelve 254

SQL_MAX_CURSOR_NAME_LEN devuelve 254

SQL_MAX_INDEX_SIZE devuelve 0

SQL_MAX_OWNER_NAME_LEN devuelve 0

SQL_MAX_PROCEDURE_NAME_LEN devuelve 0. El controlador ODBC de Visual FoxPro no permite el acceso directo a procedimientos almacenados de Visual FoxPro.

SQL_MAX_QUALIFIER_NAME_LEN devuelve la máxima longitud de ruta del sistema operativo.

SQL_MAX_ROW_SIZE devuelve 254^2

SQL_MAX_ROW_SIZE_INCLUDES_LONG devuelve ‘N’

SQL_MAX_STATEMENT_LEN devuelve 8192

SQL_MAX_TABLE_NAME_LEN devuelve 128

SQL_MAX_TABLES_IN_SELECT devuelve 16

SQL_MAX_USER_NAME_LEN devuelve 0

SQL_MULT_RESULT_SETS devuelve ‘Y’

SQL_MULTIPLE_ACTIVE_TXN devuelve ‘Y’. Varias conexiones pueden tener transacciones abiertas a la vez.

N

SQL_NEED_LONG_DATA_LEN devuelve ‘N’

SQL_NON_NULLABLE_COLUMNS devuelve SQL_NNC_NON_NULL

SQL_NULL_COLLATION devuelve SQL_NC_LOW

SQL_NUMERIC_FUNCTIONS devuelve todas las funciones excepto SQL_FN_NUM_POWER, que no es compatible con el controlador ODBC de Visual FoxPro. Las siguientes funciones sí son compatibles:
SQL_FN_NUM_ABS
SQL_FN_NUM_ACOS
SQL_FN_NUM_ASIN
SQL_FN_NUM_ATAN
SQL_FN_NUM_ATAN2
SQL_FN_NUM_CELING
SQL_FN_NUM_COS
SQL_FN_NUM_COT
SQL_FN_NUM_DEGREES
SQL_FN_NUM_EXP
SQL_FN_NUM_FLOOR
SQL_FN_NUM_LOG
SQL_FN_NUM_LOG10
SQL_FN_NUM_MOD
SQL_FN_NUM_PI
SQL_FN_NUM_RADIANS
SQL_FN_NUM_RAND
SQL_FN_NUM_ROUND
SQL_FN_NUM_SIGN
SQL_FN_NUM_SIN
SQL_FN_NUM_SQRT
SQL_FN_NUM_TAN

O

SQL_ODBC_API_CONFORMANCE devuelve SQL_OAC_LEVEL1

SQL_ODBC_SAG_CLI_CONFORMANCE devuelve  SQL_OSCC_COMPLIANT.

SQL_ODBC_SQL_CONFORMANCE devuelve  SQL_OSC_MINIMUM. Es compatible con la sintaxis SQL mínima

SQL_ODBC_SQL_OPT_IEF devuelve “N”.

SQL_ODBC_VER está implementada por el Administrador de controladores.

SQL_ORDER_BY_COLUMNS_IN_SELECT devuelve “N”

SQL_OUTER_JOINS devuelve “N”

SQL_OWNER_TERM devuelve “”. El controlador ODBC de Visual FoxPro no admite propietarios para sus objetos.

SQL_OWNER_USAGE devuelve 0. El controlador ODBC de Visual FoxPro no admite propietarios para sus objetos.

P

SQL_POS_OPERATIONS devuelve SQL_POS_POSITION.

SQL_POSITIONED_STATEMENTS devuelve 0.

SQL_PROCEDURE_TERM devuelve “”.

SQL_PROCEDURES devuelve ‘N’.

Q

SQL_QUALIFIER_LOCATION devuelve SQL_QL_START

SQL_QUALIFIER_NAME_SEPARATOR devuelve ‘!’ o ‘\’. El separador entre base de datos y tabla es ‘!’ para orígenes de datos conectados a bases de datos y ‘\’ para orígenes de datos que son directorios de tablas libres.

SQL_QUALIFIER_TERM devuelve “database” o “directory”. El calificador es “database” para orígenes de datos conectados a bases de datos y “directory” para orígenes de datos que son directorios de tablas libres.

SQL_QUALIFIER_USAGE no es compatible con SQL_QU_PRIVILEGE_DEFINITION; devuelve:
SQL_QU_DML_STATEMENT
SQL_QU_TABLE_DEFINITION

SQL_QUOTED_IDENTIFIER_CASE devuelve SQL_IC_MIXED

R

SQL_ROW_UPDATES devuelve “N”. El controlador ODBC de Visual FoxPro sólo admite cursores estáticos y hacia adelante.

S

SQL_SCROLL_CONCURRENCY devuelve SQL_SCCO_READ_ONLY

SQL_SCROLL_OPTIONS devuelve
SQL_SO_STATIC
SQL_SO_READONLY

SQL_SEARCH_PATTERN_ESCAPE devuelve “\”

SQL_SERVER_NAME devuelve “”.

SQL_SPECIAL_CHARACTERS devuelve “~@#$%^”

SQL_STATIC_SENSITIVITY devuelve 0. El controlador ODBC deVisual FoxPro no admite actualizaciones posicionales.

SQL_STRING_FUNCTIONS no admite SQL_FN_STR_INSERT, SQL_FN_STR_LOCATE, SQL_FN_STR_LOCATE_2, o SQL_FN_STR_SOUNDEX.
Devuelve
SQL_FN_STR_ASCII
SQL_FN_STR_CHAR
SQL_FN_STR_CONCAT
SQL_FN_STR_DIFFERENCE
SQL_FN_STR_LCASE
SQL_FN_STR_LEFT
SQL_FN_STR_LENGTH
SQL_FN_STR_LTRIM
SQL_FN_STR_REPEAT
SQL_FN_STR_REPLACE
SQL_FN_STR_RIGHT
SQL_FN_STR_RTRIM
SQL_FN_STR_SUBSTRING
SQL_FN_STR_UCASE
SQL_FN_STR_SPACE

SQL_SUBQUERIES devuelve
SQL_SQ_CORRELATED_SUBQUERIES
SQL_SQ_COMPARISON
SQL_SQ_EXISTS
SQL_SQ_IN
SQL_SQ_QUANTIFIED

SQL_SYSTEM_FUNCTIONS devuelve
SQL_FN_SYS_DBNAME
SQL_FN_SYS_IFNULL
pero no
SQL_FN_SYS_USERNAME

T

SQL_TABLE_TERM devuelve “table”

SQL_TIMEDATE_ADD_INTERVALS devuelve
SQL_FN_TSI_ SECOND
SQL_FN_TSI_MINUTE
SQL_FN_TSI_HOUR
SQL_FN_TSI_DAY
SQL_FN_TSI_MONTH
SQL_FN_TSI_YEAR

Not SQL_FN_TSI_FRAC_SECOND, SQL_FN_TSI_WEEK, o SQL_FN_TSI_QUARTER

SQL_TIMEDATE_DIFF_INTERVALS devuelve
SQL_FN_TSI_ SECOND
SQL_FN_TSI_MINUTE
SQL_FN_TSI_HOUR
SQL_FN_TSI_DAY
SQL_FN_TSI_MONTH
SQL_FN_TSI_YEAR

SQL_TIMEDATE_FUNCTIONS no admite

    SQL_FN_TD_QUARTER, SQL_FN_TD_TIMESTAMPADD, SQL_FN_TD_DAYOFYEAR, or SQL_FN_TD_WEEK.
Devuelve
SQL_FN_TD_CURDATE
SQL_FN_TD_CURTIME
SQL_FN_TD_DAYNAME
SQL_FN_TD_DAYOFMONTH
SQL_FN_TD_DAYOFWEEK
SQL_FN_TD_HOUR
SQL_FN_TD_MINUTE
SQL_FN_TD_MONTH
SQL_FN_TD_MONTHNAME
SQL_FN_TD_NOW
SQL_FN_TD_SECOND
SQL_FN_TD_TIMESTAMPDIFF
SQL_FN_TD_YEAR .

SQL_TXN_CAPABLE devuelve SQL_TC_DML.

SQL_TXN_ISOLATION_OPTION devuelve  SQL_TXN_READ_COMMITTED.

U-Z

SQL_UNION devuelve
SQL_U_UNION
SQL_U_UNION_ALL.

SQL_USER_NAME devuelve <espacio en blanco>.


SQLGetStmtOption

Compatibilidad: Total         Conformidad con API de ODBC: Nivel uno

Devuelve el valor actual de una opción de instrucción.

fOption	Devuelve
SQL_GET_BOOKMARK	Valor entero de 32 bits que es el marcador del número de registro actual
SQL_ROW_NUMBER	Entero de 32 bits que especifica la posición de la fila actual en el conjunto de resultados
SQL_TRANSLATE_DLL	Error: “El controlador no está capacitado”.
El controlador ODBC de Visual FoxPro no tiene DLL de traducción.

Para obtener más información sobre SQLGetStmtOption, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLGetTypeInfo

Compatibilidad: Total         Conformidad con API ODBC: Nivel uno

Devuelve información sobre los tipos de datos admitidos por un origen de datos. El controlador devuelve la información en un conjunto de resultados SQL. La tabla siguiente enumera tipos de datos de ODBC y los correspondientes tipos de datos de Visual FoxPro.

Tipo de ODBC	Tipo de Visual FoxPro
SQL_BIGINT	No compatible. No hay tipo de 64 bits en Visual FoxPro.
SQL_BIT	Lógico
SQL_CHAR	Carácter
SQL_DATE	Fecha
SQL_DECIMAL	Numérico
SQL_DOUBLE	Doble
SQL_FLOAT	Doble
SQL_INTEGER	Entero
SQL_LONGVARBINARY	Memo (Binario)
SQL_LONGVARCHAR	Memo
SQL_NUMERIC	Numérico*, Moneda, Flotante
SQL_REAL	Doble
SQL_SMALLINT	Entero
SQL_TIME	No compatible. No hay tipo hora en Visual FoxPro.
SQL_TIMESTAMP	Fecha-Hora
SQL_TINYINT	Entero
SQL_VARBINARY	Memo (Binario)*,General
SQL_VARCHAR	Carácter

*Tipo predeterminado

Para obtener más información sobre los tipos de datos de Visual FoxPro, vea CREATE TABLE. Para obtener más información sobre SQLGetTypeInfo, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLMoreResults

Compatibilidad: Total         Conformidad con API de ODBC: Nivel dos

Determina si hay más resultados esperando un controlador de instrucción, hstmt, que contenga instrucciones SELECT, UPDATE, INSERT o DELETE y, si la respuesta es afirmativa, inicia el procesamiento para dichos resultados.

Para obtener más información sobre SQLMoreResults, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLNumParams

Compatibilidad: Total         Conformidad con API de ODBC: Nivel dos

Devuelve el número de parámetros de una instrucción SQL. El número de parámetros debe ser igual al número de signos de interrogación de la instrucción SQL pasado a SQLPrepare.

Para obtener más información sobre la gramática SQL, vea Gramática SQL ODBC compatible. Para obtener más información sobre SQLNumParams, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLNumResultCols

Compatibilidad: Total         Conformidad con API de ODBC: A nivel de núcleo

Devuelve el número de columnas en un cursor de un conjunto de resultados.

Para obtener más información sobre SQLNumResultCols, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLParamData

Compatibilidad: Total         Conformidad con API de ODBC: Nivel uno

Se utiliza junto con SQLPutData para especificar datos de parámetros en tiempo de ejecución de instrucciones.

Para obtener más información sobre SQLParamData, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLParamOptions

Compatibilidad: Total         Conformidad con API de ODBC: Nivel uno

Permite a una aplicación especificar múltiples valores para el conjunto de parámetros asignados por SQLBindParameter. La posibilidad de especificar múltiples valores para un conjunto de parámetros es útil para inserciones masivas y otras funciones que requieran que el origen de datos procese la misma instrucción SQL varias veces con distintos valores de parámetros. Por ejemplo, una aplicación puede especificar tres conjuntos de valores para el conjunto de parámetros asociados a una instrucción INSERT y a continuación ejecutar la instrucción INSERT una vez para realizar las tres operaciones de inserción.

Para obtener más información sobre SQLParamOptions, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLPrepare

Compatibilidad: Total         Conformidad con API de ODBC: A nivel de núcleo

Prepara una instrucción SQL para optimizar y ejecutar la instrucción. La instrucción SQL se compila para su ejecución mediante SQLExecDirect.

Si los nombres de tabla, vista o campo contienen espacios en blanco, escriba los nombres entre comillas inversas (`). Por ejemplo, si la base de datos contiene una tabla llamada Mi Tabla y el campo Mi Campo, escriba cada elemento del identificador como se indica a continuación:

SELECT * FROM `Mi Tabla`.`Mi Campo`

Para obtener más información sobre SQLPrepare, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLPrimaryKeys

Compatibilidad: Total         Conformidad con API de ODBC: Nivel dos

Devuelve los nombres de columna que incluyen la clave principal de una tabla. La implementación de SQLPrimaryKeys en el controlador ODBC de Visual FoxPro:

•	Pasa por alto los argumentos szTableOwner y cbTableOwner.

•	Sólo funciona con orígenes de datos que son bases de datos. El controlador devuelve el error “El controlador no es compatible con esta función” si el origen de datos es un directorio de tablas libres.

Para obtener más información sobre SQLPrimaryKeys, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLPutData

Compatibilidad: Total         Conformidad con API de ODBC: Nivel uno

Permite a una aplicación enviar datos para un parámetro o columna al controlador en tiempo de ejecución de instrucciones.

Para obtener más información sobre SQLPutData, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLRowCount

Compatibilidad: Total         Conformidad con API de ODBC: A nivel de núcleo

Devuelve el número de filas afectadas por la última instrucción UPDATE, INSERT o DELETE.

Para obtener más información sobre SQLRowCount, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLSetConnectOption

Compatibilidad: Parcial         Conformidad con API de ODBC: Nivel uno

Establece opciones que controlan diversos aspectos de las conexiones. Esta función es parcialmente compatible: el controlador admite todos los valores para el argumento fOption, pero no admite algunos valores vParam para el argumento SQL_TXN_ISOLATION de fOption.

Para ver una lista completa de argumentos fOption, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.

La tabla siguiente describe sólo aquellos argumentos con un comportamiento específico de la implementación de SQLSetConnectOption del controlador ODBC de Visual FoxPro:

fOption	Observaciones
SQL_AUTOCOMMIT	Si elige SQL_AUTOCOMMIT_OFF, la aplicación debe confirmar o deshacer explícitamente transacciones con SQLTransact; el controlador ODBC de Visual FoxPro no confirma automáticamente la transacción de una instrucción hasta que no ha terminado. El controlador inicia una transacción si la instrucción lo permite.
SQL_CURRENT_QUALIFIER	Puede ser un nombre de base de datos totalmente cualificado, o una ruta totalmente cualificada a un directorio que contiene cero o más tablas libres.
SQL_LOGINTIMEOUT	Devuelve el error “El controlador no está capacitado”
SQL_CURSORS	Devuelve el error “El controlador no está capacitado”
SQL_PACKET_SIZE	Devuelve el error “El controlador no está capacitado”
SQL_TXN_ISOLATION	El controlador sólo permite: SQL_TXN_READ_COMMITTED; Los siguientes vParams no se admiten: SQL_TXN_READ_UNCOMMITTED; SQL_TXN_REAPEATABLE_READ; SQL_TXN_SERIALIZABLE
Para obtener más información sobre SQLSetConnectOption, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLSetCursorName

Compatibilidad: Total         Conformidad con API de ODBC: A nivel de núcleo

Asocia un nombre de cursor con un controlador de instrucción activo, hstmt. SQLSetCursorName está incluida en la API del controlador ODBC de Visual FoxPro porque forma parte de la funcionalidad a nivel de núcleo de la API de ODBC; no se puede usar con otras funciones de la API porque el controlador no admite actualizaciones posicionadas.

Para obtener más información sobre SQLSetCursorName, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLSetPos

Compatibilidad: Total         Conformidad con  API de ODBC: Nivel dos

Establece la posición del cursor en un conjunto de filas. Puede utilizar SQLSetPos con SQLGetData para recuperar filas de columnas independientes después de situar el cursor en una fila específica del conjunto de filas.

Para obtener más información sobre SQLSetPos, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLSetScrollOptions

Compatibilidad: Parcial         Conformidad con API de ODBC: Nivel dos

Establece opciones que controlan el comportamiento de los cursores asociados a un controlador de instrucción, hstmt.

El controlador ODBC de Visual FoxPro sólo admite SQL_CONCUR_READ_ONLY; no admite el valor fConcurrency SQL_CONCUR_ROWVER. El controlador convierte SQL_KEYSET_SIZE, SQL_CURSOR_DYNAMIC y SQL_CURSOR_KEYSET_DRIVEN en SQL_SCROLL_STATIC con la advertencia ODBC_01S02.

Para obtener más información sobre SQLSetScrollOptions, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLSetStmtOption

Compatibilidad: Total         Conformidad con API de ODBC: Nivel uno

Establece opciones relacionadas con un controlador de instrucción, hstmt.

fOption	Valores permitidos	Comentarios
SQL_ASYNC_ENABLE	SQL_ASYNC_ENABLE_OFF	Si intenta establecer este valor fOption, el controlador devuelve el error: “El controlador no está capacitado”. Visual FoxPro no admite ejecución asíncrona.
SQL_BIND_TYPE	SQL_BIND_BY_COLUMN o un valor de 32 bits que denote la longitud de la estructura o una instancia de un búfer al que se van a vincular columnas de resultados.
SQL_CONCURRENCY	SQL_CONCUR_READ_ONLY SQL_CONCUR_LOCK SQL_CONCUR_VALUES	El controlador no permite SQL_CONCUR_ROWVER, ya que Visual FoxPro no tiene control de distintas versiones en base a marcas de hora.
SQL_CURSOR_TYPE	SQL_CURSOR_FORWARD_ONLY SQL_CURSOR_STATIC	El controlador no permite SQL_CURSOR_KEYSET_DRIVEN o SQL_CURSOR_DYNAMIC; vea SQLSetScrollOptions para obtener más información.
SQL_KEYSET_SIZE	Error: “El controlador no está capacitado”.	Visual FoxPro no admite el modelo de cursor de conjunto de claves.
SQL_MAX_LENGTH	0	Si intenta establecer este valor fOption, el controlador devuelve el error: “El controlador no está capacitado”.
SQL_MAX_ROWS	0	Si intenta establecer este valor fOption, el controlador devuelve el error: “El controlador no está capacitado”.
SQL_NOSCAN	SQL_NOSCAN_OFF
SQL_QUERY_TIMEOUT	0	Si intenta establecer este valor fOption, el controlador devuelve el error: “El controlador no está capacitado”.
SQL_RETRIEVE_DATA	SQL_RD_ON, SQL_RD_OFF
SQL_ROWSET_SIZE	1 a 4,294,967,296
SQL_SIMULATE_CURSOR	Error: “El controlador no está capacitado”
SQL_USE_BOOKMARKS	SQL_UB_OFF SQL_UB_ON
Para obtener más información sobre SQLSetStmtOption, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLSpecialColumns

Compatibilidad: Total         Conformidad con API de ODBC: Nivel uno

Recupera el conjunto óptimo de columnas que identifican unívocamente una fila en la tabla.

El controlador ODBC de Visual FoxPro devuelve las columnas que forman la clave principal en la tabla de FoxPro (vea SQLPrimaryKeys). Si se llama con fColType definido como SQL_ROWVER, no se devuelve ninguna columna. SQLSpecialColumns sólo funciona con orígenes de datos que son bases de datos.

Para obtener más información sobre SQLSpecialColumns, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLStatistics

Compatibilidad: Total         Conformidad con API de ODBC: Nivel uno

Recupera una lista de estadísticas sobre una única tabla y los índices, o nombres de etiqueta, asociados con la tabla. El controlador devuelve la información como un conjunto de resultados.

Para obtener más información sobre SQLStatistics, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLTables

Compatibilidad: Total         Conformidad con API de ODBC: Nivel uno

Devuelve la lista de nombres de tabla especificados por el parámetro en la instrucción SQLTables. Si no se especifica ningún parámetro, devuelve los nombres de tabla almacenados en el origen de datos actual. El controlador devuelve la información como un conjunto de resultados.

Las llamadas de tipo de enumeración no recibirán una entrada de conjunto de resultados para las vistas remotas o locales parametrizadas. Asimismo, una llamada a SQLTables con un especificador único de nombre de tabla encontrará una coincidencia para cada vista si está presente con ese nombre; esto permite a API es ser utilizado para comprobar conflictos de nombre antes de la creación de una nueva tabla.

Nota   El controlador ODBC de Visual FoxPro distingue tablas de base de datos y tablas libres, incluso cuando ambos tipos de tablas están almacenadas en el mismo directorio del sistema. Si el origen de datos es un directorio de tablas libres, el controlador ODBC de Visual FoxPro no cataloga ni devuelve los nombres de tablas asociadas a una base de datos.

Para obtener más información sobre SQLTables, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


SQLTransact

Compatibilidad: Total         Conformidad con API de ODBC: A nivel de núcleo

Solicita una operación de confirmar o deshacer para todas las operaciones activas en todos los controladores de instrucción (hstmts) asociados a una conexión, o todas las conexiones asociadas al controlador de entorno, henv. SQLTransact sólo funciona con orígenes de datos que son bases de datos.

Si una confirmación falla en modo manual, la transacción permanece activa; puede elegir deshacer la transacción o reintentar la operación de confirmación. Si una operación de confirmación falla en modo de transacción automática, la transacción se deshace automáticamente; la transacción no puede estar inactiva.

Para obtener más información sobre SQLTransact, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


base de datos

En Visual FoxPro, un archivo de base de datos tiene una extensión .DBC y puede contener una o más tablas.


tabla de base de datos

En Visual FoxPro, es una tabla asociada a una base de datos. Compare esta definición con la de tabla libre.


tabla libre

En Visual FoxPro, una tabla que no está asociada con una base de datos.

Un archivo .DBF creado en FoxPro versión 2.x es una tabla libre, a menos que se convierta en una tabla de Visual FoxPro y se agregue a una base de datos de Visual FoxPro. Compare esta definición con la de tabla de base de datos.


instrucción SQL preparable

Instrucción SQL que aún no se ha procesado mediante SQLPrepare.


tabla

En Visual FoxPro, los registros se almacenan en una tabla. Cada fila de una tabla representa un registro y las columnas de la tabla representan los campos del registro. Cada tabla de Visual FoxPro se almacena en su propio archivo con una extensión .DBF. Las tablas de Visual FoxPro se pueden asociar a una base de datos.

Las tablas de FoxPro versión 2.x no están asociadas a una base de datos.


Introducción al controlador ODBC de Visual FoxPro

Visual FoxPro es un potente entorno orientado a objetos para la construcción de bases de datos y desarrollo de aplicaciones. El controlador ODBC de Microsoft Visual FoxPro permite a las aplicaciones abrir, consultar y actualizar datos en Visual FoxPro y en versiones anteriores de FoxPro mediante la interfaz Open Database Connectivity (ODBC).

Por ejemplo, con el controlador ODBC de Microsoft Visual FoxPro puede:

•	Utilizar Microsoft Query para consultar y actualizar datos de Visual FoxPro desde hojas de cálculo de Microsoft Excel.

•	Crear cartas con Microsoft Word combinando datos de Visual FoxPro.

•	Consultar y actualizar vistas y tablas de Visual FoxPro desde Microsoft Access.

•	Utilizar Visual FoxPro como almacén de datos para aplicaciones Visual Basic, Visual C++ y C.

Puede utilizar el controlador para realizar otras muchas tareas. La siguiente tabla muestra algunos temas que le ayudarán a comenzar.

Para	Vea
Averiguar más sobre el uso de datos de Visual FoxPro con Microsoft Office	Acceso a datos de Visual FoxPro desde una aplicación Microsoft Office
Aprender sobre el uso de datos de Visual FoxPro en aplicaciones Visual Basic	Uso del controlador ODBC de Visual FoxPro ODBC con una aplicación Visual Basic
Ver un ejemplo sencillo del uso de Visual C++ para tener acceso a datos de Visual FoxPro	Uso del controlador ODBC de Visual FoxPro ODBC con una aplicación C o C++
Ver una lista de hardware y software compatible	Requisitos del sistema
Leer una introducción del sistema	Introducción a la arquitectura del controlador


Instalación del controlador ODBC de Visual FoxPro

Utilice el programa de instalación del controlador ODBC de Visual FoxPro ODBC para:

•	Agregar nuevos componentes.

•	Quitar componentes instalados.

•	Reinstalar para recuperar archivos y configuraciones que falten.

•	Quitar todos los componentes instalados anteriormente.

 Para instalar el controlador ODBC de Visual FoxPro

1	Ejecute Instalar.exe del disco 1 del controlador ODBC de Visual FoxPro.

2	Siga las instrucciones de la pantalla.

Una vez que haya instalado el controlador en su sistema, el programa de instalación reconoce los componentes del controlador instalados y le presenta unos cuadros de diálogo adicionales que le permiten modificar la configuración del controlador.


Acceso a datos de Visual FoxPro desde una aplicación Microsoft Office

Puede utilizar el controlador ODBC de Microsoft Visual FoxPro para tener acceso a datos de Visual FoxPro desde sus aplicaciones Microsoft Office para Windows 95.

Para	Vea
Utilizar Microsoft Access	Consulta y actualización de datos de Visual FoxPro desde Access
Utilizar Microsoft Excel	Importación de datos en Microsoft Excel desde una base de datos de Visual FoxPro
Utilizar Microsoft Word	Creación de etiquetas de correo en Microsoft Word utilizando datos de Visual FoxPro


Adición de un origen de datos de Visual FoxPro

Para tener acceso a datos de Visual FoxPro desde su aplicación, debe tener un origen de datos. Puede crear un origen de datos desde

•	Dentro de una aplicación, como Microsoft Word, Microsoft Excel o Microsoft Access que utilice controladores ODBC.

•	Fuera de su aplicación, utilizando el Panel de control de Windows 95 o de Windows NT.

Una vez que exista el origen de datos en su equipo, puede reutilizar el mismo origen de datos cada vez que quiera tener acceso a datos de Visual FoxPro. Si quiere tener acceso a varias bases de datos o tablas diferentes, puede crear un origen de datos separado para cada base de datos o directorio.

El siguiente procedimiento crea un origen de datos utilizando el Panel de control. Para obtener más información sobre la creación de un origen de datos desde una aplicación, vea Acceso a datos de Visual FoxPro desde una aplicación Microsoft Office.

 Para agregar un origen de datos de Visual FoxPro

1	Elija el icono ODBC de 32bits del Panel de control de Windows 95 o Windows NT. Esta opción está disponible después de haber instalado el controlador ODBC de Visual FoxPro, o cualquier software de controlador ODBC.

2	En el cuadro de diálogo Orígenes de datos, haga clic en “Agregar”.

3	En el cuadro de diálogo Agregar origen de datos, seleccione Controlador Microsoft Visual FoxPro de la lista “Controladores ODBC instalados” y haga clic en “Aceptar”.

4	En el cuadro de diálogo Configuración de ODBC de Visual FoxPro, introduzca el nombre del origen de datos, seleccione el tipo de base de datos, seleccione la base de datos o el directorio y haga clic en “Aceptar”.

El nuevo nombre de origen de datos aparece en la lista “Orígenes de datos del usuario (Controlador)” en el cuadro de diálogo Orígenes de datos.

5	En el cuadro de diálogo Orígenes de datos, haga clic en “Cerrar”.


Modificación de un origen de datos de Visual FoxPro

Puede modificar un origen de datos de FoxPro.

 Para modificar un origen de datos de Visual FoxPro

1	Elija el icono ODBC de 32 bits del Panel de control de Windows 95 o Windows NT. Esta opción está disponible después de que haya instalado el controlador ODBC de Visual FoxPro o cualquier software de controlador ODBC.

2	En el cuadro de diálogo Orígenes de datos, seleccione el nombre del origen de datos que quiere modificar en la lista “Orígenes de datos (Controlador)” y haga clic en “Configurar”.

3	En el cuadro de diálogo Configuración de ODBC de Visual FoxPro, seleccione y cambie los elementos que quiere modificar y haga clic en “Aceptar”.

4	En el cuadro de diálogo Orígenes de datos, haga clic en “Cerrar”.

Se guardarán los cambios realizados son guardados y tendrán efecto la próxima vez que tenga acceso al origen de datos desde su apliacación.


Eliminación de un origen de datos de Visual FoxPro

Puede eliminar un origen de datos de FoxPro.

 Para eliminar un origen de datos de Visual FoxPro

1	Elija el icono ODBC de 32 bits del Panel de control de Windows 95 o Windows NT. Esta opción está disponible después de que haya instalado el controlador ODBC de Visual FoxPro o cualquier software de controlador ODBC.

2	En el cuadro de diálogo Orígenes de datos, seleccione el nombre del origen de datos que quiere eliminar en la lista “Orígenes de datos (Controlador)” y haga clic en “Configurar”.

3	Haga clic en “Eliminar”.

El origen de datos no se vuelve a mostar en el cuadro de diálogo Orígenes de datos.

4	Haga clic en “Cerrar”.


Conexión a un origen de datos de Visual FoxPro

Puede conectarse aun origen de datos de Visual FoxPro utilizando su aplicación Microsoft Office o el SQL API.

Para conectarse desde	Vea
Microsoft Access, Microsoft Excel o Word	Accesso a datos de Visual FoxPro desde una aplicación Microsoft Office.
Su aplicación C o C++	SQLConnect SQLDriverConnect
Su aplicación Visual Basic	Uso del controlador ODBC de Visual FoxPro con su aplicación Visual Basic


Uso de cadenas de conexión

Puede utilizar cadenas de conexión para conectarse a un origen de datos de Visual FoxPro.

Por ejemplo, para conectarse a un origen de datos TasTrade y sobrescribir la configuración actual de un Exclusive asociado con el origen de datos, podría utilizar la cadena:

DSN=TasTrade;Exclusive=Yes

Para obtener una lista de palabras clave de atributos y valores que puede incluir en la cadena de conexión, vea SQLDriverConnect.

Para obtener una explicación completa de la sintaxis de la cadena de conexión, consulte Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


Acceso a un origen de datos de Visual FoxPro desde Microsoft Excel

Si tiene instalado Microsoft Query, puede crear un origen de datos en Microsoft Excel que se conecte con sus datos de Visual FoxPro.

 Para tener acceso a datos de Visual FoxPro desde Microsoft Excel

1	Abra una hoja de cálculo de Microsoft Excel.

2	En el menú Datos, elija Obtener datos externos. Se abrirá Microsoft Query.

3	En el cuadro de diálogo Seleccione origen de datos, haga clic en “Otro”.

4	En el cuadro de diálogo Orígenes de datos ODBC, haga clic en “Nuevo”.

5	En el cuadro de diálogo Agregar origen de datos, seleccione “Controlador Microsoft Visual FoxPro” del cuadro de lista “Controladores ODBC instalados” y haga clic en “Aceptar”.

6	En el cuadro de diálogo Configuración de ODBC de Visual FoxPro, introduzca el nombre del origen de datos, seleccione el tipo de base de datos, introduzca la ruta para la base de datos o el directorio y haga clic en “Aceptar”.

El nuevo nombre de origen de datos se nuestra en el cuadro de texto “Introduzca origen de datos” del cuadro de diálogo Orígenes de datos ODBC.

7	Haga clic en “Aceptar”.

El nuevo nombre de origen de datos se selecciona en el cuadro de texto “Orígenes de datos disponibles” del cuadro de diálogo Seleccionar origen de datos.

8	Haga clic en “Utilizar”.

Ahpora puede agregar tablas a la consulta abierta. Para obtener más información sobre cómo construir una consulta, vea Importación de datos en Microsoft Excel desde una base de datos de Visual FoxPro.


Importación de datos en Microsoft Excel desde una base de datos de Visual FoxPro

Puede importar datos de Visual FoxPro a su hoja de cálculo de Microsoft Excel si tiene definida un origen de datos para ello. Para obtener información sobre cómo crear un origen de datos de Visual FoxPro, vea Acceso a un origen de datos de Visual FoxPro desde Microsoft Excel.

 Para importar datos de Visual FoxPro en su hoja de cálculo de Microsoft Excel

1	Abra una hoja de cálculo Microsoft Excel.

En el menú Datos, elija Obtener datos externos. Se abrirá Microsoft Query.

3	En el cuadro de diálogo Seleccione origen de datos, seleccione un origen de datos de Visual FoxPro y haga clic en “Utilizar”.

4	Si la base de datos a la que tiene acceso su origen de datos incluye tablas, seleccione una tabla en el cuadro de diálogo Agregar tablas.

Microsoft Query muestra la tabla agregada en la mitad superior del diseño de la consulta.

Nota   La lista “Propietarios” no está disponible en este cuadro de diálogo porque el controlador no admite propietarios. La lista “Base de datos” no está disponible porque el controlador no admite múltiples bases de datos en el origen de datos.

5	Seleccione los campos de su consulta arrastrándolos desde la tabla hacia la mitad inferior del diseño.

6	Cierre Microsoft Query.

Los datos seleccionados se importan a su hoja de cálculo de Microsoft Excel.


Creación de etiquetas de correo en Microsoft Word utilizando datos de Visual FoxPro

Puede utilizar datos de Visual FoxPro en un documento de Microsoft Word para Windows 95. Por ejemplo, podría querer crear etiquetas de correo con la información de clientes almacenada en una tabla FoxPro.

 Para crear etiquetas de correo

1	En Microsoft Word, cree un documento nuevo vacío.

2	En el menú Herramientas, elija Combinar correspondencia.

3	En el Asistente para combinar correspondencia, elija “Crear” y seleccione “Etiquetas postales”.

4	Bajo “Documento principal”, elija “Ventana activa”.

5	Bajo “Origen de datos”, elija “Obtener datos” y seleccione “Abrir origen de datos”.

6	En el cuadro de diálogo Abrir origen de datos, elija “MS Query”.

7	En el cuadro de diálogo Seleccionar origen de datos, seleccione un origen de datos de Visual FoxPro y haga clic en “Utilizar”.

8	Si la base de datos a la que tiene acceso su origen de datos incluye tablas, seleccione una tabla en el cuadro de diálogo Agregar tablas.

Microsoft Query muestra la tabla agregada en la mitad superior del diseño de la consulta.

9	Seleccione los campos de su consulta arrastrándolos desde la tabla hacia la mitad inferior del diseño.

10	En el menú Archivo, elija Devolver datos a Microsoft Word.

Microsoft Query se cierra y los datos que ha seleccionado están disponibles para su uso en su documento de combinación de correspondencia.

11	Bajo “Documento principal”, elija “Configurar”.

12	En el cuadro de diálogo Opciones de etiqueta, seleccione la impresora y la información de etiqueta que quiera y haga clic en “Aceptar”.

13	En el cuadro de diálogo Crear etiquetas, seleccione los campos que quiere imprimir en sus etiquetas de correo y haga clic en “Aceptar”.

14	En el Asistente para combinar correspondencia, debajo de “Combinar los datos con el documento”, haga clic en “Combinar”.

15	En el cuadro de diálogo Combinar, seleccione las opciones que desee y haga clic en “Combinar”.


Importación de datos de Visual FoxPro en Microsoft Access

Puede importar datos almacenados en una base de datos de Visual FoxPro en una base de datos de Microsoft Access utilizando la opción de Importar.

 Para importar datos de una base de datos de Visual FoxPro en una base de datos de Microsoft Access

1	Abra la base de datos de Microsoft Access.

2	En la ficha Archivo, elija “Obtener datos externos” e “Importar”.

3	En el cuadro de diálogo Importar, seleccione “Bases de datos ODBC ( )” en la lista “Archivos de tipo”.

4	En el cuadro de diálogo Orígenes de datos SQL, seleccione el origen de datos de Visual FoxPro que le conecta con los datos de FoxPro que quiere consultar y haga clic en “Aceptar”.

5	En el cuadro de diálogo Importar objetos, seleccione una o más tablas para importar y haga clic en “Aceptar”.

Los nombres de las tablas de Visual FoxPro importadas se muestran en la ficha Tablas de la base de datos de Microsoft Access.

Ahora puede utilizar Microsoft Access para manipular los datos de las tablas de Visual FoxPro importadas. Los datos importados son una instantánea de los datos almacenados en Visual FoxPro; los cambios que realice en los datos importados no se devolverán al origen de datos de Visual FoxPro.

Si quiere que los cambios que haga en los datos de Microsoft Access modifiquen datos en el origen de datos de Visual FoxPro, vea Consulta y actualización de datos de Visual FoxPro desde Access.


Consulta y actualización de datos de Visual FoxPro desde Access.
Consulta y actualización de datos de Visual FoxPro desde Access

Puede consultar y actualizar datos almacenados en una base de datos de Visual FoxPro desde una base de datos de Microsoft Access utilizando la opción Vincular tabla.

 Para vincular una base de datos de Visual FoxPro a una base de datos de Microsoft Access

1	Abra una base de datos de Microsoft Access.

2	En la ficha Tablas, haga clic en “Nueva”.

3	En el cuadro de diálogo Nueva tabla, seleccione “Vincular tabla”y haga clic en “Aceptar”.

4	En el cuadro de diálogo Vincular, seleccione “Bases de datos ODBC ( )” en la lista “Archivos de tipo”.

5	En el cuadro de diálogo Orígenes de datos SQL, seleccione el origen de datos de Visual FoxPro que le conecta con los datos de FoxPro que quiere consultar y haga clic en “Aceptar”.

6	En el cuadro de diálogo Vincular tablas, seleccione las tablas que quiere consultar y actualizar, y haga clic en “Aceptar”.

Las tablas de Visual FoxPro vinculadas se muestran en la ficha Tablas de la base de datos de Microsoft Access.

Ahora puede utilizar Microsoft Access para consultar y actualizar datos en tablas Visual FoxPro vinculadas. Los cambios que haga en los datos vinculados se enviarán al origen de datos de Visual FoxPro.

Si no quiere que los cambios realizados en Microsoft Access afecten a los datos del origen de datos de Visual FoxPro, vea Importación de datos de Visual FoxPro en Microsoft Access.


Uso del controlador ODBC de Visual FoxPro con su aplicación Visual Basic

Su aplicación Visual Basic puede comunicarse con datos de Visual FoxPro mediante la creación de un control de datos que le conecte con un origen de datos de Visual FoxPro.

 Para conectar con datos de Visual FoxPro utilizando el control Data en Visual Basic 4.0

1	Cree un origen de datos llamado test que se conecte con la base de datos de ejemplo TasTrade incluida en Visual FoxPro 3.0. La instalación predeterminada de Visual FoxPro sitúa la base de datos de ejemplo TasTrade en:

c:\vfp\samples\mainsamp\data\tastrade.dbc

2	En Visual Basic 4.0, cree un nuevo formulario, y coloque un cuadro de texto y un control Data dentro de él.

3	Cambie la propiedad Connect del control Data a:

ODBC;DATABASE=tastrade;DSN=test

4	Cambie la propiedad RecordsetType a

2 - Snapshot

5	Cambie la propiedad RecordSource a:

customer

6	Cambie la propiedad DataSource para el cuadro de texto al nombre predeterminado para el control Data:

data1

7	Cambie la propiedad DataField del cuadro de texto a

customer_id

8	Ejecute el formulario y utilice el control Data para moverse entre los campos de identificador del cliente de la base de datos de ejemplo TasTrade de Visual FoxPro.


Uso del controlador ODBC de Visual FoxPro con su aplicación C o C++

Ejemplo

Su aplicación se comunica con los datos de Visual FoxPro enviando una instrucción SQLExecute o SQLExecDirect a Visual FoxPro. Esta instrucción puede contener:

•	Instrucciones SQL nativas al lenguaje Visual FoxPro, como el comando DROP TABLE

•	Gramática ODBC SQL compatible.

•	Lenguaje no SQL de Visual FoxPro como comandos SET compatibles.

Para obtener más información sobre el SQL nativo de Visual FoxPro, consulte la documentación de Visual FoxPro 3.0.


Uso del controlador ODBC de Visual FoxPro con su aplicación C o C++

El siguiente ejemplo utiliza la API C de ODBC para recuperar datos almacenados en el campo last-name en la tabla employee en la base de datos de ejemplo TasTrade de Visual FoxPro. Esta base de datos se proporciona con Visual FoxPro 3.0 y se instala de forma predeterminada en:

c:\vfp\samples\mainsamp\data\tastrade.dbc

El ejemplo muestra un apellido de cada vez, permitiendo hacer clic en el botón “Aceptar” del cuadro de mensaje para mostrar el siguiente apellido. Se supone que un origen de datos llamado tastrade se ha configurado para utilizar la base de datos tastrade.dbc.

Nota   Debe ejecutarse la comprobación de errores en todas las llamadas a la API de ODBC; este ejemplo excluye la comprobación de errores para mayor brevedad.

// En la máxima extensión permitida por la ley,

// Microsoft y sus proveedores niegan todas las

// garantías, expresas o implícitas, incluyendo,

// pero no limitándose a garantías implícita de

// comercio y conveniencia para propósitos

// particulares,con respecto a este ejemplo.

#include <windows.h>

#include <sql.h>

#include <sqlext.h>

#include <stdlib.h>

#include <mbstring.h>

#define MAX_DATA 100

#define MYSQLSUCCESS(rc) ((rc==SQL_SUCCESS)||(rc==SQL_SUCCESS_WITH_INFO))

class direxec

{

RETCODE rc;	// código de retorno ODBC

HENV henv;	// Entorno

HDBC hdbc;	// Controlador de conexión

HSTMT hstmt;	// Controlador de

// instrucción

unsigned char szData[MAX_DATA];	// Almacenamiento de

// datos devuelto

SDWORD cbData;	// Longitud de datos de salida

unsigned char chr_ds_name[SQL_MAX_DSN_LENGTH];	// Nombre del origen de datos

public:

direxec();	// Constructor

void sqlconn();	// Asignar env,stat

// y connect

void sqlexec(unsigned char *);	// Ejecutar

// instrucción SQL

void sqldisconn();	// Punteros libres

//para env,stat,conn

// y desconectar

// disconnect.

void error_out();	// Muestra errores.

};

// El constructor inicializa la cadena chr_ds_name con

//el nombre del origen de datos.

direxec::direxec()

{

_mbscpy(chr_ds_name,(const unsigned char *)"tastrade");

}

// Asignar el controlador de entorno, asignar el

// controlador de conexión, conectar al origen de datos // y asignar el controlador de instrucción.

void direxec::sqlconn(void)

{

SQLAllocEnv(&henv);

SQLAllocConnect(henv,&hdbc);

rc=SQLConnect(hdbc,chr_ds_name,SQL_NTS,NULL,0,NULL,0);

// Desasignar controladores, mostrar mensaje de

// error y salir.

if (!MYSQLSUCCESS(rc))

{

SQLFreeEnv(henv);

SQLFreeConnect(hdbc);

error_out();

exit(-1);

}

rc=SQLAllocStmt(hdbc,&hstmt);

}

// Ejecutar el comando SQL con SQLExecDirect()de

// la API de ODBC.

void direxec::sqlexec(unsigned char * cmdstr)

{

rc=SQLExecDirect(hstmt,cmdstr,SQL_NTS);

if (!MYSQLSUCCESS(rc))  //Error

{

error_out();

// Desasignar controladores y desconectar.

SQLFreeStmt(hstmt,SQL_DROP);

SQLDisconnect(hdbc);

SQLFreeConnect(hdbc);

SQLFreeEnv(henv);

exit(-1);

}

else

{

for (rc=SQLFetch(hstmt); rc == SQL_SUCCESS; rc=SQLFetch(hstmt))

{

SQLGetData(hstmt,1,SQL_C_CHAR,szData,sizeof(szData),&cbData);

// En este ejemplo, los datos se devuelven en

// un cuadro de mensajes

// por sencillez. Aunque, normalmente se

// podría llamar a la API de ODBC

// SQLBindCol() podría llamarse para vincular

// filas individuales de datos y asignarlas

// a un conjunto de filas. Vea el capítulo

// 15: Returning Results en el SDK de

// ODBC para obtener detalles completos.

MessageBox(NULL,(const char *)szData,"ODBC",MB_OK);

}

}

}

// Liberar el controlador de instrucción, desconectar, // liberar el controlador de conexión y

// liberar el controlador de entorno.

void direxec::sqldisconn(void)

{

SQLFreeStmt(hstmt,SQL_DROP);

SQLDisconnect(hdbc);

SQLFreeConnect(hdbc);

SQLFreeEnv(henv);

}

// Mostrar el mensaje de error en un cuadro de mensajes // que tiene un botón “Aceptar”.

void direxec::error_out(void)

{

unsigned char szSQLSTATE[10];

SDWORD nErr;

unsigned char msg[SQL_MAX_MESSAGE_LENGTH+1];

SWORD cbmsg;

while(SQLError(0,0,hstmt,szSQLSTATE,&nErr,msg,sizeof(msg),&cbmsg)==

SQL_SUCCESS)

{

wsprintf((char *)szData,"Error:\nSQLSTATE=%s,Native error=%ld,msg='%s'",

szSQLSTATE,nErr,msg);

MessageBox(NULL,(const char *)szData,"ODBC Error",MB_OK);

}

}

int WINAPI WinMain (HANDLE hInstance, HANDLE hPrevInstance,

LPSTR lpszCmdLine, int nCmdShow)

{

// Declarar una instancia del objeto

// direxec.

direxec x;

// Asignar controladores y conectar.

x.sqlconn();

// Ejecutar el comando SQL "SELECT last-name FROM

// employee"

x.sqlexec((UCHAR FAR *)"SELECT last-name FROM employee");

// Liberar controladoresy desconectar

x.sqldisconn();

// Devolver el código de correcto; el ejemplo se

// ejecutó correctamente.

return (TRUE);

}


ALTER TABLE - SQL (Comando)

Vea también

Modifica mediante programa la estructura de una tabla.

Sintaxis

ALTER TABLE NombreTabla1
ADD | ALTER [COLUMN] NombreCampo1
TipoCampo [(nAnchoCampo[, nPrecisión])]
[NULL | NOT NULL]
[CHECK lExpresión1 [ERROR cTextoMensaje1]]
[DEFAULT eExpresión1]
[PRIMARY KEY | UNIQUE]
[REFERENCES NombreTabla2 [TAG NombreEtiqueta1]]
[NOCPTRANS]
 − O bien −
ALTER TABLE NombreTabla1
ALTER [COLUMN] NombreCampo2
[NULL | NOT NULL]
[SET DEFAULT eExpresión2]
[SET CHECK lExpresión2 [ERROR cTextoMensaje2]]
[DROP DEFAULT]
[DROP CHECK]
 − O bien −
ALTER TABLE NombreTabla1
[DROP [COLUMN] NombreCampo3]
[SET CHECK lExpresión3 [ERROR cTextoMensaje3]]
[DROP CHECK]
[ADD PRIMARY KEY eExpresión3 TAG NombreEtiqueta2]
[DROP PRIMARY KEY]
[ADD UNIQUE eExpresión4 [TAG NombreEtiqueta3]]
[DROP UNIQUE TAG NombreEtiqueta4]
[ADD FOREIGN KEY [eExpresión5] TAG NombreEtiqueta4
REFERENCES NombreTabla2 [TAG NombreEtiqueta5]]
[DROP FOREIGN KEY TAG NombreEtiqueta6 [SAVE]]
[RENAME COLUMN NombreCampo4 TO NombreCampo5]
[NOVALIDATE]

Argumentos

NombreTabla1 Especifica el nombre de la tabla cuya estructura se desea modificar.

ADD [COLUMN] NombreCampo1 Especifica el nombre del campo que se desea agregar.

ALTER [COLUMN] NombreCampo1 Especifica el nombre de un campo existente que se desea modificar.

TipoCampo [(nAnchoCampo [, nPrecisión]]) Especifica el tipo de campo, el ancho de campo y la precisión (número de lugares decimales) de un campo nuevo o modificado.

TipoCampo es una sola letra que indica el tipo de datos del campo. Para algunos tipos de datos de campos es obligatorio especificar nAnchoCampo o nPrecisión, o ambos.

nAnchoCampo y nPrecisión se pasan por alto para los tipos D, T, I, Y, L, M, G y P. nPrecisión toma el valor predeterminado de cero (sin decimales) si no se incluye nPrecisión para los tipos N, F o B.

NULL | NOT NULL   Admite o impide valores nulos en el campo.

Si omite tanto NULL como NOT NULL, la configuración actual de SET NULL determinará si se admiten valores nulos en el campo. No obstante, si omite NULL y NOT NULL, e incluye la cláusula PRIMARY KEY o UNIQUE, se pasará por alto la configuración actual de SET NULL y el campo tomará el valor predeterminado NOT NULL.

CHECK lExpresión1   Especifica una regla de validación para el campo. lExpresión1 debe evaluarse como una expresión lógica, y puede tratarse de una función definida por el usuario o de un procedimiento almacenado. Cuando se añade un registro en blanco se comprueba la regla de validación. Se generará un error si la regla de validación no permite un valor de campo en blanco en un registro añadido.

ERROR cTextoMensaje1 Especifica el mensaje de error mostrado cuando la regla de validación de campo genera un error.

DEFAULT eExpresión1   Especifica un valor predeterminado para el campo. El tipo de datos de eExpresión1 debe ser igual que el tipo de datos del campo.

PRIMARY KEY   Crea una etiqueta de índice principal. La etiqueta de índice tiene el mismo nombre que el campo.

UNIQUE   Crea una etiqueta de índice candidato con el mismo nombre que el campo.

Nota  Los índices candidatos (creados incluyendo la opción UNIQUE, proporcionada para facilitar la compatibilidad con ANSI en ALTER TABLE o CREATE TABLE) no son iguales que los índices creados con la opción UNIQUE en el comando INDEX. Un índice creado con UNIQUE en el comando INDEX permite claves de índice duplicadas, mientras que los índices candidatos no las admiten.

Los campos utilizados para índices principales o candidatos no admiten valores nulos ni registros duplicados.

Durante la creación de un campo nuevo con ADD COLUMN, Visual FoxPro no generará ningún error si crea un índice principal o candidato para un campo que admite valores nulos. No obstante, Visual FoxPro sí generará un error si intenta introducir un valor nulo o duplicado en un campo que ya se ha utilizado para un índice principal o candidato.

Si desea modificar un campo existente y la expresión de índice principal o candidato consta de campos de la tabla, Visual FoxPro comprueba los campos para ver si contienen valores nulos o registros duplicados. En caso afirmativo, Visual FoxPro genera un error y la tabla no se modifica.

REFERENCES NombreTabla2 TAG NombreEtiqueta1   Especifica la tabla principal con la cual se establece una relación persistente. TAG NombreEtiqueta1 especifica la etiqueta de índice de la tabla principal en la cual se basa la relación. Los nombres de etiqueta de índice pueden contener hasta 10 caracteres.

NOCPTRANS   Impide la conversión a otra tabla de códigos distinta para los campos de tipo carácter y memo. Si la tabla se convierte a otra tabla de códigos, los campos para los que se haya especificado NOCPTRANS no se convertirán. NOCPTRANS solamente se puede especificar para los campos de tipo carácter y memo.

El ejemplo siguiente crea una tabla denominada MITABLA con dos campos de caracteres y dos memo. El segundo campo de caracteres car2 y el segundo campo memo memo2 incluyen NOCPTRANS para evitar la traducción.

CREATE TABLE mitabla (car1 C(10), car2 C(10) NOCPTRANS,;

memo1 M, memo2 M NOCPTRANS)

ALTER [COLUMN] NombreCampo2   Especifica el nombre del campo existente que se desea modificar.

SET DEFAULT eExpresión2 Especifica un nuevo valor predeterminado para un campo existente. El tipo de datos de eExpresión2 debe ser el mismo definido para el campo.

SET CHECK lExpresión2 Especifica una nueva regla de validación para un campo existente. lExpresión2 debe evaluarse como una expresión lógica, pudiendo ser una función definida por el usuario o un procedimiento almacenado.

ERROR cTextoMensaje2 Especifica el mensaje de error mostrado cuando la regla de validación de campo genera un error. El mensaje sólo se mostrará cuando se modifiquen los datos desde una ventana Examinar o Editar.

DROP DEFAULT Elimina el valor predeterminado para un campo existente.

DROP CHECK Elimina la regla de validación para un campo existente.

DROP [COLUMN] NombreCampo3   Especifica un campo que se desea eliminar de la tabla. Al eliminar un campo de la tabla también se elimina la configuración del valor predeterminado del campo y la regla de validación de campo.

Si hay expresiones de clave de índice o desencadenante que hagan referencia al campo, se transformarán en no válidas cuando se elimine el campo. En este caso no se genera ningún error al eliminar el campo, pero las expresiones no válidas de clave de índice o de desencadenante generarán errores en tiempo de ejecución.

SET CHECK lExpresión3 Especifica la regla de validación de tabla. lExpresión3 puede evaluarse como una expresión lógica, y debe tratarse de una función definida por el usuario o de un procedimiento almacenado.

ERROR cTextoMensaje3 Especifica el mensaje de error mostrado cuando la regla de validación de tabla genera un error. El mensaje solamente se muestra cuando los datos se modifican en una ventana Examinar o Editar.

ADD PRIMARY KEY eExpresión3 TAG NombreEtiqueta2 Agrega un índice principal a la tabla. eExpresión3 especifica la expresión de clave de índice principal, y NombreEtiqueta2 especifica el nombre de la etiqueta de índice principal. Los nombres de etiquetas de índice pueden contener hasta 10 caracteres. Si TAG NombreEtiqueta2 se omite y eExpresión3 es un solo campo, la etiqueta de índice principal tendrá el mismo nombre que el campo especificado en eExpresión3.

DROP PRIMARY KEY   Elimina el índice principal y su etiqueta de índice. Puesto que una tabla puede tener solamente una clave principal, no es necesario especificar el nombre de esta clave. Al eliminar el índice principal también se eliminan todas las relaciones persistentes basadas en la clave principal.

ADD UNIQUE eExpresión4 [TAG NombreEtiqueta3] Agrega un índice candidato a la tabla. eExpresión4 especifica la expresión de clave del índice candidato y NombreEtiqueta3 especifica el nombre de la etiqueta de índice candidato. Los nombres de etiquetas de índice pueden contener hasta 10 caracteres. Si omite TAG NombreEtiqueta3, y eExpresión4 es un solo campo, la etiqueta de índice candidato tendrá el mismo nombre que el campo especificado en eExpresión4.

DROP UNIQUE TAG NombreEtiqueta4 Elimina el índice candidato y su etiqueta de índice. Puesto que una tabla puede tener múltiples claves de candidato, es necesario especificar el nombre de la etiqueta de índice candidato.

ADD FOREIGN KEY [eExpresión5] TAG NombreEtiqueta4   Agrega un índice externo (no principal) a la tabla. eExpresión5 especifica la expresión de clave del índice externo y NombreEtiqueta4 especifica el nombre de la etiqueta de índice externo. Los nombres de etiquetas de índice pueden contener hasta 10 caracteres.

REFERENCES NombreTabla2 [TAG NombreEtiqueta5] Especifica la tabla primaria con la que se establece una relación persistente. Incluya TAG NombreEtiqueta5 para establecer una relación basada en una etiqueta de índice existente para la tabla primaria. Los nombres de etiquetas de índice pueden contener hasta 10 caracteres. Si omite TAG NombreEtiqueta5, la relación se establece usando la etiqueta de índice principal de la tabla primaria.

DROP FOREIGN KEY TAG NombreEtiqueta6 [SAVE] Elimina una clave externa cuya etiqueta de índice es NombreEtiqueta6. Si omite SAVE, la etiqueta de índice se elimina del índice estructural. Incluya SAVE para evitar que se elimine la etiqueta de índice del índice estructural.

RENAME COLUMN NombreCampo4 TO NombreCampo5 Permite cambiar el nombre de un campo de la tabla. NombreCampo4 especifica el nombre del campo que desea cambiar. NombreCampo5 especifica el nombre nuevo para este campo.

Precaución   Tenga cuidado al cambiar el nombre de los campos de la tabla; es posible que las expresiones de índice, las reglas de validación de campos y tablas, los comandos, las funciones, etc. hagan referencia a los nombres originales de los campos.

NOVALIDATE   Especifica que Visual FoxPro permite realizar modificaciones en la estructura de la tabla que pueden alterar la integridad de los datos incluidos en dicha tabla. De forma predeterminada, Visual FoxPro impide que ALTER TABLE modifique la estructura de la tabla con cambios que infrinjan la integridad de sus datos. Incluya NOVALIDATE para anular este comportamiento predeterminado.

Comentarios

ALTER TABLE se puede utilizar para modificar la estructura de una tabla que no se ha agregado a ninguna base de datos. Sin embargo, Visual FoxPro genera un error si incluye las cláusulas DEFAULT, FOREIGN KEY, PRIMARY KEY, REFERENCES o SET al modificar una tabla libre.

ALTER TABLE puede regenerar la tabla creando un nuevo encabezado de tabla y anexando registros en este encabezado. Por ejemplo, modificar el tipo o el ancho de un campo pueden originar la regeneración de una tabla.

Cuando se regenera una tabla, las reglas de validación de campo se ejecutan para cualquier campo cuyo tipo o ancho se haya modificado. Si cambia el tipo o el ancho de algún campo de la tabla, se ejecuta la regla de la tabla.

Si modifica las reglas de validación de campo o tabla para una tabla que contiene registros, Visual FoxPro comprobará las nuevas reglas de validación del campo o la tabla con los datos existentes y emitirá una advertencia la primera vez que se produzca una infracción de una regla de validación de campo o tabla, o una infracción de un desencadenante.

Si la tabla modificada está en una base de datos, ALTER TABLE - SQL requiere el uso exclusivo de dicha base de datos. Para abrir una base de datos con uso exclusivo, incluya EXCLUSIVE en OPEN DATABASE.


Vea también

CREATE TABLE - SQL

INDEX


CREATE TABLE - SQL (Comando)

Vea también

Crea una tabla que tiene los campos especificados.

El controlador ODBC de Visual FoxPro admite la sintaxis de lenguaje Visual FoxPro nativo para este comando. Para obtener información específica sobre controlador, vea Comentarios del controlador más abajo.

Sintaxis

CREATE TABLE | DBF NombreTabla1 [NAME NombreLargoTabla] [FREE]
(NombreCampo1 TipoCampo [(nAnchoCampo[, nPrecisión])]
[NULL | NOT NULL]
[CHECK lExpresión1 [ERROR cTextoMensaje1]]
[DEFAULT eExpresión1]
[PRIMARY KEY | UNIQUE]
[REFERENCES NombreTabla2 [TAG NombreEtiqueta1]]
[NOCPTRANS]
[, NombreCampo2 ...]
[, PRIMARY KEY eExpresión2 TAG NombreEtiqueta2
|, UNIQUE eExpresión3 TAG NombreEtiqueta3]
[, FOREIGN KEY eExpresión4 TAG NombreEtiqueta4 [NODUP]
REFERENCES NombreTabla3 [TAG NombreEtiqueta5]]
[, CHECK lExpresión2 [ERROR cTextoMensaje2]])
| FROM ARRAY NombreMatriz

Argumentos

CREATE TABLE | DBF NombreTabla1 Especifica el nombre de la tabla que desea crear. Las opciones TABLE y DBF son idénticas.

NAME NombreTablaLargo Especifica un nombre largo para la tabla. Este nombre largo solamente se puede especificar cuando hay una base de datos abierta, porque los nombres largos de tabla se almacenan en bases de datos.

Los nombres largos pueden contener 128 caracteres como máximo y se pueden usar en la base de datos en lugar de los nombres cortos de archivo.

FREE Especifica que la tabla no se agregará a ninguna base de datos abierta. No es necesario incluir FREE si no hay ninguna base de datos abierta.

(NombreCampo1 TipoCampo [(nAnchoCampo [, nPrecisión])] Especifica el nombre, el tipo, el ancho y la precisión (el número de lugares decimales) del campo, respectivamente.

TipoCampo es una sola letra que indica el tipo de datos del campo. Algunos tipos de datos de campo necesitan que especifique nAnchoCampo or nPrecisión, o ambos.

nAnchoCampo and nPrecisión se pasan por alto para los tipos D, T, I, Y, L, M, G y P. Si no se incluye nPrecisión para los tipos N, F o B, tomará el valor predeterminado de cero (sin lugares decimales).

NULL Admite valores nulos en el campo.

NOT NULL Impide valores nulos en el campo.

Si omite NULL y NOT NULL, la configuración actual de SET NULL determinará si se admiten valores nulos en el campo. No obstante, si omite NULL y NOT NULL, pero incluye la cláusula PRIMARY KEY o UNIQUE, se pasará por alto la configuración actual de SET NULL y el campo tomará el valor predeterminado de NOT NULL.

CHECK lExpresión1 Especifica una regla de validación para el campo. lExpresión1 puede ser una función definida por el usuario. Observe que cuando se añade un registro en blanco, se comprueba la regla de validación. Se genera un error en caso de que la regla de validación no admita un valor de campo en blanco en un registro añadido.

ERROR cTextoMensaje1 Especifica el mensaje de error que Visual FoxPro mostrará cuando la regla del campo genere un error. El mensaje sólo se muestra cuando los datos se modifican desde una ventana Examinar o Editar.

DEFAULT eExpresión1 Especifica un valor predeterminado para el campo. El tipo de datos de eExpresión1 debe ser el mismo que el del campo.

PRIMARY KEY   Creates a primary index for the field. The primary index tag has the same name as the field.

UNIQUE Crea un índice principal para el campo. La etiqueta de índice principal tiene el mismo nombre que el campo.

Nota Los índices candidatos (que se crean incluyendo la opción UNIQUE en CREATE TABLE o ALTER TABLE-SQL) no son iguales que los índices creados con la opción UNIQUE del comando INDEX. Un índice creado con la opción UNIQUE del comando INDEX admite claves de índice duplicadas, mientras que los índices candidatos no las admiten. Vea INDEX para obtener información adicional acerca de su opción UNIQUE.

Los valores nulos y los registros duplicados no se admiten en campos empleados para índices principales ni candidatos. No obstante, Visual FoxPro no generará ningún error si crea un índice principal o candidato para un campo que admita valores nulos. Visual FoxPro generará un error si intenta introducir un valor nulo o duplicado en un campo utilizado para un índice principal o candidato.

REFERENCES NombreTabla2 [TAG NombreEtiqueta1] Especifica la tabla primaria con la que se establece una relación persistente. Si omite TAG NombreEtiqueta1, la relación se establecerá utilizando la clave de índice principal de la tabla primaria. Si la tabla primaria no tiene ningún índice principal, Visual FoxPro generará un error.

Incluya TAG NombreEtiqueta1 para establecer una relación basada en una etiqueta de índice existente para la tabla primaria. Los nombres de etiqueta de índice pueden contener hasta 10 caracteres.

La tabla primaria no puede ser una tabla libre.

NOCPTRANS Impide la conversión de campos memo y de caracteres a una tabla de códigos diferente. Si se convierte la tabla a otra tabla de códigos, los campos para los que se haya especificado NOCPTRANS no se convertirán. NOCPTRANS solamente se puede especificar para campos de caracteres y memo.

El ejemplo siguiente crea una tabla llamada MITABLA que contiene dos campos de caracteres y dos campos memo. El segundo campo de caracteres, car2, y el segundo campo memo, MEMO2, incluyen NOCPTRANS para impedir la conversión.

CREATE TABLE mitabla (car1 C(10), car2 C(10) NOCPTRANS,;
memo1 M, memo2 M NOCPTRANS)

PRIMARY KEY eExpresión2 TAG NombreEtiqueta2   Especifica un índice principal que se desea crear. eExpresión2 especifica cualquier campo o combinación de campos de la tabla. TAG NombreEtiqueta2 especifica el nombre de la etiqueta de índice principal que se desea crear. Los nombres de etiqueta de índice pueden contener hasta 10 caracteres.

Puesto que una tabla solamente puede tener un índice principal, no es posible incluir esta cláusula si ya ha creado un índice principal para un campo. Visual FoxPro generará un error si incluye dos o más cláusulas PRIMARY KEY en CREATE TABLE.

UNIQUE eExpresión3 TAG NombreEtiqueta3   Crea un índice candidato. eExpresión3 especifica cualquier campo o combinación de campos de la tabla. No obstante, si ha creado un índice principal con una de las opciones de PRIMARY KEY, no podrá incluir el campo especificado para el índice principal. TAG NombreEtiqueta3 especifica un nombre de etiqueta para la etiqueta de índice candidato que se desea crear. Los nombres de etiqueta de índice pueden contener hasta 10 caracteres.

Una tabla puede tener múltiples índices candidatos.

FOREIGN KEY eExpresión4 TAG NombreEtiqueta4 [NODUP] Crea un índice externo (no principal) y establece una relación con una tabla primaria. eExpresión4 especifica la expresión de clave de índice externo y NombreEtiqueta4 especifica el nombre de la etiqueta de clave de índice externo que se desea crear. Los nombres de etiqueta de índice pueden contener hasta 10 caracteres. Incluya NODUP para crear un índice externo candidato.

Puede crear múltiples índices externos para la tabla, pero sus expresiones deben especificar campos distintos de la tabla.

REFERENCES NombreTabla3 [TAG NombreEtiqueta5] Especifica la tabla primaria con la cual se establece una relación persistente. Incluya TAG NombreEtiqueta5 para establecer una relación basada en una etiqueta de índice para la tabla primaria. Los nombres de etiqueta de índice pueden contener hasta 10 caracteres. Si omite TAG NombreEtiqueta5, la relación se establecerá usando de forma predeterminada la clave de índice principal de la tabla primaria.

CHECK eExpresión2 [ERROR cTextoMensaje2] Especifica la regla de validación de tabla. ERROR cTextoMensaje2 especifica el mensaje de error que Visual FoxPro mostrará cuando se ejecute la regla de validación de tabla. El mensaje solamente se muestra cuando se modifican los datos desde una ventana Examinar o Editar.

FROM ARRAY NombreMatriz Especifica el nombre de una matriz existente cuyo contenido es el nombre, el tipo, la precisión y la escala para cada campo de la tabla. El contenido de la matriz se puede definir con la función AFIELDS( ).

Comentarios

La nueva tabla se abre en la menor área de trabajo disponible y puede tener acceso a ella mediante su alias. La nueva tabla se abre de forma exclusiva, cualquiera que sea la configuración actual de SET EXCLUSIVE.

If Si hay una base de datos abierta y no incluye la cláusula FREE, la nueva tabla se agregará a la base de datos. No puede crear una tabla nueva con el mismo nombre que otra ya existente en la base de datos.

Si hay una base de datos abierta, CREATE TABLE -SQL requiere el uso exclusivo de la misma. Para abrir una base de datos para uso exclusivo, incluya EXCLUSIVE en OPEN DATABASE.

Si no hay ninguna base de datos abierta al crear la nueva tabla, se generará un error si se incluyen las cláusulas NAME, CHECK, DEFAULT, FOREIGN KEY, PRIMARY KEY o REFERENCES.

Observe que la sintaxis de CREATE TABLE utiliza comas para separar determinadas opciones de CREATE TABLE. Además, las cláusulas NULL, NOT NULL, CHECK, DEFAULT, PRIMARY KEY y UNIQUE deben estar incluidas entre los paréntesis que contienen las definiciones de columnas.

Comentarios del controlador

Cuando su aplicación envía una instrucción SQL CREATE TABLE de ODBC al origen de datos, el controlador ODBC de Visual FoxPro traduce el comando a un comando CREATE TABLE de Visual FoxPro utilizando la siguiente sintaxis:

Sintaxis de ODBC	Sintaxis de Visual FoxPro
CREATE TABLE nombre-tabla-base (tipo de datos identificador de columna [NOT NULL] [,tipo de datos identificador de columna [NOT NULL] ...)	CREATE TABLE NombreTabla1 [NAME NombreTablaLargo] (NombreCampo1 TipoCampo  [(nAnchoCampo [, nPrecisión])] [NOT NULL])
Cuando crea una tabla utilizando el controlador, éste cierra la tabla inmediatamente después de la creación para permitir el acceso a la tabla por parte de otros usuarios. Esto difiere de Visual FoxPro, que deja la tabla abierta en modo exclusivo después de la creación. No obstante, si se ejecuta un procedimiento almacenado sobre un origen de datos que contiene una instrucción CREATE TABLE, la tabla permanece abierta.

Si el origen de datos es una base de datos (archivo .DBC), el controlador ODBC de Visual FoxPro crea una tabla llamada NombreTablaLargo con el mismo nombre que nombre-tabla-base.

Uso del lenguaje de definición de datos (DDL)

No puede incluir DDL en los siguientes lugares:

•	En una instrucción SQL por lotes que requiera una transacción

•	A continuación de una instrucción ejecutada anteriormente que requiriera una transacción si no está en modo de autoejecución y si su aplicación todavía no ha llamado a SQLTransact.

Si desea crear una tabla temporal, por ejemplo, debería crear la tabla antes de comenzar una instrucción que requiera una transacción. Si incluye la instrucción CREATE TABLE en una instrucción SQL por lotes que requiere una transacción, el controlador devuelve un mensaje de error.


Vea también

ALTER TABLE - SQL

INSERT - SQL

SELECT - SQL

Tipos de datos


DELETE - SQL (Comando)

Vea también

Marca registros para eliminarlos.

El controlador ODBC de Visual FoxPro admite la sintaxis del lenguaje Visual FoxPro nativo para este comando. Para obtener información específica sobre el controlador, vea Comentarios del controlador más abajo.

Sintaxis

DELETE FROM [NombreBasedatos!]NombreTabla
[WHERE CondiciónFiltro1 [AND | OR CondiciónFiltro2 ...]]

Argumentos

FROM [NombreBaseDatos!]NombreTabla Especifica la tabla en la que se marcan registros para eliminar.

NombreBaseDatos! especifica el nombre de una base de datos que contiene la tabla si no es la especificada con el origen de datos. Incluya el nombre de una base de datos que contenga la tabla si no es la especificada con el origen de datos. Incluya el delimitador signo de exclamación (!) después del nombre de la base de datos y antes del nombre de tabla.

WHERE CondiciónFiltro1 [AND | OR CondiciónFiltro2 ...] Especifica que Visual FoxPro sólo marca algunos registros para eliminar.

CondiciónFiltro especifica los criterios que deben satisfacer los registros para marcarlos para su eliminación. Puede incluir tantas condiciones como desee, conectándolas con el operador AND u OR. También puede emplear el operador NOT para invertir el valor de una expresión lógica o utilizar EMPTY( ) para comprobar si hay campos vacíos.

Comentarios

Si se establece SET DELETED como ON, todos los comandos que incluyan un alcance pasarán por alto los registros marcados para eliminación.

DELETE - SQL utiliza bloqueo de registros al marcar múltiples registros para su eliminación en tablas abiertas para acceso compartido. Esto reduce la contención de registros en situaciones de múltiples usuarios, pero puede reducir también el rendimiento. Para obtener un rendimiento máximo, abra la tabla para uso exclusivo.

Comentarios del controlador

Cuando su aplicación envía una instrucción SQL DELETE de ODBC al origen de datos, el controlador de ODBC de Visual FoxPro convierte el comando en el comando DELETE de Visual FoxPro sin traducir.


Vea también

SET DELETED


DELETE TAG (Comando)

Vea también

Quita una o varias etiquetas de un archivo de índice compuesto (.CDX).

Sintaxis

DELETE TAG NombreEtiqueta1 [OF NombreArchivoCDX1]
[, NombreEtiqueta2 [OF NombreArchivoCDX2]] ...

 − O bien −

DELETE TAG ALL [OF NombreArchivoCDX]

Argumentos

NombreEtiqueta1 OF CDXNombreArchivo1 [, NombreEtiqueta2 [OF CDXNombreArchivo2]] ... Especifica la etiqueta que se va a eliminar de un archivo de índice compuesto. Puede eliminar varias etiquetas con un comando DELETE TAG incluyendo una lista de nombres de etiquetas separados por comas. Si existen dos o más etiquetas con el mismo nombre en los archivos de índice abiertos, podrá eliminar la etiqueta de un archivo concreto incluyendo OF NombreArchivoCDX.

ALL [OF CDXNombreArchivo] Elimina todas las etiquetas de un archivo de índice compuesto. Si la tabla actual tiene un archivo de índice compuesto estructural, se eliminarán todas las etiquetas del archivo de índice, se eliminará el archivo de índice del disco y se eliminará el indicador del encabezado de la tabla que indica la presencia de un archivo de índice compuesto estructural. Utilice ALL con OF NombreArchivoCDX para eliminar todas las etiquetas de un archivo de índice compuesto abierto distinto del archivo de índice compuesto estructural.

Comentarios

Los archivos de índice compuesto, creados con INDEX, contienen etiquetas que se corresponden con las entradas del índice. DELETE TAG se utiliza para quitar una o varias etiquetas de los archivos de índice compuesto abiertos. Únicamente puede eliminar etiquetas de los archivos de índice compuesto que estén abiertos en el área de trabajo actual. Si quita todas las etiquetas de un archivo de índice compuesto, el archivo se eliminará del disco.

Visual FoxPro busca primero la etiqueta en el archivo de índice compuesto estructural (si hay alguno abierto). Si la etiqueta no está en el archivo de índice compuesto estructural, FoxPro buscará entonces la etiqueta en el resto de archivos de índice compuesto que estén abiertos.


Vea también

INDEX


DROP TABLE (Comando)

Quita una table de la base de datos especificada en el origen de datos y la elimina del disco.

El controlador ODBC de Visual FoxPro admite la sintaxis del lenguaje Visual FoxPro nativo para este comando. Para obtener información específica sobre el controlador, vea Comentarios del controlador más abajo.

Sintaxis

DROP TABLE NombreTabla | NombreArchivo | ?

Argumentos

NombreTabla   Especifica el nombre de la tabla que se va a quitar de la base de datos especificada con el origen de datos y eliminar del disco.

NombreArchivo   Especifica una tabla libre que se va a eliminar del disco.

?   Muestra el cuadro de diálogo Quitar desde el que se puede elegir una tabla para quitar de la base de datos especificada con el origen de datos y eliminar del disco.

Comentarios

Cuando se ejecuta DROP TABLE, todos los índices principales, valores predeterminados y reglas de validación asociados a la tabla también se eliminan. DROP TABLE también afecta a otras tablas de la base de datos especificada en el origen de datos si estas tablas tienen reglas o relaciones asociadas con la tabla que va a eliminarse. Las reglas y relaciones dejerán de ser válidas cuando la tabla se elimine de la base de datos.

Comentarios del controlador

Cuando su aplicación envía una instrucción SQL DROP TABLE de ODBC al origen de datos, el controlador ODBC de Visual FoxPro traduce el comando a un comando DROP TABLE de Visual FoxPro utilizando la siguiente sintaxis:

Sintaxis de ODBC	Origen de datos	Sintaxis de Visual FoxPro
DROP TABLE nombre-tabla-base	Base de datos (archivo .DBC)	REMOVE TABLE NombreTabla DELETE
	Directorio de tablas libres (archivos .DBF)	ERASE Nombredbf ERASE Nombrecdx ERASE Nombreftp


INDEX (Comando)

Vea también

Crea un archivo de índice para mostrar los registros de la tabla en orden lógico.

Sintaxis

INDEX ON eExpresión TO IDXNombreArchivo | TAG NombreEtiqueta [OF NombreArchivoCDX]
[FOR lExpresión]
[COMPACT]
[ASCENDING | DESCENDING]
[UNIQUE | CANDIDATE]
[ADDITIVE]

Argumentos

eExpresión   La expresión de índice puede incluir el nombre de un campo o campos de la tabla actual. Una clave de índice basada en la expresión de índice se creará en el archivo de índice para cada registro de la tabla. Visual FoxPro utiliza estas claves para mostrar y tener acceso a los registros de la tabla.

Nota  A pesar de que no se recomienda, eExpresión puede ser también una variable de memoria, un elemento de una matriz, o un campo o una expresión de campo de una tabla de otra área de trabajo. Los campos memo no pueden utilizarse solos en las expresiones de índice; deben combinarse con otras expresiones de tipo Carácter. Si accede a un índice que contiene una variable o un campo que ya no existe o que no puede localizarse, Visual FoxPro generará un mensaje de error.

Si intenta crear un índice con una clave cuya longitud varía, la clave se rellenará con espacios. Visual FoxPro no admite claves de índice de longitud variable.

Es posible crear una clave de índice de longitud 0. Por ejemplo, una clave de índice de longitud 0 se crea cuando la expresión de índice es una subcadena de un campo memo vacío. Una clave de índice de longitud 0 genera un mensaje de error. Cuando Visual FoxPro crea un índice, evalúa los campos del primer registro de la tabla. Si un campo está vacío, quizá sea necesario introducir algunos datos temporales en el campo del primer registro para evitar una clave de índice de longitud 0.

TO IDXNombreArchivo Crea un archivo de índice .IDX. Al archivo de índice se le dará la extensión predeterminada .IDX.

TAG NombreEtiqueta [OF CDXNombreArchivo] Crea un archivo de índice compuesto. Los archivos de índice compuesto son archivos de un solo índice que constan de cualquier cantidad de etiquetas (entradas de índice) independientes. Cada etiqueta se identifica por su nombre de etiqueta único. Los nombres de etiqueta deben comenzar con una letra o un subrayado y pueden constar de cualquier combinación de hasta 10 letras, dígitos o subrayados. El número de etiquetas de un archivo de índice compuesto está limitado únicamente por la memoria y el espacio de disco disponibles.

Los archivos de índice compuesto con varias entradas son siempre compactos. No es necesario incluir COMPACT al crear un archivo de índice compuesto. Los nombres de los archivos de índice compuesto tienen la extensión .CDX.

Se pueden crear dos tipos de archivos de índice compuesto: estructural y no estructural.

Archivos de índice compuesto estructural  Puede crear un archivo de índice compuesto estructural con TAG NombreEtiqueta excluyendo la cláusula opcional OF NombreArchivoCDX. Estos archivos de índice compuesto estructural siempre tienen el mismo nombre base que la tabla y se abren automáticamente al abrir la tabla.

Archivos de índice compuesto no estructural  Puede crear un archivo de índice compuesto no estructural incluyendo OF NombreArchivoCDX después de TAG NombreEtiqueta. A diferencia de un archivo de índice compuesto estructural, un archivo de índice compuesto no estructural puede abrirse explícitamente con SET INDEX o la cláusula INDEX en USE.

Si ya se ha creado y abierto un archivo de índice compuesto, al emitir INDEX con TAG NombreEtiqueta se añadirá una etiqueta al archivo de índice compuesto.

FOR lExpresión   Especifica una condición por la cual solamente los registros que satisfacen la expresión de filtro lExpresión están disponibles para su visualización y acceso. Solamente se crean claves de índice en el archivo de índice para los registros que coincidan con la expresión de filtro.

Rushmore optimiza un comando INDEX ... FOR lExpresión si lExpresión es una expresión optimizable. Para obtener el mejor rendimiento, use una expresión optimizable en la cláusula FOR.

COMPACT crea un archivo compacto .IDX.

ASCENDING   Especifica un orden ascendente para el archivo .CDX. De forma predeterminada, las etiquetas .CDX se crean en orden ascendente (puede incluir ASCENDING como recordatorio del orden del archivo de índice). Una tabla puede indexarse en orden inverso incluyendo DESCENDING.

DESCENDING Especifica un orden descendente para el archivo .CDX. No se permite incluir DESCENDING durante la creación de archivos de índice .IDX.

UNIQUE   Especifica que solamente se incluirá en un archivo .IDX o en una etiqueta .CDX el primer registro encontrado que tenga un valor de clave de índice determinado. UNIQUE puede servir para evitar la visualización o el acceso a registros duplicados. Todos los registros que se añadan con claves de índice duplicadas se excluirán del archivo de índice. Utilizar la opción UNIQUE de INDEX es lo mismo que ejecutar SET UNIQUE ON antes de emitir INDEX o REINDEX.

Cuando está activo un índice UNIQUE o una etiqueta única y se cambia un registro duplicado de tal forma que cambie la clave índice, se actualizará el índice o la etiqueta de índice. Sin embargo, el siguiente registro duplicado con la clave índice ORIGINAL no podrá accederse o mostrarse hasta que reindexe el archivo utilizando REINDEX.

CANDIDATE   Crea una etiqueta de índice estructural candidato. La palabra clave CANDIDATE solamente se puede incluir en la creación de una etiqueta de índice estructural; de lo contrario, Visual FoxPro genera un mensaje de error.

Una etiqueta de índice candidato impide valores duplicados en el campo o la combinación de campos especificado en la expresión de índice eExpresión. El término “candidato” hace referencia al tipo de índice: puesto que los índices candidatos impiden valores duplicados, están cualificados como “candidatos” para transformarse en índices principales.

Visual FoxPro genera un error si crea una etiqueta de índice candidato para un campo o combinación de campos que ya contienen valores duplicados.

ADDITIVE   Mantiene abierto cualquier archivo de índice abierto previamente. Si omite la cláusula ADDITIVE cuando crea un archivo o varios archivos de índice para la tabla con INDEX, cualquier archivo de índice abierto previamente (excepto los de índice compuesto estructural) se cierran.

Comentarios

Los registros de una tabla que tenga un índice se muestran y se acceden en el orden especificado por la expresión índice. Un archivo de índice no cambia el orden físico de los registros de la tabla.

Tipos de índice

Visual FoxPro le permite crear dos tipos de archivos de índice:

•	Archivos de índice compuesto .CDX que contienen varias entradas de índice que se denominan etiquetas

•	Archivos de índice .IDX que contienen una entrada de índice.

También puede crear un archivo de índice compuesto estructural, que se abrirá automáticamente con la tabla.

Sugerencia Puesto que los archivos de índice compuesto estructurales se abren automáticamente cuando se abre la tabla, son los índices recomendados.

Incluya COMPACT para crear archivos de índice .IDX compactos. Los archivos de índice compuesto son siempre compactos.

Orden y actualización de índices

Únicamente un archivo de índice (el archivo de índice maestro) o una etiqueta (la etiqueta maestra) controla el orden en el que se muestra o se tiene acceso a la tabla. Algunos comandos (por ejemplo, SEEK) utilizan el archivo de índice maestro o la etiqueta maestra para buscar registros. Sin embargo, todos los archivos de índice .IDX y .CDX se actualizarán al hacer cambios en la tabla.

Funciones definidas por el usuario

Aunque una expresión de índice puede contener una función definida por el usuario (FDU), no debe usar funciones definidas por el usuario en una expresión de índice, ya que aumenta el tiempo necesario para crear o actualizar el índice. Además, las actualizaciones del índice puede que no se realicen cuando se usa una función definida por el usuario para una expresión de índice.

Si utiliza una FDU en una expresión de índice, Visual FoxPro debe ser capaz de localizar la FDU. Cuando Visual FoxPro crea un índice, la expresión de índice se guarda en el archivo de índice, pero únicamente se incluye una referencia de la FDU en la expresión de índice.


Vea también

ALTER TABLE

DELETE TAG

SET COLLATE

SET UNIQUE


INSERT - SQL (Comando)

Vea también

Añade un registro al final de una tabla que contiene los valores de campo especificados.

El controlador ODBC de Visual FoxPro admite la sintaxis del lenguaje Visual FoxPro nativo para este comando. Para obtener información específica sobre el controlador, vea Comentarios del controlador más abajo.

Sintaxis

INSERT INTO nombre_dbf [(nombref1 [, nombref2, ...])]
VALUES (eExpresión1 [, eExpresión2, ...])

Argumentos

INSERT INTO nombre_dbf Especifica el nombre de la tabla a la que se añadirá un registro. nombre_dbf puede incluir una ruta de acceso y puede ser una expresión de nombre.

Si la tabla que especifica no está ya abierta, se abrirá en modo exclusivo en una área de trabajo nueva y se añadirá el registro. El área de trabajo nueva no se selecciona, sino que permanece seleccionada el área de trabajo actual.

Si la tabla que especifica está abierta, INSERT añade el registro a la tabla. Si la tabla está abierta en una área de trabajo distinta del área de trabajo actual, no se seleccionará después de añadir el registro; el área de trabajo actual permanecerá seleccionada.

[(nombref1 [, nombref2 [, ...]])] Especifica los nombres de los campos del nuevo registro donde se insertan los valores.

VALUES (eExpresión1 [, eExpresión2 [, ...]]) Especifica los valores de campo que se insertan en el nuevo registro. Si omite los nombres de los campos, debe especificar los valores de campo en el orden definido por la estructura de la tabla.

Comentarios

El nuevo registro contiene los datos indicados en la cláusula VALUES.

Comentarios del controlador

Cuando su aplicación envía una instrucción SQL INSERT de ODBC al origen de datos, el controlador ODBC de Visual FoxPro convierte el comando a un comando INSERT de Visual FoxPro sin traducir.


Vea también

CREATE TABLE - SQL

SELECT - SQL


SELECT - SQL (Comando)

Vea también

Recupera datos de una o más tablas.

El controlador ODBC de Visual FoxPro admite la sintaxis del lenguaje Visual FoxPro nativo para este comando. Para obtener información específica sobre el controlador, vea Comentarios del controlador más abajo.

Sintaxis

SELECT [ALL | DISTINCT]
[Alias.] Elemento_Selección [AS Nombre_Columna]
[, [Alias.] Elemento_Selección [AS Nombre_Columna] ...]
FROM [NombreBasedatos!]Tabla [Alias_Local]
[, [NombreBasedatos!]Tabla [Alias_Local] ...]
[WHERE CondiciónCombinación [AND CondiciónCombinación
…]
[AND | OR CondiciónFiltro [AND | OR CondiciónFiltro ...]]]]
[GROUP BY ColumnaGrupo [, ColumnaGrupo ...]]
[HAVING CondiciónFiltro]
[UNION [ALL] ComandoSELECT]
[ORDER BY Elemento_Orden[ASC | DESC] [, Elemento_Orden[ASC | DESC] ...]]

Argumentos

[ALL | DISTINCT]
[Alias.] Elemento_Selección [AS Nombre_Columna]
[, [Alias.] Elemento_Selección [AS Nombre_Columna] ...]   La cláusula SELECT especifica los campos, constantes y expresiones que se mostrarán en el resultado de la consulta.

De forma predeterminada, se muestran todas las filas (ALL) del resultado de la consulta.

DISTINCT excluye duplicados de cualquier fila del resultado de la consulta.

Nota Puede utilizar DISTINCT únicamente una vez por cláusula SELECT.

Alias. cualifica nombres de elementos coincidentes. Cada elemento que especifique con Elemento_Selección genera una columna de los resultados de la consulta. Si dos o más elementos tienen el mismo nombre, incluya el alias de la tabla y un punto antes del nombre del elemento para impedir la duplicación de las columnas.

Elemento_Selección especifica un elemento a 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 cláusula FROM.

•	Una constante especificando que el mismo valor constante ha de aparecer en cada fila del resultado de la consulta.

•	Una expresión que puede ser el nombre de una función definida por el usuario (FDU).

Funciones definidas por el usuario con SELECT

A pesar de que se permite la utilización de FDUs en la cláusula SELECT, también debe tener en cuenta las restricciones siguientes:

•	La velocidad de las operaciones realizadas por SELECT puede verse limitada por la velocidad a la que se ejecute la FDU. Las manipulaciones de grandes volúmenes mediante FDU pueden implementarse mejor utilizando API y FDU escritas en C o en lenguaje ensamblador.

•	La única forma fiable de pasar valores a las FDU invocadas desde SELECT es mediante la lista de argumentos que se pasa a la función cuando se invoca.

•	Si experimenta y descubre una manipulación supuestamente prohibida que funciona correctamente con una versión determinada de FoxPro, no hay ninguna garantía de que continuará funcionando en las versiones posteriores.

Teniendo en cuenta estas restricciones, las funciones definidas por el usuario son aceptables en la cláusula SELECT. No obstante, no olvide que el uso de SELECT puede ralentizar el rendimiento.

Las funciones de campo siguientes están disponibles para utilizarse con un elemento de selección que sea un campo o una expresión que involucre un campo:

•	AVG(Elemento_Selección), que calcula la media de una columna de datos numéricos.

•	COUNT(Elemento_Selección), que cuenta el número de elementos de selección de una columna. COUNT(*) cuenta el número de filas de la salida de la consulta.

•	MIN(Elemento_Selección), que determina el valor más pequeño de Elemento_Selección en una columna.

•	MAX(Elemento_Selección), que determina el valor más grande de Elemento_Selección en una columna.

•	SUM(Elemento_Selección), que totaliza una columna de datos numéricos.

No puede anidar funciones de campo.

AS Nombre_Columna   Especifica el encabezado para una columna en la salida de la consulta. Esto es útil cuando Elemento_Selección es una expresión o contiene una función de campo y quiere darle a la columna un nombre con significado. Nombre_Columna puede ser una expresión pero no puede contener caracteres (por ejemplo, espacios) que no estén permitidos en nombres de campos de tablas.

FROM [NombreBaseDatos!]Tabla [Alias_Local]
[, [NombreBaseDatos!]Tabla [Alias_Local] ...] Enumera las tablas que contienen los datos recuperados por la consulta. Si no hay ninguna tabla abierta, Visual FoxPro muestra el cuadro de diálogo Abrir para que pueda especificar la ubicación del archivo. Una vez abierta, la tabla permanece abierta después de terminar la consulta.

NombreBaseDatos! especifica el nombre de una base de datos no activa 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 de signo de exclamación (!) después del nombre de la base de datos y antes del nombre de la tabla.

Alias_Local especifica un nombre temporal para la tabla indicada en Tabla. Si especifica un alias local, debe utilizar el alias local en lugar de la tabla a través de todo el SELECT. El alias local no afecta el entorno Visual FoxPro.

WHERE CondiciónCombinación [AND CondiciónCombinación ...]
[AND | OR CondiciónFiltro [AND | OR CondiciónFiltro ...]] Indica a Visual FoxPro que incluya únicamente ciertos registros en el resultado de la consulta. WHERE es necesario para recuperar datos de varias tablas.

CondiciónCombinación especifica los campos que vinculan las tablas de la cláusula FROM. Si incluye más de una tabla en una consulta, deberá especificar una condición de combinación para cada tabla después de la primera.

Importante Tenga presente la siguiente información cuando cree condiciones de combinación:

•	Si incluye dos tablas en una consulta y no especifica una condición de combinación, cada registro de la primera tabla se combinará con cada registro de la segunda tabla mientras que se cumplan las condiciones del filtro. Una consulta semejante puede producir resultados muy largos.

•	Tenga cuidado al combinar tablas con campos vacíos porque Visual FoxPro empareja los campos vacíos. Por ejemplo, si combina por CLIENTES.CP y FACTURAS.CP y CLIENTES contiene 100 códigos postales vacíos y FACTURAS contiene 400 códigos postales vacíos, la salida de la consulta contendrá 40.000 registros de más como resultado de los campos vacíos. Utilice la función EMPTY( ) para eliminar los registros vacíos de la salida de la consulta.

Las condiciones de combinación múltiple deben conectarse mediante el operador AND. Cada condición de combinación tiene la forma siguiente:

NombreCampo1 Comparación NombreCampo2

Donde NombreCampo1 es el nombre de un campo de una tabla, NombreCampo2 es el nombre de un campo de otra tabla y Comparación es uno de los operadores siguientes.

Operador	Comparación
=	Igual
==	Exactamente igual
LIKE	LIKE de SQL
<>, !=, #	Distinto de
>	Mayor que
>=	Mayor o igual que
<	Menor que
<=	Menor o igual que
Cuando utiliza el operador = con cadenas, actúa de forma distinta dependiendo del ajuste de SET ANSI. Cuando SET ANSI está OFF, Visual FoxPro trata las comparaciones de cadenas en la forma habitual en Xbase. Cuando SET ANSI está a ON, Visual FoxPro sigue las normas ANSI para comparaciones de cadenas. Vea SET ANSI y SET EXACT para obtener información adicional sobre la forma en que Visual FoxPro realiza las comparaciones de cadenas.

CondiciónFiltro especifica los criterios que deben cumplir los registros para que se incluyan en el resultado de la consulta. Una consulta puede incluir tantas condiciones de filtro como se deseen, conectadas con el operador AND y OR. También puede utilizar el operador NOT para invertir el valor de una expresión lógica o utilizar EMPTY( ) para comprobar si un campo está vacío. CondiciónFiltro puede presentar una de estas formas:

Ejemplo 1   NombreCampo1 Comparación NombreCampo2

customer.cust_id = orders.cust_id

Ejemplo 2   NombreCampo Comparación Expresión

payments.amount >= 1000

Ejemplo 3   NombreCampo Comparación ALL (Subconsulta)

company < ALL ;

(SELECT company FROM customer WHERE country = “Reino Unido”)

Cuando la condición de filtro incluye ALL, el campo debe cumplir la condición de comparación para todos los valores generados por la subconsulta antes de que se incluya el registro en el resultado de la consulta.

Ejemplo 4   NombreCampo Comparación ANY | SOME (Subconsulta)

company < ANY ;

(SELECT company FROM customer WHERE country = “Reino Unido”)

Cuando la condición de filtro incluye ANY o SOME, el campo debe cumplir la condición de comparación en al menos uno de los valores generados por la subconsulta.

El siguiente ejemplo comprueba si los valores del campo están dentro de un intervalo de valores especificado

Ejemplo 5   NombreCampo [NOT] BETWEEN Inicio_Intervalo AND Fin_Intervalo

customer.postalcode BETWEEN 90000 AND 99999

Este ejemplo comprueba si al menos una línea cumple los criterios de la subconsulta. Cuando la condición de filtro incluye EXISTS, la condición de filtro se evalúa como verdadera (.T.) a no ser que la subconsulta sea un conjunto vacío.

Ejemplo 6   [NOT] EXISTS (Subconsulta)

EXISTS ;

(SELECT * FROM orders WHERE customer.postalcode =

orders.postalcode)

Ejemplo 7   NombreCampo [NOT] IN Conjunto_valores

customer.postalcode NOT IN (“98052”,”98072”,”98034”)

Cuando una condición 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.

Ejemplo 8   NombreCampo [NOT] IN (Subconsulta)

customer.cust_id IN ;

(SELECT orders.cust_id FROM orders WHERE orders.city=”Seattle”)

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.

Ejemplo 9   NombreCampo [NOT] LIKE cExpresión

customer.country NOT LIKE “Reino Unido”

Esta condición de filtro busca cada uno de los campos que coinciden con cExpresión. Puede utilizar el signo de porcentaje (%) y subrayado ( _ ) como parte de cExpresión. El subrayado representa un solo carácter desconocido en la cadena.

GROUP BY ColumnaGrupo [, ColumnaGrupo ...] Agrupa las filas de la consulta basándose en los valores de una o más columnas. ColumnaGrupo puede ser el nombre de un campo normal de una tabla, o un campo que incluya una función de campo SQL, o una expresión numérica indicando la posición de la columna en la tabla resultado (la columna más a la izquierda tiene el número 1).

HAVING CondiciónFiltro   Especifica una condición 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 se deseen, conectadas con el operador AND u OR. También puede utilizar NOT para invertir el valor de una expresión lógica.

CondiciónFiltro no puede contener una subconsulta.

Una cláusula HAVING sin una cláusula GROUP BY actúa como una cláusula WHERE. Puede utilizar alias locales y funciones de campo en la cláusula HAVING. Utilice una cláusula WHERE para acelerar el rendimiento si su cláusula HAVING no contiene funciones de campo.

[UNION [ALL] ComandoSELECT] Combina el resultado final de una SELECT con el resultado final de otra SELECT. De forma predeterminada, UNION comprueba el resultado combinado y elimina las filas duplicadas. Puede utilizar paréntesis para combinar múltiples cláusulas UNION.

Utilice la palabra clave opcional ALL para impedir que UNION elimine filas duplicadas de los resultados combinados.

Las cláusulas UNION siguen las reglas siguientes:

•	No puede utilizar UNION para combinar subconsultas.

•	La salida de ambos SELECT debe tener el mismo número de columnas.

•	Cada columna de los resultados de la consulta de un SELECT debe tener el mismo tipo de dato y ancho que su columna correspondiente en el otro SELECT.

•	Únicamente el SELECT final puede tener una cláusula ORDER BY, que debe referirse a las columnas de salida por su número. Si se incluye otra cláusula ORDER BY, afectará al resultado completo.

También puede usar la cláusula UNION para simular una combinación externa.

Cuando combina dos tablas en una consulta, solamente se incluyen en la salida los registros que tengan valores coincidentes en los campos de combinación. Si un registro de la tabla primaria no tiene un registro correspondiente en la tabla secundaria, el registro de la tabla primaria no se incluye en la salida. Una combinación externa le permite incluir todos los registros de la tabla primaria en la salida, junto con los registros coincidentes de la tabla secundaria. Para crear una combinación externa en Visual FoxPro, necesita 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 Asegúrese de incluir el espacio que aparece justo delante de cada punto y coma. De lo contrario, recibirá un error.

La sección del comando situada antes de la cláusula UNION selecciona los registros de ambas tablas que contienen valores coincidentes. Las empresas cliente que no tengan facturas asociadas no se incluyen. La sección del comando situada tras la cláusula UNION selecciona los registros de la tabla customer que no tienen registros coincidentes en la tabla orders.

En lo que respecta a la segunda sección del comando, observe lo siguiente:

•	La instrucción SELECT incluida entre paréntesis se procesa en primer lugar. Esta instrucción da como resultado una selección de todos los números de clientes de la tabla orders.

•	La cláusula WHERE busca todos los números de cliente de la tabla customer que no están en la tabla orders. Puesto que la primera sección del comando proporcionó todas las empresas que tenían un número de cliente en la tabla orders, todas las empresas de la tabla customer están incluidas en los resultados de la consulta.

•	Puesto que las estructuras de las tablas incluidas en UNION deben ser idénticas, hay dos marcadores de posición en la segunda instrucción SELECT para representar orders.order_id y orders.emp_id de la primera instrucción SELECT.

Nota Los marcadores de posición deben ser del mismo tipo que los campos que representan. Si el campo es de tipo Fecha, el marcador de posición deberá ser { / / }. Si el campo es de tipo Carácter, el marcador de posición deberá ser la cadena vacía (“”).

ORDER BY Elemento_Orden [ASC | DESC] [, Elemento_Orden [ASC | DESC] ...] Ordena el resultado de la consulta basándose en los datos de una o varias columnas. Cada Elemento_Orden debe corresponder a una columna del resultado de la consulta, y puede ser uno de los siguientes:

•	Un campo de una tabla FROM que también es un elemento de selección en la cláusula principal SELECT (no en una subconsulta).

•	A expresión numérica que indica la ubicación de la columna en la tabla resultante. (La columna de la izquierda es la número 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 aparecerán desordenados si no especifica un orden con ORDER BY.

Comentarios

SELECT es un comando SQL que está 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 Visual FoxPro (como cualquier otro comando Visual FoxPro)

Observe que SELECT no respeta la condición 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 paréntesis. Puede tener múltiples subconsultas al mismo nivel (no anidadas) en la cláusula WHERE (consulte esta sección de los argumentos). Las subconsultas pueden contener múltiples condiciones de combinación.

Comentarios del controlador

Cuando su aplicación envía una instrucción SQL SELECT de ODBC al origen de datos, el controlador ODBC de Visual FoxPro convierte el comando a un comando SELECT de Visual FoxPro sin traducir a menos que el comando contenga una secuencia de escape ODBC. Los elementos integrados en la secuencia de escape ODBC se convierten a la sintaxis de Visual FoxPro. Para obtener más información sobre el uso de las secuencias de escape de ODBC, vea Funciones de fecha y hora y el Manual Microsoft ODBC 2.0 Programmer’s Reference y SDK Guide.


Vea también

CREATE TABLE - SQL

INSERT - SQL

SET ANSI

SET EXACT


SET ANSI (Comando)

Vea también

Determina cómo se hacen las comparaciones de cadenas de distintas longitudes utilizando el operador = en comandos SQL de Visual FoxPro.

Sintaxis

SET ANSI ON | OFF

Argumentos

ON   (Predeterminado para el controlador; el valor predeterminado para Visual FoxPro es OFF) La cadena más corta se rellenará con el número de 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 la longitud de las cadenas. Fíjese en esta comparación:

'Tommy' = 'Tom'

El resultado es falso (.F.) si SET ANSI está ON porque, al rellenar, ‘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. Las dos cadenas se compararán 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á OFF porque la comparación termina después de ‘Tom’.

Comentarios

SET ANSI determina si se rellenará con espacios la más corta de las cadenas antes de hacer la comparación. 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.

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.


Vea también

SELECT - SQL

SET EXACT


SET BLOCKSIZE (Comando)

Especifica cómo se asigna el espacio en disco para el almacenamiento de los campos memo.

Sintaxis

SET BLOCKSIZE TO nBytes

Argumentos

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 (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 para tamaño de bloque mayor que 32, ahorrará mucho espacio en disco.

Comentarios

El valor predeterminado de SET BLOCKSIZE es 64. Para restablecer BLOCKSIZE a un valor diferente después de que se ha creado el archivo, establezca BLOCKSIZE a un nuevo valor y luego utilice COPY para crear una nueva tabla. La tabla nueva tendrá el tamaño de bloque especificado.


SET COLLATE (Comando)

Vea también

Especifica una secuencia de ordenación para los campos de caracteres en operaciones posteriores de indexado y orden.

Sintaxis

SET COLLATE TO cNombreSecuencia

Argumentos

cNombreSecuencia Especifica una secuencia de ordenación. Dispone de las siguientes opciones de secuencias de ordenación.

Opciones	Idioma
DUTCH	Holandés
GENERAL	Inglés, Francés, Alemán, Español moderno, Portugués y otros idiomas de Europa Occidental
GERMAN	Orden del listín telefónico alemán (DIN)
ICELAND	Islandés
MACHINE	Máquina (es la secuencia de ordenación predeterminada para versiones anteriores de FoxPro)
NORDAN	Noruego, Danés
SPANISH	Español tradicional
SWEFIN	Sueco, Finlandés
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 ordena entre la “l” y la “m “.

Si especifica una opción de secuencia de ordenació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 ordenación predeterminada, siendo la secuencia con la que están familiarizados los usuarios de Xbase. Los caracteres se ordenan tal y como aparecen en la tabla 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 tabla de códigos actual. Puede 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 ordenación GENERAL y omitir la conversión UPPER( ).

Si especifica una opción de secuencia de ordenación distinta de MACHINE y crea un archivo .IDX, siempre se creará un .IDX compacto.

Utilice SET(“COLLATE”) para volver a la secuencia de ordenación actual.

Puede especificar una secuencia de ordenación para el origen de datos si utiliza el Cuadro de diálogo de Configurar de ODBC de Visual FoxPro o utilizando la palabra clave Collate en la cadena de conexión con SQLDriverConnect. Esto es idéntico a emitir el siguiente comando:

SET COLLATE TO cNombreSecuencia

Comentarios

SET COLLATE le permite ordenar tablas que contienen caracteres acentuados para cualquiera de los idiomas admitidos. Cambiar la configuración de SET COLLATE no afecta a la secuencia de ordenació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 la configuración de SET COLLATE a SPANISH, el índice conservará la secuencia de ordenación GENERAL.


Vea también

Cuadro de diálogo Configurar de ODBC de Visual FoxPro


SET DELETED (Comando)

Vea también

Especifica si Visual FoxPro procesará o no los registros marcados para su eliminación y si están disponibles o no para su uso en otros comandos.

Sintaxis

SET DELETED ON | OFF

Argumentos

ON   (Predeterminado para el controlador, el valor predeterminado para Visual FoxPro es OFF) Especifica que los comandos que operan sobre registros (incluyendo los registros de las tablas relacionadas) utilizando un alcance ignoran los registros marcados para su eliminación.

OFF Especifica que a los registros marcados para su eliminación se puede acceder mediante comandos que operan sobre registros (incluyendo los registros de las tablas relacionadas) utilizando un alcance.

Comentarios

Las consultas que utilizan DELETED( ) para comprobar el estado de los registros pueden optimizarse utilizando la tecnología Rushmore si la tabla está indexada sobre DELETED().

Importante   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 siempre pasa por alto SET DELETED e indexa todos los registros de la tabla.


Vea también

DELETE - SQL


SET EXACT (Comando)

Vea también

Especifica las reglas que utiliza Visual FoxPro al comparar dos cadenas de longitud diferente.

Sintaxis

SET EXACT ON | OFF

Argumentos

ON   Especifica que las expresiones deben coincidir carácter por 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 blancos 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 por carácter hasta llegar al final de la expresión del lado derecho.

Comentarios

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 Carácter, Numérico, Fecha y Lógico.

Sin embargo, cuando compara expresiones de tipo Carácter con el operador =, el resultado puede no ser exactamente el que usted espera. Las expresiones de caracteres se comparan carácter a carácter de izquierda a derecha hasta que una de las los expresiones no es igual a la otra, o 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 Carácter. Si se comparan dos expresiones de caracteres con el operador ==, las expresiones a ambos lados del operador == deberán contener exactamente los mismos caracteres, incluidos los espacios en blanco, para que se consideren iguales. La configuración de SET EXACT se pasa por alto cuando las cadenas de caracteres se comparan con ==.

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 or 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


Vea también

SET ANSI


SET EXCLUSIVE (Comando)

Vea también

Especifica si Visual FoxPro abre los archivos de tabla para uso exclusivo o compartido en una red.

Sintaxis

SET EXCLUSIVE ON | OFF

Argumentos

ON Limita la posibilidad de acceso a una tabla abierta en una red únicamente al usuario que la abrió. La tabla no es accesible para otros usuarios de la red. SET EXCLUSIVE ON impide también que otros usuarios tengan acceso de sólo lectura.

OFF    (Predeterminado para el controlador; el valor predeterminadopara Visual FoxPro es ON para la sesión de datos global y OFF para la sesión de datos privada.) Permite que una tabla abierta en una red se pueda compartir y modificar por cualquier usuario de la red.

Comentarios

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.


Vea también

Cuadro de diálogo de configuración de ODBC de Visual FoxPro


SET NULL (Comando)

Vea también

Determina si los comandos ALTER TABLE - SQL, CREATE TABLE - SQL e INSERT - SQL admiten valores nulos.

Sintaxis

SET NULL ON | OFF

Argumentos

ON   (Predeterminado para el controlador; el valor predeterminado para Visual FoxPro es OFF) Especifica que todas las columnas de una tabla creadas con ALTER TABLE y CREATE TABLE permiten valores nulos. Es posible no aplicar el soporte para valores nulos para columnas de la tabla incluyendo la cláusula NOT NULL en las definiciones de columnas.

Asimismo, especifica que INSERT - SQL insertará valores nulos en las columnas que no se incluyan en la cláusula INSERT - SQL VALUE. INSERT - SQL sólo insertará valores nulos en columnas que admitan valores nulos.

OFF   Especifica que todas las columnas de una tabla creada con ALTER TABLE y CREATE TABLE no admiten valores nulos. Es posible designar soporte de valores nulos 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.

Comentarios

SET NULL sólo afecta al soporte para valores nulos de ALTER TABLE, CREATE TABLE e INSERT - SQL. Otros comandos no se ven afectados por SET NULL.


Vea también

ALTER TABLE

CREATE TABLE - SQL

INSERT - SQL


SET PATH (Comando)

Vea también

Especifica una ruta para buscar archivos. Para obtener información específica del controlador, vea Comentarios del controlador más abajo.

Sintaxis

SET PATH TO [Path]

Argumentos

TO [Ruta] Especifica los directorios en los que desea que busque Visual FoxPro. Use comas o signos de punto y coma para separar los directorios.

Comentarios

SET PATH permite especificar las rutas de búsqueda de otros programas Visual FoxPro que puedan ser llamados en procedimientos almacenados. SET PATH no cambiará la ruta del origen de datos que se especificó para la conexión.

La ejecución de SET PATH TO sin Ruta restaura la ruta al directorio o carpeta predeterminada.

Comentarios del controlador

Si ejecuta SET PATH en un procedimiento almacenado, las siguientes funciones y comandos lo pasarán por alto:

•	Funciones de catálogo como SQLTables y SQLColumns pasarán por alto la nueva ruta y continuarán haciendo referencia a la ruta especificada por el origen de datos en SQLPrepare o SQLExecDirect.

•	Comandos como SELECT, INSERT, UPDATE, DELETE y CREATE TABLE pasarán por alto la nueva ruta y continuarán haciendo referencia a la ruta especificada por el origen de datos en SQLPrepare o SQLExecDirect.

Si ejecuta SET PATH en un procedimiento almacenado y posteriormente no vuelve a establecer la ruta a su estado original, otras conexiones a la base de datos utilizarán la nueva ruta (porque SET PATH tiene como alcance las sesiones de datos).

Si desea crear, seleccionar o actualizar tablas en un directorio distinto al especificado en el origen de datos, indique la ruta completa del archivo en su comando.


Vea también

Cuadro de diálogo de configuración de ODBC de Visual FoxPro

SQLColumns

SQLDriverConnect

SQLTables


SET REPROCESS (Comando)

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.

Sintaxis

SET REPROCESS TO nIntentos [SECONDS] | TO AUTOMATIC

Argumentos

TO nIntentos [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 nIntentos segundos. Solamente está disponible cuando nIntentos es mayor que cero.

Por ejemplo, si nIntentos 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.

Si hay una rutina ON ERROR activa y fracasan los intentos realizados por el comando destinados a 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 nIntentos 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 Escape para cancelar", mientras intenta bloquear el registro o el archivo. El bloqueo se realiza y el mensaje del sistema se elimina si el registro o archivo llega a estar disponible para su bloqueo mientras espera. Si una función intenta realizar el bloqueo, devolverá verdadero (.T.).

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 nIntentos es −1, Visual FoxPro intentará bloquear el registro o archivo indefinidamente. No puede cancelar los intentos de bloqueo presionando la tecla ESC y no se ejecuta ninguna rutina ON ERROR.

Si otro usuario ha establecido un bloqueo en el registro o archivo que usted intenta bloquear, deberá esperar hasta que el otro usuario libere el bloqueo.

TO AUTOMATIC Especifica que Visual FoxPro intente bloquear el registro o el archivo de forma indefinida. (SET REPROCESS TO -2 es un comando equivalente.)

Comentarios

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 UNIQUE (Comando)

Vea también

Especifica si los registros con valores de clave índice duplicada se mantienen en el archivo de índice.

Sintaxis

SET UNIQUE ON | OFF

Argumentos

ON   Especifica que los registros con un valor de clave de índice duplicado no se incluyan en el archivo de índice. Únicamente el primer registro con la clave duplicada se incluye en el archivo de índice.

OFF   (Predeterminado) Especifica que los registros con valores duplicados de clave de índice se incluyan en el archivo de índice.

Comentarios

Un archivo de índice conserva su configuración de SET UNIQUE al ejecutar REINDEX. Para ver más información al respecto, vea INDEX.


Vea también

INDEX


UPDATE - SQL (Comando)

Vea también

Actualiza registros de una tabla con nuevos valores.

El controlador ODBC de Visual FoxPro admite la sintaxis del lenguaje Visual FoxPro nativo para este comando. Para obtener información específica sobre el controlador, vea Comentarios del controlador más abajo.

Sintaxis

UPDATE [NombreBasedatos1!]NombreTabla1
SET Nombre_Columna1 = eExpresión1
[, Nombre_Columna2 = eExpresión2 ...]
WHERE CondiciónFiltro1 [AND | OR CondiciónFiltro2 ...]]

Argumentos

UPDATE [NombreBaseDatos1!]NombreTabla1 Especifica la tabla en la que se actualizan registros con valores nuevos.

NombreBaseDatos1! especifica el nombre de base de datos no actual que contiene la tabla. Incluya el nombre de la base de datos que contiene la tabla si no es la base de datos actual. Incluya el delimitador signo de exclamación (!) después del nombre de base de datos y antes del nombre de tabla.

SET Nombre_Columna1 = eExpresión1
[, Nombre_Columna2 = eExpresión2 Especifica las columnas que se actualizan y sus nuevos valores. Si omite la cláusula WHERE, todas las filas de la columna se actualizarán con el mismo valor.

WHERE CondiciónFiltro1 [AND | OR CondiciónFiltro2 ...]] Especifica los registros que se actualizan con valores nuevos.

CondiciónFiltro especifica los criterios que deben satisfacer los registros para actualizarse con nuevos valores. Puede incluir tantas condiciones de filtro como desee, conectándolas con el operador AND u OR. También puede emplear el operador NOT para invertir el valor de una expresión lógica, o utilizar EMPTY( ) para comprobar si hay campos vacíos.

Comentarios

UPDATE - SQL sólo puede actualizar registros en una sola tabla.

A diferencia de REPLACE, UPDATE - SQL utiliza el bloqueo de registros al actualizar múltiples registros en tablas abiertas para acceso compartido. Esto reduce la contención de registros en situaciones multiusuario, pero también puede reducir el rendimiento. Para obtener el máximo rendimiento, abra la tabla para uso exclusivo o utilice FLOCK( ) para bloquearla.

Comentarios del controlador

Cuando su aplicación envía una instrucción SQL UPDATE de ODBC al origen de datos, el controlador ODBC de Visual FoxPro convierte el comando a un comando SELECT de Visual FoxPro sin traducir.


Vea también

DELETE - SQL

INSERT - SQL


Tipos de datos de campos de Visual FoxPro

La siguiente tabla enumera los valores del argumento TipoCampo en ALTER TABLE y CREATE TABLE e indica si los argumentos nAnchoCampo y nPrecisión son obligatorios.

TipoCampo	nAnchoCampo	nPrecisión	Description
C	n	-	Campo Carácter de ancho n
D	-	-	Fecha
T	-	-	Fecha Hora
N	n	d	Campo numérico de ancho n con d lugares decimales
F	n	d	Campo numérico flotante de ancho n con d lugares decimales
I	-	-	Entero
B	-	d	Doble
Y	-	-	Moneda
L	-	-	Lógica
M	-	-	Memo
G	-	-	General


Requisitos del sistema

Los requisitos del sistema para la instalación tienen en cuenta el sistema operativo mínimo y el espacio en disco necesario para instalar adecuadamente el controlador. Una vez que haya instalado el controlador, puede seleccionar qué aplicación específica quiere utilizar para tener acceso a datos de Visual FoxPro.

Requisitos para la instalación

Para instalar el controlador ODBC de Microsoft Visual FoxPro, necesita:

•	Windows NT 3.50 (o posterior) o Windows 95

•	2 MB de espacio en disco

Para obtener información sobre la instalación del controlador, vea Configurar el controlador ODBC de Visual FoxPro.

Tener acceso a los datos de Visual FoxPro

Para tener acceso a datos de Microsoft Visual FoxPro 3.0 o FoxPro 2.x, debe tener lo siguiente:

•	Software de cliente ODBC (se instala automáticamente con el controlador)

•	El controlador ODBC de Microsoft Visual FoxPro

•	Cualquiera de los siguientes tipos de software de aplicación:

•	Una aplicación Microsoft Office como Microsoft Excel o Word

•	Una aplicación ODBC en lenguaje C- o C++

•	Una aplicación ODBC de Visual Basic 4.0

•	Cualquiera de los siguientes tipos de datos:

•	Base de datos de Visual FoxPro 3.0 o un directorio de tablas libres

•	Tabla de FoxPro 2.0, 2.5, 2.6

El controlador ODBC de Visual FoxPro admite conjuntos de caracteres de doble byte (DBCS). Para obtener más información, vea Soporte internacional.

El controlador no admite aplicaciones Windows 3.1 de 16 bits.


Versiones compatibles de FoxPro

Puede utilizar el controlador ODBC de Visual FoxPro para tener acceso a datos almacenados en tablas de FoxPro. Los datos de las siguientes versiones de FoxPro son compatibles:

•	2.0

•	2.5

•	2.6

•	3.0 (Visual FoxPro)

Cuando tiene acceso a datos almacenados en Visual FoxPro 3.0, puede elegir conectarse a una base de datos que contenga cero o más tablas o a un directorio de tablas libre.

Para obtener más información sobre la conexión a un origen de datos, vea Agregar un origen de datos de Visual FoxPro.


Introducción a la arquitectura del controlador

El controlador ODBC de Microsoft Visual FoxPro es un controlador de 32 bits que permite abrir y consultar una base de datos de Microsoft Visual FoxPro o tablas de FoxPro mediante la interfaz de Open Database Connectivity (ODBC). Puede tener acceso a datos de FoxPro utilizando:

•	Una aplicación Microsoft Office, como Excel o Microsoft Word, que utilice Microsoft Query para comunicarse con ODBC.

•	Una aplicación escrita en Visual C++ o C que utilice la API del SDK de ODBC.

•	Una aplicación escrita en Visual Basic o Visual Basic para Aplicaciones.

En cada caso, la petición de información utiliza la API de ODBC. El Administrador de controladores ODBC ejecuta el controlador ODBC de Visual FoxPro para abrir y recuperar datos de tablas y bases de datos de FoxPro.

La arquitectura está representada en el siguiente diagrama:


Compatibilidad de marcadores

El controlador ODBC de Visual FoxPro admite marcadores simples. Cuando ejecuta SQLGetInfo con el tipo de información SQL_BOOKMARK_PERSISTENCE, el valor devuelto es SQL_BP_SCROLL.

Para obtener información sobre los marcadores, vea Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


Modelo concurrente compatible

El controlador ODBC de Visual FoxPro admite concurrencia de sólo lectura. Su aplicación puede ejecutar SQLSetStmtOption con una opción SQL_CONCURRENCY de SQL_CONCUR_READ_ONLY.

Para obtener más información sobre la concurrencia y SQLSetStmtOption, vea Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


concurrencia de sólo lectura

El cursor no se puede actualizar.


versiones de fila

Básicamente compatible con marcas de hora, en la que las versiones de fila se comparan en tiempo de actualización.


Modelo de cursor compatible

El controlador ODBC de Visual FoxPro admite cursores de bloque (conjunto de filas) y estáticos. Los cursores estáticos son compatibles para cualquier controlador que se ajuste a la norma ODBC Level 1. El controlador no es compatible con cursores dinámicos, controlados por conjuntos claves o mixtos (conjuntos de claves y dinámicos).

Su aplicación puede ejecutar SQLSetStmtOption con una opción SQL_CURSOR_TYPE de SQL_CURSOR_FORWARD_ONLY (cursor de bloque) o SQL_CURSOR_STATIC (cursor estático).

Nota   Si ejecuta SQLSetStmtOption con una opción SQL_CURSOR_TYPE distinta de SQL_CURSOR_FORWARD_ONLY o SQL_CURSOR_STATIC, la función devuelve SQL_SUCCESS_WITH_INFO con un SQLSTATE de 01S02 (el valor de opción cambia). El controlador establece todos los modos de cursor no compatibles a SQL_CURSOR_STATIC.

Para obtener más información sobre los tipos de cursor y SQLSetStmtOption, vea Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


cursor de bloque

Un conjunto de resultados de sólo lectura con desplazamiento hacia adelante que se devuelve al cliente; es responsable de mantener el almacenamiento de los datos.


cursor estático

Una instantánea de un conjunto de datos definidos por una consulta. Los cursores estáticos no reflejan los cambios en tiempo real realizados por otros usuarios de los datos subyacentes. El búfer de memoria del cursor lo mantiene la biblioteca de cursores de ODBC, que permite el desplazamiento hacia adelante y hacia atrás.


conjunto de filas

Bloques de datos almacenados en un cursor, que representan filas recuperadas de un origen de datos.


Tipos de datos

En la API de ODBC y en Microsoft Query se presentan los tipos de datos compatibles con el controlador.

Tipos de datos en aplicaciones C

Puede obtener una lista de los tipos de datos compatibles con el controlador ODBC de Visual FoxPro utilizando la función SQLGetTypeInfo en aplicaciones C o C++.

Tipos de datos en aplicaciones que utilizan Microsoft Query

Si su aplicación utiliza Microsoft Query para crear una nueva tabla en un origen de datos de Visual FoxPro, Microsoft Query muestra el cuadro de diálogo Definición de nueva tabla. Bajo “Descripción de campo”, el cuadro “Tipo” enumera los tipos de datos de campos de Visual FoxPro, representados por un carácter.


Soporte internacional

El controlador ODBC de Microsoft Visual FoxPro es compatible con:

•	conjuntos de caracteres de doble byte (DBCS)

•	múltiples secuencias ordenación

Una secuencia de ordenación define el orden de clasificación de los datos almacenados en una tabla o base de datos de Visual FoxPro. De forma predeterminada, el controlador está configurado para utilizar las secuencias que sean compatibles con el idioma de su sistema operativo.

Para ver una lista de las secuencias de ordenación compatibles, vea SET COLLATE.


configuración regional

El conjunto de información que corresponde a un país e idioma determinados. Una configuración regional indica unas configuraciones específicas como separadores decimales, formatos de fecha y hora, y orden de clasificación de caracteres.


orden

Los órdenes de clasificación incorporan las reglas de ordenación de diferentes configuraciones regionales, permitiendo ordenar correctamente los datos en estos idiomas. En Visual FoxPro, el orden actual determina el resultado de las comparaciones de expresiones de caracteres y el orden en que los registros aparecen en tablas indexadas u ordenadas.


Cuadro de diálogo Configurar ODBC de Visual FoxPro

Permite agregar o cambiar un origen de datos de Visual FoxPro.

Opciones del cuadro de diálogo

Nombre del origen de datos    Introduzca el nombre que quiere utilizar como origen de datos.

Descripción   Introduzca la descripción para el origen de datos.

Tipos de base de datos   Permite elegir el tipo de base de datos a la que quiere conectar su origen de datos.

Base de datos Visual FoxPro (.DBC)   Especifica que el origen de datos se conecta a una base de datos de Visual FoxPro (archivo .DBC) y todas las tablas y vistas locales de la base de datos.

Directorio de tablas libres   Especifica que el origen de datos se conecta a un directorio de tablas libres. Las funciones de catálogo de ODBC como SQLColumns o SQLTables pasan por alto cualquier tabla de base de datos en el mismo directorio. Se puede tener acceso a las tablas de bases de datos utilizando instrucciones SQL SELECT enviadas mediante SQLExecute y SQLExecDirect.

Ruta   Muestra la ruta y el nombre de la base de datos o el directorio de tablas libres al que se conecta el origen de datos.

Examinar   Permite buscar en su sistema y su red una base de datos o un directorio al que quiere conectar su base de datos.

Opciones   Expande el cuadro de diálogo para que pueda ver y configurar las opciones del controlador ODBC de Visual FoxPro.

Controlador

Secuencia de ordenación   La secuencia en la que se ordenan los campos. La secuencia predeterminada refleja las secuencias compatibles con el idioma de su sistema operativo. Para ver una lista de secuencias de ordenación compatibles, vea SET COLLATE.

Exclusivo   Si esta casilla de verificación está activada, el controlador abre la base de datos de Visual FoxPro en modo exclusivo cuando tiene acceso a los datos utilizando el origen de datos. Los otros usuarios no pueden tener acceso a la base de datos o a las tablas de la base de datos mientras la base de datos está abierta en modo exclusivo. Las tablas de una base de datos abierta en modo exclusivo se abren como SHARED (COMPARTIDAS). Para abrir una tabla en modo exclusivo, utilice el comando SET EXCLUSIVE. Esta casilla de verificación está desactivada cuando el tipo de base de datos está definido como Directorio de tablas libres.

Buscar datos en segundo plano   Determina si los registros se buscarán en segundo plano (búsqueda progresiva) o si su aplicación esperará hasta que todos se busquen los registros del conjunto de resultados.


Gramática compatible SQL de ODBC

El controlador ODBC de Microsoft Visual FoxPro es compatible con:

•	Todas las intrucciones y claúsulas SQL de la gramática de SQL mínima de ODBC

•	Una instrucción SQL adicional de la gramática de SQL central de ODBC.

La tabla siguiente muestra los elementos compatibles con el controlador al nivel de gramática SQL de ODBC.

Nivel	Elementos	Componente
Mínimo	Lenguaje de definición de datos (DDL)	CREATE TABLE y DROP TABLE
	Lenguaje de manipulación de datos (DML)	SELECT, INSERT, UPDATE y DELETE
	Expresiones	Simple (como A>B+C)
	Tipos de datos	CHAR, VARCHAR o LONG VARCHAR
Además de la gramática de SQL de ODBC compatible, el controlador ODBC de Visual FoxPro es compatible con la sintaxis del lenguaje Visual FoxPro nativo para estos comandos de Visual FoxPro:

ALTER TABLE

CREATE TABLE

DELETE

DELETE TAG

DROP TABLE

INDEX

INSERT

SELECT

UPDATE


Entradas del Registro

Cuando instala el controlador ODBC de Visual FoxPro, el programa de instalación actualiza el registro del sistema, HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI, para agregar una nueva clave llamada Microsoft Visual FoxPro Driver. Bajo esta clave se agregan los valores siguientes:

Nombre del valor	Tipo de valor	value
APILevel	REG_SZ	“1”
ConnectFunctions	REG_SZ	“YYN”
Driver	REG_SZ	Ruta del sistema para el archivo VFPODBC.DLL
DriverODBCVer	REG_SZ	“02.50”
FileExtns	REG_SZ	“*.dbf,*.cdx,*.fpt”
FileUsage	REG_SZ	“1”
Setup	REG_SZ	Ruta del sistema para el archivo VFPODBC.DLL
SQLLevel	REG_SZ	“0”
El programa de instalación también agrega la clave “Visual FoxPro Files”, que representa el controlador Visual FoxPro predeterminado, a la clave HKEY_CURRENT_USER\SOFTWARE\ODBC\ODBC.INI del sistema. Bajo esta clave, el programa de instalación agrega los siguientes valores:

Nombre del valor	Tipo de valor	Valor
Driver	REG_SZ	Ruta del sistema para el archivo VFPODBC.DLL
Cada vez que agregue un origen de datos ODBC de Visual FoxPro a su configuración ODBC se agrega, una clave nueva para el nombre de ese origen de datos. Los valores para el origen de datos corresponden a valores establecidos en el cuadro de diálogo Configuración de ODBC de Visual FoxPro, como se muestra en la siguiente tabla:

Nombre del valor	Tipo de valor	Valor
Collate	REG_SQ	Cualquier secuencia de ordenación compatible
Description	REG_SZ	Descripción del usuario del origen de datos
Driver		Ruta del sistema para el archivo VFPODBC.DLL
Exclusive		Yes o No
BackgroundFetch		Yes o No
SourceDB	REG_SZ	Ruta para el archivo.DBC
SourceType	REG_SZ	“DBC” o “DBF”
No debe tener acceso a esta información directamente; cualquier manipulación del registro la realiza el administrador de ODBC cuando agrega, modifica o elimina un origen de datos.

Puede utilizar alguna de estas palabras clave y valores introducidos cuando utilice la función SQLDriverConnect de la API de ODBC.


Funciones escalares compatibles

El controlador ODBC de Visual FoxPro es compatible con tres tipos de funciones escalares como se define en la gramática de SQL de ODBC:

•	Funciones de cadena

•	Funciones numéricas

•	Funciones de fecha y hora


Funciones de cadena

La tabla siguiente enumera las funciones de manipulación de cadenas de  ODBC compatibles con el controlador ODBC de Visual FoxPro; cuando la gramática de Visual FoxPro para la misma función es diferente de la sintaxis ODBC, se muestra el equivalente de Visual FoxPro.

Gramática de ODBC	Gramática de Visual FoxPro
ASCII (exp_cadena)	ASC (exp_cadena)
CHAR (código)	CHR (exp_cadena)
CONCAT (exp_cadena1, exp_cadena2)	exp_cadena1 + exp_cadena2
DIFFERENCE (exp_cadena1, exp_cadena2)
INSERT (exp_cadena1, inicio, longitud, exp_cadena2)	STUFF (exp_cadena1, inicio, longitud, exp_cadena2)
LCASE (exp_cadena)	LOWER (exp_cadena)
LEFT (exp_cadena, contador)
LENGTH (exp_cadena)	LEN (exp_cadena)
LTRIM (exp_cadena)
REPEAT (exp_cadena, contador)	REPLICATE (exp_cadena, contador)
REPLACE (exp_cadena1, exp_cadena2, exp_cadena3)	STRTRAN (exp_cadena1, exp_cadena2, exp_cadena3)
RIGHT (exp_cadena, contador)
RTRIM (exp_cadena)
SOUNDEX (exp_cadena)
SPACE (contador)
SUBSTRING (exp_cadena, inicio, longitud)	SUBSTR (exp_cadena, inicio, longitud)
UCASE (exp_cadena)	UPPER (exp_cadena)


Funciones numéricas

La siguiente tabla describe las funciones numéricas ODBC compatibles con el controlador ODBC de Visual FoxPro; cuando la gramática de Visual FoxPro para la misma función es diferente de la sintaxis ODBC, se muestra el equivalente de Visual FoxPro.

Gramática de ODBC	Gramática de Visual FoxPro
ABS (exp_numérica)
ACOS (exp_flotante)
ASIN (exp_flotante)
ATAN (exp_flotante)
ATAN2 (exp_flotante1, exp_foflotante2)	ATN2(exp_flotante1, exp_flotante2)
CEILING (exp_numérica)
COS (exp_flotante)
COT (exp_flotante)
DEGREES (exp_numérica)	RTOD (exp_numérica)
EXP (exp_flotante)
FLOOR (exp_numérica)
LOG (exp_flotante)
LOG10 (exp_flotante)
MOD (exp_entera1, exp_entera2)
PI ( )
RADIANS (exp_numérica)	DTOR (exp_numérica)
RAND ([exp_entera])
ROUND (exp_numérica, exp_entera)
SIGN (exp_numérica)
SIN (exp_flotante)
SQRT (exp_flotante)
TAN (exp_flotante)
Las funciones numéricas siguientes no son compatibles:

POWER (exp_numérica, exp_entera)

TRUNCATE (exp_numérica, exp_entera)


Funciones de fecha y hora

La siguiente tabla describe las funciones de fecha y hora ODBC compatibles con el controlador ODBC de Visual FoxPro; cuando la gramática de Visual FoxPro para la misma función es diferente de la sintaxis ODBC, se muestra el equivalente de Visual FoxPro.

Gramática de ODBC	Gramática de Visual FoxPro
CURDATE( )	DATE( )
CURTIME( )	TIME( )
DAYNAME(exp_fecha)	CDOW(exp_fecha)
DAYOFMONTH(exp_fecha)	DAY( )
HOUR(exp_hora)
MINUTE(exp_hora)
MONTH(exp_hora)
MONTHNAME(exp_fecha)	CMONTH(exp_fecha)
NOW( )	DATETIME( )
SECOND(exp_hora)	SEC(exp_hora)
WEEK(exp_fecha)
YEAR(exp_fecha)
Las funciones de fecha y hora siguientes no son compatibles:

DAYOFYEAR (exp_fecha)

QUARTER (exp_fecha)

TIMESTAMPADD (intervalo, exp_entera, exp_marca hora)

TIMESTAMPDIFF (intervalo, exp_marca hora1, exp_marca hora2)

Secuencias de escape de ODBC

El controlador también es compatible con la secuencia de escape de ODBC para datos de fecha y marca de hora. La sintaxis de la claúsula de escape es:

--(*vendor(Microsoft),product(ODBC) d ‘valor’ *)—

--(*vendor(Microsoft),product(ODBC) ts ‘‘valor’ *)—

En esta sintaxis, d indica que valor  es una fecha en formato “aaaa-mm-dd” y ts indica que valor es una marca de hora en formato “aaaa-mm-dd hh:mm:ss[.f…]”. La sintaxis abreviada para datos de fecha y marca de hora es:

{d ‘valor’}

{ts ‘valor’}

Por ejemplo, cada una de las siguientes instrucciones actualizan la tabla ALLTYPES utilizando la sintaxis abreviada de fecha y marca de hora en un comando compatible SQL UPDATE:

UPDATE alltypes

SET DAT_COL={d’1968-04-28’}

WHERE KEY=111

UPDATE alltypes

SET DTI_COL={ts’1968-04-28 12:00:00’}

WHERE KEY=111

Para obtener más información sobre las secuencias de escape, vea Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


Comandos SET compatibles

Su aplicación puede enviar los siguientes comandos SET de Visual FoxPro al origen de datos:

SET ANSI

SET BLOCKSIZE

SET COLLATE

SET DELETED

SET EXACT

SET EXCLUSIVE

SET NULL

SET PATH

SET REPROCESS

SET UNIQUE


Soporte de threads

El controlador ODBC de Visual FoxPro está protegido frente a threads. El acceso a los controladores de entorno (henv), controladores de conexión (hdbc) y controladores de instrucciones (hstmt) está ajustado a semáforos apropiados para impedir el acceso y posible modificación por parte de otros procesos a las estructuras de datos internas del controlador.

En una aplicación de múltiples threads, puede cancelar una función que está ejecutándose de forma síncrona en un hstmt llamando a SQLCancel en un thread separado.

El controlador utiliza un thread separado para buscar datos cuando utiliza una búsqueda progresiva. Para emplear la búsqueda progresiva en un origen de datos, active la casilla de verificación “Buscar datos en segundo plano” en el cuadro de diálogo Configuración de ODBC Visual FoxPro, o utilice la palabra clave de atributo BackgroundFetch en su cadena de conexión. Para obtener información sobre palabras claves de atributos en cadenas de conexión, vea Utilizar cadenas de conexión.

Para obtener más información sobre threads y SQLCancel, vea Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.


Solución de problemas

En las siguientes secciones se trata cómo mejorar el rendimiento y solucionar problemas que podría encontrarse cuando utiliza el controlador ODBC de Visual FoxPro.

Acceso a vistas parametrizadas

No puede tener acceso a vistas parametrizadas en una base de datos de Visual FoxPro utilizando el controlador. Una vista parametrizada crea una claúsula WHERE en la instrucción SQL SELECT de la vista que limita los registros transferidos a sólo aquellos registros que cumplan las condiciones de la claúsula WHERE construida utilizando el valor proporcionado para el parámetro. Puesto que el controlador no admite el paso de parámetros a la vista, fallarán los intentos de tener acceso a la vista parametrizada.

El valor del parámetro se puede:

•	Proporcionar en tiempo de ejecución.

•	Pasar mediante programa a la vista.

Acceso a vistas remotas

No puede tener acceso a vistas remotas en una base de datos de Visual FoxPro utilizando el controlador. Las vistas remotas son vistas a las que se puede tener acceso con datos que no sean de FoxPro o una combinación de datos FoxPro y no FoxPro. Para tener acceso a vistas remotas, utilice Visual FoxPro 3.0.

Eliminación de registros

Puede marcar registros para eliminar utilizando el controlador, pero no puede eliminar permanentemente registros de la base de datos. Para eliminar permanentemente registros de una tabla, utilice Visual FoxPro.

Incremento del rendimiento utilizando la búsqueda en segundo plano

Puede mejorar el rendimiento de grandes búsquedas utilizando la característica de búsqueda en segundo plano del controlador. La búsqueda en segundo plano utiliza un thread separado para buscar datos solicitados de un origen de datos específico.

Hay dos formas de utilizar la búsqueda en segundo plano de un origen de datos:

•	Activar la casilla de verificación “Búsqueda en segundo plano” en el cuadro de diálogo Configuración de ODBC Visual FoxPro.

•	Utilizar la palabra clave de atributo BackgroundFetch en su cadena de conexión.

Para obtener información sobre palabras clave de atributo de cadena de conexión, vea Utilizar cadenas de conexión.

Actualización de vistas multicapa

Una vista multicapa es una vista basada en una o más vistas en vez de en una tabla base. Cuando actualiza datos en una vista multicapa, la actualización baja sólo un nivel, hasta la vista en la que está basada la vista de mayor nivel; las tablas base no se actualizan.

Uso del lenguaje de definición de datos (DDL) en procedimientos almacenados

No puede utilizar DDL, como CREATE TABLE, o ALTER TABLE en procedimientos almacenados de Visual FoxPro.

Para obtener información sobre el lenguaje que puede utilizar en procedimientos almacenados, vea Soporte de lenguaje Visual FoxPro en reglas, desencadenantes, valores predeterminados y procedimientos almacenados.

Uso de actualizaciones posicionadas

El controlador no admite actualizaciones posicionadas. Utilice la claúsula SQL WHERE para identificar las filas que quiere actualizar.

Uso del comando SET ANSI

Si es un programador de Visual FoxPro, debe saber que el valor predeterminado para SET ANSI en el controlador es ON, mientras que el valor predeterminado es OFF en Visual FoxPro. El valor predeterminado ON para SET ANSI permite a los orígenes de datos de Visual FoxPro comportarse de forma coherente con otros orígenes de datos ODBC que normalmente realizan comparaciones exactas. Puede cambiar el valor predeterminado. Para obtener más información, vea SET ANSI.


Introducción a los mensajes de error

Cuando ocurre un error, el controlador de Visual FoxPro devuelve la siguiente información:

•	El número de error nativo y el texto del mensaje de error.

•	El SQLSTATE (un código de error ODBC) y el texto del mensaje de error.

Puede tener acceso a esta información de error si llama a SQLError.

Errores nativos

Para los errores que ocurren en el origen de datos, el controlador de Visual FoxPro devuelve un número de error nativo y el texto del mensaje de error. Para obtener una lista de números de error nativos, vea Mensajes de error nativos del controlador ODBC de Visual FoxPro.

SQLSTATE (códigos de error ODBC)

Para los errores que detecta y devuelve el controlador de Visual FoxPro, el controlador asigna el número de error nativo al correspondiente SQLSTATE. Si un número de error nativo no tiene un código de error ODBC al que asignarse, el controlador de Visual FoxPro devuelve SQLSTATE S1000 (Error general).

Para ver una lista de los valores SQLSTATE generados por el controlador ODBC de Visual FoxPro y sus correspondientes errores de Visual FoxPro, vea Códigos de error ODBC.

Sintaxis

Los mensajes de error tiene el siguiente formato:

[fabricante][componente_ODBC]mensaje_error

Los prefijos entre corchetes ([ ]) identifican el origen del error como se define en la siguiente tabla.

Origen de datos	Prefijo	Valor
Administrador de controlador	[fabricante] [componente_ODBC] [origen_datos]	[Microsoft] [Adminstrador de controlador es ODBC] N/D
Controlador de Visual FoxPro	[fabricante] [componente_ODBC] [origen_datos]	[Microsoft] [Controlador ODBC de Visual FoxPro] N/D
Por ejemplo, si el controlador ODBC de Visual FoxPro no puede encontrar el archivo EMPLEADO.DBF, devolverá el siguiente mensaje de error:

“[Microsoft][Controlador ODBC Visual FoxPro] El archivo ‘empleado.dbf’ no existe”


Mensajes de error nativos del controlador ODBC de Visual FoxPro

La tabla siguiente enumera los mensajes de error nativos del controlador ODBC de Visual FoxPro.

001

1	Esta característica no está disponible.
2	Fallo en la operación de entrada/salida.
3	No hay controladores libres.
5	Use of unallocated handle.
14	???????
97	???????
99	Procedimiento cancelado.
100

100	Demasiados archivos abiertos.
101	No se puede abrir el archivo.
102	No se puede crear el archivo.
105	No se puede escribir en el archivo.
107	La longitud de la clave no es válida.
109	El registro está fuera de límite.
110	El registro no está en el índice.
111	El descriptor de archivo no es válido.
113	El archivo no está abierto.
114	Espacio en disco insuficiente para valor.
115	La operación para el cursor no es válida.
118	El archivo de índice no coincide con la tabla.
119	La tabla no está abierta.
120	El archivo no existe.
121	El archivo ya existe.
122	La tabla no tiene el índice ordenado.
123	No es una tabla.
125	La expresión de índice excede la longitud máxima.
127	Debe utilizar una expresión lógica con las claúsulas FOR o WHILE.
128	No es una expresión numérica.
129	La variable no se encuentra.
132	El archivo está en uso.
133	El índice no coincide con la tabla. Elimine el archivo de índice y vuelva a crearlo.
135	Se ha encontrando el fin del archivo.
136	Se ha encontrando el comienzo del archivo.
137	El alias no se encuentra.
139	Debe utilizar una expresión lógica con FILTER.
142	Relación cíclica.
143	No se encontraron campos para copiar.
144	El comando LOCATE debe ejecutarse después del comando CONTINUE.
145	El campo clave debe ser numérico o carácter.
146	No se puede escribir en un archivo de sólo-lectura.
147	La tabla de destino ya se usa en una relación.
148	Se ha vuelto a introducir la expresión mientras se ejecutaba el filtro.
149	No hay suficiente memoria para el búfer.
150	No hay suficiente memoria para la asignación de archivos.
155	La llamada BUFFDIRTY no es válida.
156	Hay nombres de campos duplicados.
158	No hay campos para procesar.
159	Desbordamiento numérico. Se han perdido datos.
162	No se encuentra el procedimiento ‘value’.
165	value no tiene relación con el área de trabajo actual..
170	La variable ‘value’ no se encuentra.
171	No se puede abrir el archivo value.
173	El archivo ‘value’ no existe.
174	’value’ no es una variable de memoria.
175	’value’ no es una variable de archivo.
176	’value’ no es una matriz.
177	El alias ‘value’ no se encuentra.
180	No se ha cargado en memoria el archivo mediante el comando LOAD.
182	No hay suficiente memoria para completar esta operación.
200

200	Error de sintaxis.
201	Se han usado demasiados nombres.
202	El programa es demasiado grande.
203	Hay demasiadas variables de memoria.
205	Error de anidamiento.
206	Hay una definición recursiva en la macro.
209	La línea es demasiado grande.
210	Se ha excedido el nivel permitido de anidamiento de DO.
211	Falta una instrucción IF | ELSE | ENDIF.
212	La estructura de anidamiento es demasiado profunda.
213	Falta una palabra clave en la estructura de comandos FOR...ENDFOR o DO CASE...ENDCASE.
219	El comando contiene una frase o palabra clave no reconocida.
221	Se requiere una cláusula no presente en el comando.
222	El verbo de comando no está reconocido.
224	La referencia al subíndice no es válida.
227	Falta alguna expresión.
228	El número de tabla no es válido.
229	Faltan argumentos.
230	Demasiados argumentos.
233	La instrucción no está permitida en modo interactivo.
234	El subíndice está fuera del intervalo definido.
236	Suspenda el programa antes de usar RESUME.
238	No se encuentra la instrucción PARAMETER.
239	Debe especificar parámetros adicionales.
240	No es una expresión de tipo Carácter.
250	Hay demasiados comandos PROCEDURE activados.
252	El código compilado para esta línea es demasiado largo.
257	La cadena de clave es demasiado larga.
291	La expresión usada con ASIN() está fuera del intervalo.
292	No se puede usar 0 o un valor negativo como argumento para LOG10().
293	La expresión usada con ACOS() está fuera del intervalo.
294	El archivo FOXUSER.DBF no es válido.
295	La ruta o el nombre de archivo no es válido.
296	Error al leer el recurso.
297	El comando sólo se permite en modo interactivo.
300

301	Incompatibilidad en el tipo de operador u operando.
302	Incompatibilidad en el tipo de datos.
305	La expresión se ha evaluado como un valor no válido.
307	No se puede dividir por 0.
308	No hay suficiente espacio de pila.
337	No se puede anidar el comando PRINTJOB.
400

406	La impresora no está preparada.
407	Se ha usado un argumento no válido con la función SET.
410	Imposible crear archivos de trabajo temporales.
423	Error al crear el objeto OLE.
424	Error al copiar el objeto OLE al Portapapeles.
462	Error interno de coherencia value.
465	Error interno de coherencia de traspaso a SQL.
466	El controlador de conexión no es válido.
467	La propiedad no es válida para cursores locales.
468	La propiedad no es válida para cursores de tablas.
469	El valor de la propiedad está fuera de límites.
470	Nombre incorrecto de propiedad.
471	El formato de columna es incorrecto.
473	La propiedad a nivel de entorno no es válida.
474	Se ha emitido una llamada no válida mientras se ejecutaba una secuencia SQLEXEC().
479	Nombre de columna de actualización no válido \value\.
489	Los campos generales no pueden utilizarse en la condición WHERE de la instrucción de actualización. Modifique la propiedad WhereType de la vista.
491	No están especificadas tablas de actualización. Utilice la propiedad Tablas del cursor.
492	No están especificadas tablas de actualización \value\. Utilice la propiedad KeyFieldList del cursor.
493	Falta parámetro SQL.
494	La definición de la vista ha cambiado.
495	Advertencia: La clave definida en la propiedad KeyField de la tabla value no es única
498	La instrucción SQL SELECT no es válida.
499	El parámetro value de SQL no es válido.
500

502	No se puede escribir en el registro porque está en uso.
503	No se puede bloquear el archivo.
508	Error al inicializar OLE.
520	No hay ninguna base de datos abierta o establecida como activa.
522	Error interno de coherencia de conectividad.
523	La ejecución fue cancelada por el usuario.
525	Esta función no está permitida en las tablas remotas.
526	Error de conectividad: value
527	No se puede cargar la biblioteca ODBC, ODBC32.DLL.
528	Falta el punto de entrada a ODBC, value.
530	Búsqueda cancelada; la tabla remota está cerrada.
532	La conversión de tipo no es compatible.
533	Esta propiedad es de sólo lectura.
536	Esta función no es compatible en las tablas nativas
538	Se está ejecutando un procedimiento almacenado.
540	El número de sesión no es válido.
541	La conexión value está ocupada.
542	Los campos de la tabla base han cambiado y ya no coinciden con campos de la vista. No se pueden establecer las propiedades de los campos de la vista.
543	La conversión de tipo que requiere la propiedad DataType para el campo ‘value’ no es válida.
544	La propiedad DataType para el campo ‘value’ no es válida.
545	El búfer de la tabladel alias \value\ contiene modificaciones no comprometidas.
546	No se puede cerrar la tabla durante la ejecución de una expresión vinculada a la tabla.
547	No se puede insertar una fila vacía desde una vista en su tabla o tablas base.
548	La tabla value tiene uno o más índices no-estructurales abiertos.  Ciérrelos e intente Begin Transaction
549	La sesión de datos #value no se puede liberar si hay transacciones abiertas.
550	Error interno de coherencia DBC.
557	La base de datos debe abrirse en modo exclusivo.
559	No se encuentra la propiedad.
560	El valor de la propiedad no es válido.
561	La base de datos no es válida. Por favor, valídela.
562	No se puede encontrar el objeto value en la base de datos.
563	No se puede encontrar la vista value en la base de datos.
566	No se puede emitir el comando PACK en una base de datos mientras sus tablas están abiertas.
567	La propiedad de la clave principal no es válida; por favor, valide la base de datos.
570	La base de datos es de sólo lectura.
571	El nombre value ya se usa para otro objeto.
575	El nombre del objeto no es válido.
577	La tabla value está referenciada en una relación.
578	El nombre de tabla de la base de datos no es válido.
579	No se puede emitir este comando en una tabla cuyos objetos Cursor estén en modo de almacenamiento de tablas en búfer.
580	Función no permitida para tablas que no son .DBC.
581	El campo value no acepta value nulo.
583	Se ha violado la regla de validación del registro.
585	Conflicto de actualización. Use TABLEUPDATE() con el parámetro lForce para confirmar la actualización o TABLEREVERT() para deshacerla.
586	La función requiere el modo de almacenamiento en búfer de filas o tablas.
587	Anidamiento no válido de OLDVAL() o CURVAL().
589	El almacenamiento en búfer de tablas o de filas requiere que SET MULTILOCKS tenga el valor ON.
590	Ha fallado el comando BEGIN TRANSACTION. Nivel de anidamiento demasiado profundo.
591	No se puede emitir un comando END TRANSACTION sin el correspondiente comando BEGIN TRANSACTION.
592	No se puede emitir el comando ROLLBACK sin el correspondiente comando BEGIN TRANSACTION.
593	El comando no se puede ejecutar dentro de una transacción.
594	No es posible un bloqueo de archivo en una transacción después de bloquear los registros primarios.
596	No está activado el almacenamiento de tablas en búfer.
597	Las vistas requieren DB_BUFOPTROW o DB_BUFOPTTABLE.
598	El código de regla y de desencadenante debe equilibrar el uso de la transacción.
599	La sesión de datos #value se vió forzada a deshacer (ROLLBACK) todas las transacciones para evitar el bloqueo.
600

601	El nombre de alias ya está en uso.
602	La operación no es válida para campos de tipo Memo, General o Imagen.
612	No se ha definido dicho menú o elemento de menú.
618	El menú no se ha definido mediante DEFINE MENU.
624	El título del menú no se ha definido mediante DEFINE PAD.
625	El menú no se ha definido mediante DEFINE POPUP.
631	Las dimensiones de la matriz no son válidas.
637	Para convertir un archivo memo debe abrirlo en modo exclusivo.
638	El campo debe ser tipo Memo.
649	No hay ningún comando PRINTJOB previo asociado a este comando.
651	No se permite CANCEL o SUSPEND.
659	La tabla tiene campos memo que no se pueden convertir mientras esté abierta para sólo lectura.
683	No se encuentra la etiqueta de índice.
700

700	El registro está en uso por otra persona.
701	El archivo debe abrirse en modo exclusivo.
702	El archivo está en uso por otra persona.
703	El registro no está bloqueado.
705	Se ha denegado el acceso al archivo.
706	Los archivos .IDX no se pueden ordenar en sentido descendente.
707	No se encuentra el archivo .CDX estructural.
708	El archivo ya está abierto en otra área de trabajo.
712	El nombre de campo está duplicado o no es válido.
714	La ventana ‘value’ no ha sido definida.
718	El archivo es de sólo lectura.
722	La expresión de preprocesador no es válida.
734	La propiedad value no se encuentra.
737	value es un método, evento u objeto..
738	La propiedad value no es un método o evento.
740	value es una propiedad de sólo lectura.
748	Este archivo es incompatible con la versión actual de Visual FoxPro. Ejecute 30UPDATE.PRG para actualizar el archivo a la versión actual.
750	El archivo se creó en una versión de Visual FoxPro posterior a la actual.
763	La propiedad value ya existe.
773	El tipo de objeto de base de datos no es válido.
784	El objeto proviene de una clase base y no tiene clase primaria.
800

802	SQL: no se puede encontrar la tabla..
872	Hay demasiadas columnas.
879	No hay ninguna clave principal.
884	Se ha violado la unicidad del índice value.
885	Sólo las etiquetas estructurales pueden definirse como candidatas.
886	El índice no acepta NULL.
887	Hay una recursión no válida en la evaluación de la regla.
888	El nombre de etiqueta es demasiado largo.
900

901	El valor, tipo o número de argumentos no es válido para la función.
902	Fallo en el evaluador de expresiones.
903	La cadena es demasiado larga y no cabe.
904	Error en el dominio de ** o ^.
905	LOG(): se ha usado cero o negativo como argumento.
906	El argumento de SQRT() no puede ser negativo.
912	La operación no es válida para un campo de tipo General.
914	El número de la tabla de códigos no es válido.
915	No se encuentra la secuencia de ordenación ‘value’.
918	El nombre del archivo es demasiado largo.
922	No existe el volumen.
923	El objeto value no se encuentra.
924	value no es un objeto.
925	value es un miembro desconocido..
928	La instrucción sólo es válida en una definición de clase.
929	value sólo puede usarse dentro de un método.
930	No se puede redefinir value.
931	La instrucción no está en un procedimiento.
934	La instrucción sólo es válida dentro de un método.
935	El objeto actual no hereda de la clase value.
937	El archivo de procedimiento ‘value’ no se encuentra.
938	El objeto no está contenido en un value.
939	Incoherencia en WITH/ENDWITH.
940	La expresión no es válida fuera de WITH/ENDWITH.
941	El código de error no es válido.
942	Los objetos no pueden asignarse a matrices.
943	El miembro value no se evalúa como un objeto.
945	El objeto actual se ha liberado.
947	La expresión es demasiado compleja.
951	No se puede borrar el objeto que está en uso.
955	El archivo WIN.INI o el Registro está dañado.
957	Error al acceder a la cola de impresión.
959	Coordenadas no válidas.
960	Redefinición no válida de la variable value.
971	No se puede compilar hasta que se haya completado el comando COMPILE actual.
972	La matriz value está en uso.
974	Las matrices no se pueden asignar a elementos de matriz.
976	No es posible resolver el vínculo primario.
988	El valor de moneda está fuera del intervalo.
990	Cancelar.
999	Esta función no está implementada.


Códigos de error ODBC

La siguiente tabla enumera los códigos de error de Visual FoxPro asigandos a valores SQLSTATE de códigos de error ODBC. Los valores asignados de SQLSTATE vienen de SQLExecDirect y SQLPrepare. No se asigna ningún otro valor SQLSTATE a API de otro ODBC ya que SQLExecDirect y SQLPrepare son sólo funciones que tienen acceso al motor de Visual FoxPro.

Para obtener más información sobre los códigos de error ODBC, vea Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide.

SQLSTATE	Código de error de Visual FoxPro
S1001	149 150 182 202 308
1004	159
37000	132 200 219 221 222 227 229 230 498 499 713 901
22005	301 302
22012	307
23000	581 583 884 886 988
S0001	121 571
S0002	173 120 123 295 562 563 802
S0012	683
S0021	156 712
S0022	158 806
S1000	100 101 102 105 107 109 110 111 113 114 115 118 119 125 133 135 136 137 145 146 171 173 177 201 205 239 240 252 257 296 305 407 410 462 502 503 520 538 550 561 567 570 575 578 580 585 602 702 705 707 708 718 750 872 879 887 888 912 914 915 918 922 923 947 976 999


Soporte de lenguaje Visual FoxPro en reglas, desencadenantes, valores predenterminados y procedimientos almacenados
Soporte de lenguaje Visual FoxPro en reglas, desencadenantes, valores predeterminados y procedimientos almacenados

No puede crear reglas, desencadenantes, valores predeterminados o procedimientos almacenados de VisualFoxPro utilizando el controlador ODBC de Visual FoxPro. Sin embargo, su aplicación podría interactuar con reglas, desencadenantes, valores predeterminados o procedimientos almacenados exitentes a medida que inserta, actualiza o elimina datos de Visual FoxPro almacenados en una base de datos.

La siguiente tabla enumera los comandos y funciones de Visual FoxPro compatibles con el controlador ODBC de Visual FoxPro cuando los comandos o funciones existen en reglas, desencadenantes, valores predeterminados o procedimientos almacenados.

Si su aplicación interactúa con datos cuyas reglas, desencadenantes, valores predeterminados o procedimientos almacenados ejecutan cualquier otro comando o función de Visual FoxPro, el controlador genera un error. Vea Comandos y funciones de Visual FoxPro no compatibles para obtener una lista de comandos y funciones no compatibles con el controlador.

Sugerencia   Si quiere insertar código condicional en sus reglas, desencadenantes o procedimientos almacenados que determinen los comandos que se ejecutan cuando el controlador los llame, puede utilizar la función VERSION( ). La función VERSION( ) devuelve “Controlador ODBC de Visual FoxPro <versión>” cuando el controlador la llama.

Comandos y funciones de Visual FoxPro compatibles en reglas, desencadenantes, valores predeterminados y procedimientos almacenados

$ operador	% operador	& comando
&& comando	* comando	= comando
A

ABS( ), función	ACOPY( ), función	ACOS( ), función
ADATABASES( ), función	ADBOBJECTS( ), función	ADD TABLE, comando
ADEL( ), función	AELEMENT( ), función	AERROR( ), función
AFIELDS( ),	función AINS( ), función	ALEN( ), función
ALIAS( ), función	ALLTRIM( ), función	ALTER TABLE, comando
AND, operador	ANSITOOEM( ), función	APPEND, comando
APPEND FROM ARRAY, comando	APPEND FROM, comando	APPEND GENERAL, comando
APPEND MEMO, comando	APPEND PROCEDURES, comando	ASC( ), función
ASCAN( ), función	ASIN( ), función	ASORT( ), función
ASUBSCRIPT( ), función	AT( ), función	AT_C( ), función
ATAN( ), función	ATC( ), función	ATCC( ), función
ATCLINE( ), función	ATLINE( ), función	ATN2( ), función
AUSED( ), función	AVERAGE, comando
B

BEGIN TRANSACTION, comando	BETWEEN( ), función	BITAND( ), función
BITCLEAR( ), función	BITLSHIFT( ), función	BITNOT( ), función
BITOR( ), función	BITRSHIFT( ), función	BITSET( ), función
BITTEST( ), función	BITXOR( ), función	BLANK, comando
BOF( ), función
C

CALCULATE, comando	CANDIDATE( ), función	CD, comando
CDOW( ), función	CDX( ), función	CEILING( ), función
CHDIR, comando	CHR( ), función	CHRTRAN( ), función
CHRTRANC( ), función	CLOSE, comandos	CMONTH( ), función
CONTINUE, comando	COPY INDEXES, comando	COPY MEMO, comando
COPY PROCEDURES, comando	COPY STRUCTURE, comando	COPY STRUCTURE EXTENDED, comando
COPY TAG, comando	COPY TO, comando	COPY TO ARRAY, comando
COS( ), función	COUNT, comando	CPCONVERT( ), función
CPCURRENT( ), función	CPDBF( ), función	CTOD( ), función
CTOT( ), función	CURDIR( ), función	CURSORGETPROP( ), función
CURSORSETPROP( ), función	CURVAL( ), función
D

DATE( ), función	DATETIME( ), función	DAY( ), función
DBC( ), función	DBF( ), función	DBGETPROP( ), función
DBUSED( ), función	DECLARE, comando	DELETE - SQL, comando
DELETE, comando	DELETE FILE, comando	DELETE TAG, comando
DELETED( ), función	DESCENDING( ), función	DIFFERENCE( ), función
DIMENSION, comando	DISKSPACE( ), función	DMY( ), función
DO CASE ... ENDCASE, comando	DO, comando	DO WHILE ... ENDDO, comando
DOW( ), función	DTOC( ), función	DTOR( ), función
DTOS( ), función	DTOT( ), función
E

EMPTY( ), función	END TRANSACTION, comando	EOF( ), función
ERASE, comando	ERROR, comando	ERROR( ), función
EVALUATE( ), función	EXIT, comando	EXP( ), función
F

FCHSIZE( ), función	FCLOSE( ), función	FCOUNT( ), función
FCREATE( ), función	FDATE( ), función	FEOF( ), función
FERROR( ), función	FFLUSH( ), función	FGETS( ), función
FIELD( ), función	FILE( ), función	FILTER( ), función
FLDLIST( ), función	FLOCK( ), función	FLOOR( ), función
FLUSH, comando	FOPEN( ), función	FOR ... ENDFOR, comando
FOR( ), función	FOUND( ), función	FPUTS( ), función
FREAD( ), función	FREE TABLE, comando	FSEEK( ), función
FSIZE( ), función	FTIME( ), función	FULLPATH( ), función
FUNCTION, comando	FV( ), función	FWRITE( ), función
G

GATHER, comando	GETCP( ), función	GETENV( ), función
GETEXPR, comando	GETFLDSTATE( ), función	GETNEXTMODIFIED( ), función
GO/GOTO, comando	GOMONTH( ), función
H

HEADER( ), función	HOME( ), función	HOUR( ), función
I

IDXCOLLATE( ), función	IF ... ENDIF, comando	IIF( ), función
INDBC( ), función	INDEX, comando	INLIST( ), función
INSERT-SQL, comando	INT( ), función	ISALPHA( ), función
ISBLANK( ), función	ISDIGIT( ), función	ISEXCLUSIVE( ), función
ISLEADBYTE( ), función	ISLOWER( ), función	ISNULL( ), función
ISREADONLY( ), función	ISUPPER( ), función
J

K

KEY( ), función	KEYMATCH( ), función
L

LEFT( ), función	LEFTC( ), función	LEN( ), función
LENC( ), functión	LIKE( ), función	LIKEC( ), función
LINENO( ), función	LOCAL, comando	LOCATE, comando
LOCK( ), función	LOG( ), función	LOG10( ), función
LOOKUP( ), función	LOWER( ), función	LPARAMETERS, comando
LTRIM( ), función	LUPDATE( ), función
M

_MLINE, variable de memoria del sistema	MAX( ), función	MD, comando
MINUTE( ), función	MLINE( ), función	MLINE, variable de memoria del sistema
MDX( ), función	MDY( ), función	MEMLINES( ), función
MESSAGE( ), función	MIN( ), función	MINUTE( ), función
MKDIR, comando	MLINE( ), función	MOD( ), función
MONTH( ), función	MTON( ), función
N

NDX( ), función	NORMALIZE( ), función	NOT, operador
NOTE, comando	NTOM( ), función	NVL( ), función
O

OCCURS( ), función	OEMTOANSI( ), función	OLDVAL( ), función
ON ERROR, comando	ON KEY, comando	ON( ), función
OPEN DATABASE, comando	OR operador	ORDER( ), función
OS( ), función
P

PACK, comando	PAD( ), función	PADL( ) | PADR( ) | PADC( ), funciones
PARAMETERS, comando	PARAMETERS( ), función	PAYMENT( ), función
PI( ), función	PRIMARY( ), función	PRIVATE, comando
PROCEDURE, comando	PROGRAM( ), función	PROPER( ), función
PUBLIC, comando	PV( ), función
Q

R

RAND( ), función	RAT( ), función	RATC( ), función
RATLINE( ), función	RD, comando	RECALL, comando
RECCOUNT( ), función	RECNO( ), función	RECSIZE( ), función
REGIONAL, comando	RELATION( ), función	REMOVE TABLE, comando
REPLACE, comando	REPLACE FROM ARRAY, comando	REPLICATE( ), función
RETRY, comando	RETURN, comando	RIGHT( ), función
RIGHTC( ), función	RLOCK( ), función	RMDIR, comando
ROLLBACK,	comando ROUND( ), función	RTOD( ), función
RTRIM( ), función
S

SCAN ... ENDSCAN, comando	SCATTER, comando	SEC( ), función
SECONDS( ), función	SEEK, comando	SEEK( ), función
SELECT, comando	SELECT( ), función comando	SELECT-SQL, comando
SET BLOCKSIZE, comando	SET CARRY, comando	SET CENTURY, comando
SET COLLATE, comando	SET DATABASE, comando	SET DATE, comando
SET DEFAULT, comando	SET DELETED, comando	SET EXACT, comando
SET EXCLUSIVE, comando	SET FDOW, comando	SET FIELDS, comando
SET FILTER, comando	SET FIXED, comando	SET FULLPATH, comando
SET FWEEK, comando	SET HOURS, comando	SET INDEX, comando
SET LOCK, comando	SET MULTILOCKS, comando	SET NEAR, comando
SET NOCPTRANS, comando	SET NOTIFY, comando	SET NULL, comando
SET OPTIMIZE, comando	SET ORDER, comando	SET PATH, comando
SET PROCEDURE, comando	SET RELATION, comando	SET RELATION OFF, comando
SET REPROCESS, comando	SET SKIP, comando	SET UDFPARMS, comando
SET UNIQUE, comando	SET VOLUME, comando	SET( ), función
SETFLDSTATE( ), función	SIGN ( ), función	SIN( ), función
SKIP, comando	SORT, comando	SPACE( ), función
SQRT( ), función	STORE, comando	STR( ), función
STRCONV( ), función	STRTRAN( ), función	STUFF( ), función SUBSTR( ), función
STUFFC( ), función	SUBSTR( ), función	SUBSTRC( ), función
SUM, comando	SYS(2011), función
T

TABLEREVERT( ), función	TABLEUPDATE( ), función	TAG( ), función
TAGCOUNT( ), función	TAGNO( ), función	_TALLY, variable de memoria del sistema
TAN( ), función	TARGET( ), función	TIME( ), función
TOTAL, comando	_TRIGGERLEVEL, variable de memoria del sistema	TRIM( ), función
TTOC( ), función	TTOD( ), función	TXNLEVEL( ), función
TYPE( ), función
U

UNIQUE( ), función	UNLOCK, comando	UPDATE - SQL, comando
UPDATE, comando	UPPER( ), función	USE, comando
USED( ), función
V

VAL( ), función	VERSION( ), función
W

WEEK( ), función	WITH ... ENDWITH, comando
X

Y

YEAR( ), función
Z

ZAP, comando


Comandos y funciones de FoxPro no compatibles

La siguiente tabla enumera los comandos y funciones de FoxPro que no son compatibles con el controlador ODBC de Visual FoxPro, pero sí son compatibles con Microsoft Visual FoxPro 3.0.

Si su aplicación interactúa con datos cuyas reglas, desencadenantes, valores predeterminados o procedimientos almacenados ejecutan estos comandos o funciones de Visual FoxPro, el controlador genera un error.

Comandos y funciones no compatibles con Visual FoxPro

#DEFINE ... #UNDEF	#IF ... #ENDIF, directiva del preprocesador	#IFDEF | #IFNDEF
#INCLUDE, directiva del preprocesador	::, operador de alcance de resolución	!, comando (vea  RUN | !, comando)
? | ??, comando	???, comando	\ | \\, comando
@ ... BOX, comando	@ ... CLASS, comando	@ ... CLEAR, comando
@ ... EDIT - Edit Boxes, comando	@ ... FILL, comando	@ ... GET
@ ... MENU, comando	@ ... PROMPT, comando	@ ... SAY, comando
@ ... SCROLL, comando	@ ... TO, comando
A

ACCEPT, comando	ACLASS( ), función	ACTIVATE MENU, comando
ACTIVATE POPUP, comando	ACTIVATE SCREEN, comando	ACTIVATE WINDOW, comando
ActivateCell, método	ADD CLASS, comando	ADIR( ), función
AFONT( ), función	AINSTANCE( ), función	_ALIGNMENT, variable de memoria del sistema
AMEMBERS( ), función ASELOBJ( ), función	APRINTERS ( ), función	ASELOBJ( ), función
B

BAR( ), función	BARCOUNT( ), función	BARPROMPT( ), función
_BEAUTIFY, variable de memoria del sistema	_BOX, variable de memoria del sistema	BROWSE, comando
_BROWSER, variable de memoria del sistema	BUILD APP, comando	BUILD EXE, comando
BUILD PROJECT, comando	_BUILDER, variable de memoria del sistema
C

_CALCVALUE, variable de memoria del sistema	CALL, comando	CANCEL, comando
CAPSLOCK( ), función	CHANGE, comando	CHRSAW( ), función
_CLIPTEXT, variable de memoria del sistema	CLOSE MEMO, comando	CNTBAR( ), función
CNTPAD( ), función	COL( ), función	COMPILE, comando
COMPILE DATABASE, comando	COMPILE FORM, comando	COMPOBJ( ), función
Container, objeto	Control, objeto	_CONVERTER, variable de memoria del sistema
COPY FILE, comando	CREATE, comando	CREATE CLASS, comando
CREATE CLASSLIB, comando	CREATE CONNECTION, comando	CREATE COLOR SET, comando
CREATE DATABASE, comando	CREATE FORM, comando	CREATE FROM, comando
CREATE LABEL, comando	CREATE MENU, comando	CREATE PROJECT, comando
CREATE QUERY, comando	CREATE REPORT, comando	CREATE SCREEN, comando
CREATE SQL VIEW, comando	CREATE TRIGGER, comando	CREATE VIEW, comando
CREATEOBJECT( ), función	_CUROBJ, variable de memoria del sistema
D

_DBLCLICK, variable de memoria del sistema	DBSETPROP( ), función	DDE, funciones
DEACTIVATE MENU, comando	DEACTIVATE POPUP, comando	DEACTIVATE WINDOW, comando
DECLARE - DLL, comando	DEFINE BAR, comando	DEFINE BOX, comando
DEFINE CLASS, comando	DEFINE MENU, comando	DEFINE PAD, comando
DEFINE POPUP, comando	DEFINE WINDOW, comando	DELETE CONNECTION, comando
DELETE DATABASE, comando	DELETE TRIGGER, comando	DELETE VIEW, comando
_DIARYDATE, variable de memoria del sistema	DIR, comando	DIRECTORY, comando
DISPLAY, comando	DISPLAY CONNECTIONS, comando	DISPLAY DATABASE, comando
DISPLAY DLLS, comando	DISPLAY FILES, comando	DISPLAY MEMORY, comando
DISPLAY OBJECTS, comando	DISPLAY PROCEDURES, comando	DISPLAY STATUS, comando
DISPLAY STRUCTURE, comando	DISPLAY TABLES, comando	DISPLAY VIEWS, comando
DO FORM, comando
E

EDIT, comando	EJECT, comando	EJECT PAGE, comando
EXPORT, comando	EXTERNAL, comando
F

FILER, comando	FIND, comando	FKLABEL( ), función
FKMAX( ), función	FONTMETRIC( ), función	_FOXDOC, variable de memoria del sistema
_FOXGRAPH, variable de memoria del sistema
G

_GENGRAPH, variable de memoria del sistema	_GENMENU, variable de memoria del sistema	_GENPD, variable de memoria del sistema
_GENSCRN, variable de memoria del sistema	_GENXTAB, variable de memoria del sistema	GETBAR( ), función
GETCOLOR( ), función	GETDIR( ), función	GETFILE( ), función
GETFONT( ), función	GETOBJECT( ), función	GETPAD( ), función
GETPICT( ), función	GETPRINTER( ), función
H

HELP, comando	HIDE MENU, comando	HIDE POPUP, comando
HIDE WINDOW, comando
I

IMESTATUS( ), función	IMPORT, comando	_INDENT, variable de memoria del sistema
INDEX ON, comando	INKEY( ), función	INPUT, comando
INSERT, comando	INSMODE( ), función	ISCOLOR( ), función
ISMOUSE( ), función
J

JOIN, comando
K

KEYBOARD, comando
L

LABEL, comando	LASTKEY( ), función	LIST, comandos
LIST CONNECTIONS, comando	_LMARGIN, variable de memoria del sistema	LOAD, comando
LOCFILE( ), función
M

MCOL( ), función	MDOWN( ), función	MEMORY( ), función
MENU, comando	MENU TO, comando	MENU( ), función
MESSAGEBOX( ), función	MODIFY CLASS, comando	MODIFY COMMAND, comando
MODIFY CONNECTION, comando	MODIFY DATABASE, comando	MODIFY FILE, comando
MODIFY FORM, comando	MODIFY GENERAL, comando	MODIFY LABEL, comando
MODIFY MEMO, comando	MODIFY MENU, comando	MODIFY PROCEDURE, comando
MODIFY PROJECT, comando	MODIFY QUERY, comando	MODIFY REPORT, comando
MODIFY SCREEN, comando	MODIFY STRUCTURE, comando	MODIFY VIEW, comando
MODIFY WINDOW, comando	MOUSE, comando	MOVE POPUP, comando
MOVE WINDOW, comando	MRKBAR( ), función	MRKPAD( ), función
MROW( ), función	MWINDOW( ), función
N

NUMLOCK( ), función
O

OBJNUM( ), función	OBJTOCLIENT( ), función	OBJVAR( ), función
ON APLABOUT, comando	ON BAR, comando	ON ESCAPE, comando
ON EXIT BAR, comando	ON EXIT MENU, comando	ON EXIT PAD, comando
ON EXIT POPUP, comando	ON KEY =, comando	ON KEY LABEL, comando
ON MACHELP, comando	ON PAD, comando	ON PAGE, comando
ON READERROR, comando	ON SELECTION BAR, comando	ON SELECTION MENU, comando
ON SELECTION PAD, comando	ON SELECTION POPUP, comando	ON SHUTDOWN, comando
P

PACK DATABASE, comando	_PADVANCE, variable de memoria del sistema	_PAGENO, variable de memoria del sistema
_PBPAGE, variable de memoria del sistema	PCOL( ), función	_PCOLNO, variable de memoria del sistema
_PCOPIES, variable de memoria del sistema	_PDRIVER, variable de memoria del sistema	_PDSETUP, variable de memoria del sistema
_PECODE, variable de memoria del sistema	_PEJECT, variable de memoria del sistema	PEMSTATUS( ), función
_PEPAGE, variable de memoria del sistema	_PLENGTH, variable de memoria del sistema	_PLINENO, variable de memoria del sistema
_PLOFFSET, variable de memoria del sistema	PLAY MACRO, comando	POP KEY, comando
POP MENU, comando	POP POPUP, comando	POPUP( ), función
_PPITCH, variable de memoria del sistema	_PQUALITY, variable de memoria del sistema	_PRETEXT, variable de memoria del sistema
PRINTJOB ... ENDPRINTJOB, comando	PRINTSTATUS( ), función	PRMBAR( ), función
PRMPAD( ), función	PROMPT( ), función	PROW( ), función
PRTINFO( ), función	_PSCODE, variable de memoria del sistema	_PSPACING, variable de memoria del sistema
PUSH KEY, comando	PUSH MENU, comando	PUSH POPUP, comando
PUTFILE( ), función	_PWAIT, variable de memoria del sistema
Q

QUIT, comando
R

RDLEVEL( ), función	READ, comando	READ MENU, comando
READKEY( ), función	REFRESH( ), función	REINDEX, comando
RELEASE , comando	RELEASE BAR, comando	RELEASE CLASSLIB, comando
RELEASE LIBRARY, comando	RELEASE MENUS, comando	RELEASE MODULE, comando
RELEASE PAD, comando	RELEASE POPUPS, comando	RELEASE PROCEDURE, comando
RELEASE WINDOWS, comando	REMOVE CLASS, comando	RENAME, comando
RENAME CLASS, comando	RENAME CONNECTION, comando	RENAME TABLE, comando
RENAME VIEW, comando	REPORT, comando	REQUERY( ), función
RESTORE FROM, comando	RESTORE MACROS, comando	RESTORE SCREEN, comando
RESTORE WINDOW, comando	RESUME, comando	RGB( ), función
RGBSCHEME( ), función	_RMARGIN, variable de memoria del sistema	ROW( ), función
RUN | !, comando	RUNSCRIPT, comando
S

SAVE MACROS, comando	SAVE SCREEN, comando	SAVE TO, comando
SAVE WINDOWS, comando	SCHEME( ), función	SCOLS( ), función
SCROLL, comando	_SCREEN, variable de memoria del sistema	SET, comando
SET ALTERNATE, comando	SET ANSI, comando	SET APLABOUT, comando
SET AUTOSAVE, comando	SET BELL, comando	SET BLINK, comando
SET BORDER, comando	SET BRSTATUS, comando	SET CLASSLIB, comando
SET CLEAR, comando	SET CLOCK, comando	SET COLOR OF, comando
SET COLOR OF SCHEME, comando	SET COLOR SET, comando	SET COLOR TO, comando
SET COMPATIBLE, comando	SET CONFIRM, comando	SET CONSOLE, comando
SET CPCOMPILE	SET CPDIALOG	SET CURRENCY, comando
SET CURSOR, comando	SET DATASESSION, comando	SET DEBUG, comando
SET DECIMALS, comando	SET DELIMITERS, comando	SET DEVELOPMENT, comando
SET DEVICE, comando	SET DISPLAY, comando	SET DOHISTORY, comando
SET ECHO, comando	SET ESCAPE, comando	SET FORMAT, comando
SET FUNCTION, comando	SET HEADINGS, comando	SET HELP, comando
SET HELPFILTER, comando	SET INTENSITY, comando	SET KEY, comando
SET KEYCOMP, comando	SET LOGERRORS, comando	SET MACDESKTOP, comando
SET MACHELP, comando	SET MACKEY, comando	SET MARGIN, comando
SET MARK OF, comando	SET MARK TO, comando	SET MEMOWIDTH, comando
SET MESSAGE, comando	SET MOUSE, comando	SET ODOMETER, comando
SET OLEOBJECT, comando	SET PALETTE, comando	SET PDSETUP, comando
SET POINT, comando	SET PRINTER, comando	SET READBORDER, comando
SET REFRESH, comando	SET RESOURCE, comando	SET SAFETY, comando
SET SCOREBOARD, comando	SET SECONDS, comando	SET SEPARATOR, comando
SET SHADOWS, comando	SET SKIP OF, comando	SET SPACE, comando
SET STATUS, comando	SET STATUS BAR, comando	SET STEP, comando
SET STICKY, comando	SET SYSFORMATS, comando	SET SYSMENU, comando
SET TALK, comando	SET TEXTMERGE, comando	SET TEXTMERGE DELIMITERS, comando
SET TOPIC, comando	SET TOPIC ID, comando	SET TRBETWEEN, comando
SET TYPEAHEAD, comando	SET VIEW, comando	SET WINDOW OF MEMO, comando
SET XCMDFILE, comando	_SHELL, variable de memoria del sistema	SHOW GET, comando
SHOW GETS, comando	SHOW MENU, comando	SHOW OBJECT, comando
SHOW POPUP, comando	SHOW WINDOW, comando	SIZE POPUP, comando
SIZE WINDOW, comando	SKPBAR( ), función	SKPPAD( ), función
SOUNDEX( ), función	_SPELLCHK, variable de memoria del sistema	SQL functions
SROWS( ), función	_STARTUP, variable de memoria del sistema	SUSPEND, comando
SYS(), funciones excepto SYS(2011)	SYSMETRIC( ), función
T

_TABS, variable de memoria del sistema	TEXT ... ENDTEXT, comando	_THROTTLE, variable de memoria del sistema
TRANSFORM( ), función	_TRANSPORT, variable de memoria del sistema	TXTWIDTH( ), función
TYPE, comando
U

UPDATED( ), función	USE, comando
V

VALIDATE DATABASE, comando	VARREAD( ), función	VERSION( ), función
W

WAIT, comando	WBORDER( ), función	WCHILD( ), función
WCOLS( ), función	WEXIST( ), función	WFONT( ), función
_WINDOWS, variable de memoria del sistema	_WIZARD, variable de memoria del sistema	WLAST( ), función
WLCOL( ), función	WLROW( ), función	WMAXIMUM( ), función
WMINIMUM( ), función	WONTOP( ), función	WOUTPUT( ), función
WPARENT( ), función	_WRAP, variable de memoria del sistema	WREAD( ), función
WROWS( ), función	WTITLE( ), función	WVISIBLE( ), función
X

Y

Z

ZOOM WINDOW, comando