Está en la página 1de 48

Módulo 1

BASES DE DATOS
EN VISUAL FOX PRO

Programa:

Alumno:

¨Módulo No. 1 Base de Datos


Preparado por:
Kenedy Campo

Reservados todos los derechos


Prohibida su reproducción total o parcial

Diseño e Impresión:
Comunicamos Ideas Tel 653 6517
Ideas@telesat.com.co
CONTENIDO

INTRODUCCIÓN A LAS BASES DE DATOS

1. ¿POR QUÉ LAS BASES DE


DATOS? APPEND (Comando)
2. DEFINICIÓN DE BASES DE BOF() (Función)
DATOS EOF() (Función)
3. VENTAJAS DE LAS BASES DE
DATOS GO GOTO (Comando)
4. NIVELES DE ABSTRACCIÓN EN SKIP (Comando)
UNA BASE DE DATOS RECNO() (Función)
MODELO ENTIDAD – RELACIÓN RECCOUNT() (Función)
LOCATE (Comando)
CAMPO 2 CONTINUE (Comando)
Registro tabla (Archivo) $ (Operador)
Tipos de datos y campo DO WHILE ... ENDDO (Comando)
Creacion de nombres en Visual FoxPro FOUND() (Función)
QUIT (Comando) STORE (Comando)
?!?? (Comando) VAL() (Función)
CLEAR (Comandos) STR() (Función)
DATE() (Función) ALLTRIM() (Función)
SET CENTURY (Comando) LTRIM() (Función)
SET DATE (Comando) RTRIM() (Función)
TIME() (Función) LEFT() (Función)
DATETIME() (Función) RIGTH() (Función)
TYPE() (Función) SUBSTR()(Función)
SET DEFAULT (Comando)
CREATE (Comando)
USE (Comando)
INTRODUCCIÓN A LAS BASES DE DATOS
1. ¿POR QUÉ LAS BASES DE DATOS?
En los sistemas de información clásicos, una aplicación accede a uno o mas archivos.
Esto se debe a que estos sistemas están orientados hacia el proceso, debido a que en ellos,
se pone el énfasis en los tratamientos que reciben los datos, los cuales se almacenan en unos
archivos que son usados para una única aplicación.
Estas se analizan e implantan con entera independencia unas de otras, y los datos no se suelen
transferir entre ellas, sino que se duplican siempre que los correspondientes trabajos los nece-
sitan.
Este planteamiento produce, además de una ocupación inútil de memorias secundarias, un au-
mento en los tiempos de proceso, al repetirse los mismos controles y operaciones en los distintos
archivos, pero más grave todavía son las incoherencias que a menudo, se presentan en estos
sistemas, debido a que la actualización de los datos que se encuentran en mas de un archivo
no se suele realizarse de forma simultánea.
De este análisis, se deduce claramente la necesidad de una gestión mas racional del conjunto
de datos, surgiendo así un nuevo enfoque que se apoya sobre una “base de datos”, en la cual
los datos son recogidos y almacenados una sola vez, organizándose y manteniéndose en un
conjunto estructurado, que no está diseñado para una aplicación concreta.

2. DEFINICIÓN DE BASES DE DATOS


Muchas son las definiciones que de una base de datos pueden encontrarse en la abundante
bibliografía existente sobre el tema, pero coinciden en que consideran que, una base de datos
es un conjunto, colección o de depósito de datos almacenados en un soporte informático. Los
datos deben estar interrelacionados y estructurados de acuerdo con un modelo capaz de recoger
el contenido semántico – restricciones existentes en el mundo real.

3. VENTAJAS DE LAS BASES DE DATOS


 Reducción o eliminación de redundancias
 Posibilidad de eliminar inconsistencias
 Los datos pueden compartirse

Estos no sólo quiere decir que diferentes aplicaciones existentes pueden compartir los datos
de la base, sino también que es factible desarrollar nuevas aplicaciones que operen con los
mismos datos almacenados.

 Pueden aplicarse restricciones de seguridad. El sistema permite el estableci


miento de controles de acceso, de modo que una determinada apli-
cación (o usuario que acceda directamente a la base desde
un terminal) tenga autorización para “ver” sólo cierta parte de los datos y
para efectuar sólo ciertas operaciones con ellos
 Conservación de la integridad. El control centralizado de la base, permite ejecutar
procedimientos de validación que habrán de ejecutarse cada vez que se
intente una operación de actualización, lo que asegura que los datos
almacenados son correctos, garantizando así la integridad de los mis-
mos.
 Independencia de los datos. Las aplicaciones son inmunes a cambios en la estructura
de almacenamiento y en la estrategia de acceso, es decir, existe una independencia,
tanto físico como lógica, entre datos y tratamientos. Esta es una característica que

4. NIVELES DE ABSTRACCIÓN EN UNA BASE DE DATOS


En las bases de datos existen tres niveles generales: interno o físico, conceptual o lógico global,
externo o lógico.

El nivel externo es el más cercano a los usuarios, es decir, el que atañe a la manera como cada
usuario ve los datos. En la arquitectura ANSI/Spara se llama vista externa. Por tanto, una visita
externa es el contenido de la base de datos tal como lo ve un usuario, específico (es decir, para
ese usuario la vista externa es la base de datos). Por ejemplo, un usuario del departamento de
personal puede ver la base de datos como un conjunto de ocurrencias de registros de departa-
mento más un conjunto de ocurrencias de registros de empleados.

El nivel conceptual o lógico global es una representación lógica del contenido total de informa-
ción de la base de datos, en forma abstracta en comparación con la forma en la cual los datos
se almacenan físicamente.

Si el nivel externo se relaciona con las visitas de los usuarios individuales, el nivel conceptual
puede considerarse como el que define una vista de la comunidad de usuarios.

El nivel interno es una representación de nivel muy bajo de la base de datos en su totalidad; se
compone de múltiples ocurrencias, de múltiples tipos de registros internos. Registro interno es
el término que ANSI/o PARC utiliza para la construcción llamada registro almacenado; la vista
interna, por tanto, aún se mantiene a un paso del nivel físico, ya que no atañe a registros físicos
ni a ninguna restricción específica de dispositivos tales como capacidades de cilindros o pistas.

5. SISTEMAS DE GESTIÓN DE BASES DE DATOS

Vista

Usuario Nivel externo


ò lógico

NIvel Conceptual Nivel Interno


ó Lógico Global ó Fisíco

Un sistema de gestión de bases de datos, es un conjunto coordinado de programas, procedi-


mientos, lenguajes, etc., que suministra, tanto a los usuarios informáticos, como a las analistas,
programadores, o al administrador, los medios necesarios para describir, recuperar y manipular
los datos integrados en la base, asegurando su confidencia y seguridad.
Las principales funciones de un SGBD son:
 Función de descripción: la función de descripción debe permitir al administrador de la
base de datos, especificar los elementos de datos que la integran, su estructura y las relaciones
que existen entre, ellos las reglas de integridad semántica y los controles a efectuar antes de
autorizar el acceso a la base, etc., así como también las características de tipo físico y las vistas
lógicas de los usuarios.
Esta función, llevada a cabo por el lenguaje de descripción o definición de datos (LDD), propio
de cada SGBD, debe suministrar los medios para definir las tres estructuras de datos –físicas,
lógica, conceptual-, especificando las características de los datos, a cada uno de estos niveles:
A nivel físico, se ha de delimitar el espacio –volúmenes, cilindros y pistas- reservado para la base,
la longitud de los campos o elementos de datos, su modo de representación –binario, decimal,
pto. fijo o flotante, etc. además, se debe poder señalar caminos de acceso, definir punteros, etc.
A nivel de estructuras lógica y conceptual, ha de suministrar los instrumentos para la definición de
las entidades y su identificación, atributos de las mismas, relaciones entre ellas, autorizaciones
de acceso, restricciones de integridad, etc.

 Función de manipulación: la función de manipulación permite a los usuarios de la base,


añadir, buscar, suprimir o modificar los datos de la misma siempre de acuerdo con las especifi-
caciones y las normas de seguridad dictadas por el administrador. La función de manipulación
se llevará a cabo por medio de un lenguaje de manipulación de datos (LMD), que facilita los ins-
trumentos necesarios para la realización de estas tareas. Puede ser un lenguaje autocontenido,
orientado a los usuarios no informáticos, que puede usarse, en general, en modo conversacio-
nal o puede ser un lenguaje que precisa apoyarse en otro lenguaje, llamado huésped.
 Función de utilización: la función de utilización reúne todas las interfases que necesitan
los diferentes usuarios para comunicarse con la base. Los requerimientos respecto a la forma
de utilizar la base de datos son muy diferentes, según los tipos de procesos y según los usuarios,
siendo preciso que, la función de utilización responda a todas ellas. En especial, esta función
debe integrar un conjunto de instrumentos que faciliten las tareas del administrador.

6. ADMINISTRADOR DE LA BASE DE DATOS


Una de las razones principales para contar con sistemas de manejo de bases de datos es tener
un control centralizado tanto de los datos como de los programas que tienen acceso a ellos. La
persona que tiene este control centralizado sobre el sistema es el administrador de la base de
datos. Las funciones del administrador son entre otras:
 Definición del esquema (base lógica global)
 Definición de la estructura del almacenamiento y del método de acceso
 Modificación del esquema y de la organización física
 Concesión de autorización para el acceso a los datos
 Especificación de restricciones de integridad
 TALLER
 ¿Qué es una base de datos?
 ¿Qué es un modelo de datos?
 ¿Qué es un sistema de gestión de base de datos?
 ¿Cuáles son las ventajas de las bases de datos?
 ¿Cuáles son los niveles de abstracción de los datos?
MODELO ENTIDAD – RELACIÓN
Para efectuar el análisis de un sistema de información es necesario realizar un análisis funcional
y un análisis estructural.
El análisis funcional corresponde a la identificación, definición, representación y especificación
de procesos. En este capítulo nos ocuparemos del análisis estructural o análisis de datos, que
consiste inicialmente en un esquema conceptual formado por los objetos y sus propiedades re-
levantes identificadas por el analista en su percepción y abstracción de esa realidad.
El esquema conceptual que se forma en la mente del analista es expresado mediante algunos
formalismos dando origen a un modelo conceptual.
Una vez definido el modelo conceptual, este se puede transformar en una descripción de datos,
atributos, registros, archivos, tablas, etc., incluyendo las posibles interrelaciones entre estos ele-
mentos y su significado. Dicha descripción la llamaremos modelo lógico de datos y a la operación
de transformar el modelo lógico la llamaremos diseño lógico de datos.
Una vez definido el modelo lógico, hay que traducirlo a estructuras almacenables en soporte
físicos controlados por el computador, normalmente discos magnéticos. Al conjunto de estas
estructuras lo llamaremos modelo físico de datos y al proceso de transformación del modelo
lógico al modelo físico, lo llamaremos diseño físico de datos.

La siguiente figura representa los tres niveles de los datos y sus correspondientes modelos:

RELAIDAD

Análisis MODELO Vista o


CONCEPTUAL abstracción
Diseño
lógico de
datos MODELO Transformación
LÓGICO
Diseño físico
de datos
MODELO
Transformación
FÍSICO
B.D.

Existen múltiples modelos conceptuales, de los cuales el mas ampliamente utilizado es el modelo
entidad relación de chen, que es el que estudiaremos.
El modelo entidad-relación al igual que cualquier otro modelo conceptual de daos es independiente
del sistema de gestión de bases de datos elegido.

Los elementos básicos del modelo son:


Entidades:
Una entidad es una “cosa” que puede ser distinguida e identificada. De cara al modelo conceptual
podemos decir que las entidades son los objetos acerca de los cuales tenemos información.

Las entidades pueden ser:

 Reales, es decir, objetos tangibles o cosas, tales como máquinas, gente, edificios,
etc.
 Conceptuales, es decir, objetos intangibles, como por ejemplo, orden de compra, costo
de un centro, etc.
 Actividades o eventos, es decir, actividades de interés para la empresa, acerca de los
cuales se deben mantener datos por ejemplo, pagos, compras, ventas, etc.

Es importante señalar que una entidad esta representada en el modelo por los datos asociados
a sus propiedades, ella no es en si misma los datos. Por ejemplo, María Pepa existe como una
persona, pero su nombre, fecha de nacimiento, sexo, etc., son propiedades o cualidades que
pueden ser representadas como datos acerca de ella, otra cosa importante es que teniendo en
cuenta las propiedades comunes, las entidades son agrupadas “formando tipos” de entidades.
Así por ejemplo, la entidad María Pepa pertenece a la entidad tipo “PERSONA”, y se dice que

Relaciones:
Una relación es una asociación entre entidades, por ejemplo, “padre-de” es una relación entre
dos entidades “PERSONA”.

Las relaciones se agrupan formando “tipos de relaciones”, es decir, asociaciones entre los tipos
de entidades de las entidades involucradas en las relaciones.
Podemos clasificar las relaciones tipo, según el grado o número de tipos de entidades distintas
a las que asocia:

 Relación binaria o de grado 2: entre dos tipos de entidades diferentes.


 Relación reflexiva o de grado 1: la definido entre un tipo de entidad y ella misma.

Cardinalidad de una relación:


Es el número de ocurrencias de cada tipo de entidad que intervienen o pueden intervenir en
el tipo de relación.
Se puede fijar, al hablar de la cardinalidad de una entidad respecto a una relación, de una
cardinalidad mínima y de una cardinalidad máxima. La mínima puede ser 0 o 1 e indicará si
existe la posibilidad de determinadas entidades no participen en el relación, y dichas partici-
paciones se conocen con el nombre de opcional y obligatoria respectivamente.

Atributos: un atributo es una propiedad descriptivo o valor asociado con una entidad, que sirve
para cualificar, identificar, clasificar o expresar el estado de la entidad. Un tipo de atributo
es la colección de todos los valores de una propiedad definida asociada con las entidades
de un tipo de entidad dado.

Ejemplo:
Tipo de entidad Tipo de atributo Atributo
Persona Nombre María Pepa
Diagrama entidad – relación:
Ees un gráfico conceptual del modelo entidad – relación. Hay 2 razones para dibujarlo:

 Representa un resumen de los resultados del análisis, el cual puede servir como b a s e
para la discusión.
 Es la base para el diseño de la base de datos

No existe una única representación gráfica de los diagramas entidad-relación (DER), veremos
dos:

Diagramas de Echen:

PERSONA

 Los tipos de relaciones se representan por un rombo con sus respectivas líneas de co-
nexión a los tipos de entidades. Ejemplo:

TRABAJA

 Las cardinalidades se representan junto a las líneas de conexión y cerca de


las entidades tipo respectivas, de la siguiente manera:

“Cardinalidad mínima: cardinalidad máxima”

Ejemplo: EMPLEADO TRABAJA PROYECTO


∅: ∅:

 Los tipos de atributo por lo general no se suelen representar en el diagramapara no


recargarlo y cuando se representa sólo se utilizan los atributos de la clave primaria.

∅: Ν 1:1
VENDEDOR VENDE A CLIENTE

No. Vendedor No. Cliente

Diagramas de Bachman:
a. Los tipos de entidades se representan por um rectángulo
b. Los tipos de relaciones se representan por un rombo
c. Las cardinalidades máximas se representan por las líneas de conexión de los rombos
con los respectivos tipos de entidades. La convención es la siguiente:
Representa una relación R, de cardinalidad máxima “uno a uno”
R teniendo en cuenta los dos sentidos.

Representa una relación R, de cardinalidad “uno a muchos” en


R donde muchos significa mas de uno.

R Representa una relación R, de cardinalidad “muchos a mu-

En Bachaman las características mínimas no aparecen reflejadas gráficamente.

d. Los tipos de atributos se representan como óvalos conectados al rectángulo de su


respectivo tipo de entidad. Ejemplo:
A a2

a1
Equivalencia de entidades:
a. Entidades compuestas o asociativas: se denomina de este modo a aquellas que resultan
al asociar a una relación entre entidades unos determinados atributos. Entonces,
la relación inicial debe ser considerada a su vez como una entidad. Ejemplo:

∅: Ν ∅: Ν
EMPLEADO TRABAJA PROYECTO

Fecha inicio partici- Horas


pación dictadas

Horas dedicadas no es un atributo de empleado ni de proyecto, puesto que su significado


depende tanto del empleado como del proyecto involucrado.

b. Atributo – entidad: no sólo las relaciones se pueden convertir en entidades. Un atri-


buto también se pude convertir en una entidad cuando tiene significado
completo en si mismo, con relaciones y atributos propios. Ejemplo:

TIPO DE CARRO CARRO

Constructor modelo N° pasajeros N° placa Pripi-


TALLER

1. Explique en qué consiste el análisis de datos


2. Explique en qué consiste el diseño lógico y físico de datos
3. Explique los elementos del modelo entidad – relación de Chen
4. Transforme los ejemplos representados en diagramas de Chen a diagramas de
Bachman
5. Dé un ejemplo entidad compuesta y un ejemplo de un atributo-entidad

EJEMPLOS Y EJERCICIOS DEL MER


Ejemplo: se trata de diseñar un modelo conceptual para una compañía aérea usando el forma-
lismo entidad – relación. Las entidades con sus atributos son las siguientes:

 PASAJERO (Nombre, dirección, teléfono)


 VUELO (Origen, Destino, No. Vuelo, Hora – Partida, Hora - Llegada)
 PARTIDA (Fecha).
 TIPO – AVION (Constructor, Modelo)
 AERONAVE (No. Serie)
 EMPLEADO (No. Empleado, Nombre, Categoría, Salario)
 PILOTO (No. Licencia; No. Horas – Vuelo).

Las relaciones y sus cardinalidades máximas son las siguientes:

1. Los pilotos pertenecen a los empleados de la compañía (1:1)


2. Los pasajeros reservan cupo para las partidad (m:n).
3. Las partidad son ocurrencias de los vuelos en una fecha determinada (n:1).
4. Empleados de la compañía son asignados a una partida (m:n).
5. Los pilotos pueden manejar varios tipos de aviones (m:n)
6. Una aeronave pertenece a un tipo de avión (n:=)
7. Una aeronave puede realizar varias partidas (1:n)
El diagrama de Bachman
correspondiente es:
Nombe -P Dirección Telèfono

PASAJERO

Salario Nombre
Reserva
Categoria N° Lic N° Horas

Fecha

PARTIDA Asionado EMPLEADO Pertenece PILOTO

Re Maneja
Ocurrencia ali
za
N° Hora
partida

VUELO A E R O N AV E Es un T I P O - AV I Ò N

Hora Constructor Modelo


Orígen Destino llegada Constructor
En la práctica se suele PA S A J E R O EMPLEADO
simplificar la represen-
tación omitiendo los
nombres de las rela-
ciones y de los atri- PA R T I D A A E R O N AV E
butos, de la siguiente PILOTO
manera:
VUELO T I P O - AV I Ò N

Le queda como ejercicio al lector establecer las cardinalidades mínimas.

EJERCICIO 1
Se trata de elaborar el modelo entidad – relación que refleje el funcionamiento de una universidad
en su parte académica, organizada de la forma siguiente:
1. La universidad está constituida por facultades.
2. Una facultad está dividida en departamentos.
3. Un departamento está integrado por cátedras.
4. Una cátedra imparte, en general, varias asignaturas.
5. Un alumno está matriculado en una o varias asignaturas, pero no puede cursar estudios simultá-
neamente en dos facultades diferentes.
6. En cada cátedra hay un catedrático y varios profesores titulares y encargados de cursos. Los
profesores titulares, así como el catedrático, sólo pueden impartir docen cia dentro de la
cátedra. Mientras que los encarga dos de cursos pueden hacerlo en distintas cátedras de un
mismo departamento.
7. Departamentos de la misma o de distintas facultades pueden unirse para construir institutos
interfacultativos de investigación y post – grado.
8. Cada departamento tiene varios alumnos de post – grado, que reciben la docencia a través de los
institutos de investigación.

Se pide:
1. Identificar las entidades.
2. Identificar las relaciones y sus cardinalidades.

EJERCICIO 2
Una empresa dedicada a la fabricación y venta de productos desea diseñar una base de datos
que le permita controlar un sistema de compras y almacenes. Las materias primas que necesita
la empresa se solicitan a los proveedores. Cada proveedor suministra diversas materias primas
y de cada materia prima hay varios proveedores. Cada pedido es para un único proveedor y para
una sola materia prima y en él se indica en que almacén deseo que se efectúe la entrega ya que
las materias primas están distribuidas en diversos almacenes.
En cada almacén hay por lo menos un 80% de las materias primas y una materia prima está en
al menos el 80% de los almacenes.
En los almacenes citados, también se encuentran los productos terminados. En cada almacen
un 50% de los productos y un producto se almacena en al menos un 50% de los almacenes.
Los productos se componen de varias materias primas y obviamente una materia prima puede
intervenir en la fabricación de más de un producto.
Una vez el pedido es servido, se procede al pago de los proveedores previa presentación de la
factura de estos. Una factura por cada pedido. Cada pedido puede originar varias pagos, pero
cada uno de ellos corresponde a una única factura. Los pagos se agrupan por bancos teniendo
en cuenta que algunos pagos se efectuarán en efectivo (no por banco) se pide lo mismo del
Campo
Campo

Recibe
Recibe el
el nombre
nombrede decampo
campoelelespacio
espaciofísico
físicodonde
dondesese
almacena unun
almacena dato, y alyque
dato, generalmente
al que se lesedaleun
generalmente da un
nombre
nombre para
paraidentifi
identificarlo.
carlo.En
Enun
uncampo
campopodemos
podemos tener unos
tener datos
unos ya ya
datos almacenados
almacenados o introducir unosunos
o introducir nuevos.
nuevos.

Ejemplo:
Ejemplo:

Cada una
una de
delas
lascasillas
casillasque
quesesellenan
llenanenenuna
unahoja
hojadede
vida corresponde
vida a un
corresponde campo.
a un campo.

Crear Campos
Campos

Al crear
crear los
loscampos
camposde deuna
unatabla
tabladebe
debeespecifi
especificarcar
unun nombre
nombre dede
campo,
campo,un un
tipotipo
de datos y unyancho
de datos de campo.
un ancho de campo.
También
También puede
puedecontrolar
controlarquéquédatos
datossesepermiten
permiten enenel el
campo
campo especifi cando
especifi candosi elsicampo permite
el campo valores
permite NULL,
valores NULL,
si tiene
tiene unun valor
valor predeterminado
predeterminadoo osisidebe debecumplir
cumplir reglas dede
reglas validación.
validación.Al confi gurar
Al confi las propiedades
gurar de de
las propiedades
presentación,
presentación,puede
puedeespecifi
especificar
careleltipo
tipodedecontrol
control que
quese se
crea cuando
crea cuando el campo
el campo se agrega a una formulario,
se agrega el el
un formulario,
formato
formato deldelcontenido
contenidode delos
loscampos
camposo oeleltítulo
títulodeldel
contenido
contenido deldel
campo.
campo.
Nota: Los
Los registros
registrosde
deuna
unatabla
tabladedeVisual
VisualFoxPro pueden
FoxPro contener
pueden contenerhasta 255255
hasta campos.
campos.Si uno o más
Si uno campos
o más campos
contienen
contienen valores
valoresNULL,
NULL,elelnúmero
númeromáximo
máximo dede
campos
camposque la tabla
que puede
la tabla contener
puede se reduce
contener en uno,
se reduce de 255
en uno, de 255
a 254.
254.
Registro
Registro

Físicamente
Físicamente es es un
unconjunto
conjuntodedecampos;
campos;lógicamente es es
lógicamente unun
conjunto de de
conjunto datos relacionados
datos queque
relacionados sirven parapara
sirven
identifi
identificar
car un
unente,
ente,persona
personaoocosa.
cosa.

Trabajar
Trabajar con
conregistros
registros

Cuando
Cuandohaya
hayadiseñado
diseñadoyycreado
creadolalaestructura
estructura dede
una
unatabla, puede
tabla, almacenar
puede datos
almacenar en ella
datos agregándole
en ella registros.
agregándole registros.
Después
Después podrá
podrámodifi
modificar
caryyeliminar
eliminarlos
losregistros existentes.
registros Cada
existentes. unauna
Cada de de
estas tareas
estas puede
tareas realizarse
puede a través
realizarse a través
de la interfaz
interfazgrafi
grafica
caoomediante
mediantecomandos.
comandos.

Ejemplo:
Ejemplo:

Una vez
vez llenadas
llenadastodas
todaslas
lascasillas
casillasdedelalahoja
hojadede
vida tenemos
vida tenemos unun
registro, indica
registro, estoesto
indica queque
la hoja de vida
la hoja como
de vida como
tal es un
un registro
registroque
queidentifi
identificacaa auna
unapersona
persona enen
particular.
particular.

Tabla (Archivo)
(Archivo)

Conjunto
Conjunto de
de registros
registrosque
quehacen
hacenreferencia
referenciaa auna
unamisma
mismapersona o cosa,
persona las las
o cosa, tablas también
tablas las conocemos
también las conocemos
como archivos.
archivos.

Crear tablas
tablas

Las tablas
tablasalmacenan
almacenanloslosdatos
datosenenununformato
formato dede
filas y columnas,
filas y columnas, de de
manera
manerasimilar a una
similar hojahoja
a una de cálculo. CadaCada
de cálculo.
fila representa
representaun
unregistro,
registro,mientras
mientrasque quecada
cada columna
columna representa
representa loslos
campos
campos de los registros.
de los Puede
registros. crearcrear
Puede una una
tabla en
en una
unabase
basede
dedatos
datosoouna
unatabla
tablalibre
librequequenonoesté
estéasociada a ninguna
asociada a ninguna base de datos.
base Si coloca
de datos. la tabla
Si coloca en en
la tabla
una base
basede
dedatos,
datos,puede
puedecrear
crearnombres
nombres largos
largos dede
campo
campo y de tabla
y de para
tabla las las
para tablas de la
tablas debase de datos.
la base También
de datos. También
puede
puede aprovecharse
aprovecharsede delas
lascapacidades
capacidadesdel diccionario
del diccionario dededatos para
datos tablas
para de base
tablas de datos,
de base valores
de datos, de campo
valores de campo
predeterminados
predeterminadosyyreglas
reglasaanivel
niveldedecampo
campo y ay nivel
a niveldederegistro, asíasí
registro, como
como también
tambiénde los
de desencadenadores.
los desencadenadores.

Diseñar
Diseñar tablas
tablasde
debase
basede
dedatos
datosootablas
tablaslibres
libres

Las tablas
tablas de
deVisual
VisualFoxPro,
FoxPro,ooarchivos
archivos.dbf,
.dbf,pueden
pueden existir enen
existir dosdos
estados:
estados:como
comotabla de base
tabla de datos
de base (una(una
de datos
tabla asociada
asociada aauna
unabase
basedededatos)
datos)o ocomo
comouna tabla
una libre
tabla nono
libre asociada
asociadaa ninguna
a ninguna basebase
de datos. Las tablas
de datos. Las tablas
asociadas
asociadas aa una
unabase
basedededatos
datoscuentan
cuentanconconciertas
ciertasventajas
ventajas sobre las las
sobre tablas libres.
tablas Cuando
libres. unauna
Cuando tablatabla
formaforma
parte de
de una
unabase
basede
dedatos,
datos,esesposible
posiblecrear:
crear:
• Nombres largos para la tabla y para cada uno de sus campos.

• Títulos y observaciones para cada campo de la tabla.

• Valores predeterminados, máscaras de entrada y formato para los campos de la tabla.

• Clase de control predeterminada para campos de tablas.

• Reglas a nivel de campo y reglas a nivel de registro.

• Índices de clave primaria y relaciones de tablas para compatibilidad con reglas de integridad
referencial.

• Un desencadenante para cada evento INSERT, UPDATE o DELETE.

Recuerde los siguientes puntos cuando diseñe una tabla:

• El tipo de datos de un campo debe coincidir con el tipo de información que va a almacenar en él.

• Haga el campo lo suficientemente ancho para dar cabida a la información que mostrará.

• Establezca un número apropiado de posiciones decimales para los campos de tipo Numérico o
Float.

• Active "NULL" si desea que el campo acepte .NULL. como valor.

Ejemplo:

Las hojas de vida de mis estudiantes forman una tabla (Archivo).

Tipos de datos y campos

Todos los datos de Visual FoxPro tienen un tipo, como una descripción de los valores permitidos, y el intervalo
y tamaño de los valores. Una vez especificado el tipo de datos que está usando, Visual FoxPro puede almacenar
y manipular los datos de forma eficaz.

Cuando se crea una tabla, se puede especificar el tipo de datos que se almacena en cada campo de la tabla. Es
posible especificar más tipos de datos para campos en una tabla que para variables y matrices, las cuales sólo
pueden almacenar un subconjunto de los tipos de datos disponibles en Visual FoxPro; sin embargo, el valor que
se almacene en una variable o elemento de matriz determina el tipo de dato almacenado.
Sugerencia: Se puede usar la función TYPE() para determinar el tipo de dato almacenado en una variable,
elemento de matriz o campo.
La siguiente tabla muestra los tipos de datos en Visual FoxPro.

Tipos de datos de Visual FoxPro


Tipo de datos Descripción Tamaño Intervalo
Carácter Cualquier texto 1 byte por carácter Cualquier carácter
hasta 254
Monetario Importes monetarios 8 bytes - $922337203685477.5807 to
(Currency) $922337203685477.5807
Fecha Dato cronológico que 8 bytes Al usar formatos de fecha estrictos, {^0001-01-01}, 1
consiste de mes, día y año de enero, 1 d.C. a {^9999-12-31}, 31 de diciembre,
9999 d.C.
DateTime Dato cronológico que 8 bytes Al usar formatos de fecha estrictos, {^0001-01-01}, 1
consiste de mes, día, año, de enero, 1 d.C. a {^9999-12-31}, 31 de diciembre,
horas, minutos y segundos 9999 d.C., más 00:00:00 a.m. a 11:59:59 p.m.
Lógico Valor booleano verdadero 1 byte Verdadero (.T.) o Falso (.F.)
o falso
Numérico Números enteros o 8 bytes en la - 0,9999999999E+19 a 0,9999999999E+20
decimales memoria;
1 a 20 bytes en
una tabla

Además, Visual FoxPro proporciona tipos de datos que se aplican únicamente a campos de tablas.

Tipos de campos de Visual FoxPro

Tipo de datos Descripción Tamaño Intervalo


Character (Binary) Cualquier dato carácter que 1 byte por carácter Algunos caracteres
no se desea traducir entre hasta 254
páginas de código.
Doble Número de signo flotante 8 bytes +/-4,94065645841247E-324 a +/-
de precisión doble 8,9884656743115E307
Flotante Igual que Numérico 8 bytes en la - 0,9999999999E+19 a 0,9999999999E+20
memoria;
1 a 20 bytes en
una tabla
General Referencia a un objeto OLE 4 bytes en una Limitado por la memoria disponible
tabla
Entero Valor numérico sin 4 bytes -2147483647 a 2147483647
decimales
Integer (Autoinc) Lo mismo que Integer 4 bytes Valor controlado por los valores de autoincremento
pero también incluye un Next y Step (Siguiente y paso).
valor para incremento
automático. Sólo lectura.
Memo Cualquier texto de longitud 4 bytes en una Limitado por la memoria disponible
indeterminada o referencia tabla
a un bloque de datos
Memo (Binario) Lo mismo que Memo 4 bytes en una Limitado por la memoria disponible
excepto que los datos no tabla
cambian entre páginas de
código
Cada tipo de datos tiene sus propias características, incluido el tamaño de almacenamiento.

Creación de nombres en Visual FoxPro

Los contenedores de datos (campos) y algunos parámetros de comandos y funciones necesitan tener un
nombre. Cuando cree un nombre en Visual FoxPro, aplique las siguientes reglas:

• Use sólo letras, números y subrayados.

• Empiece el nombre con una letra o un subrayado.

• Utilice de 1 a 128 caracteres, excepto para nombres de campo de tablas libres y etiquetas de índice,
que pueden tener un máximo de 10 caracteres.

• Evite las palabras reservadas por Visual FoxPro.

Los nombres de archivo se rigen por las convenciones del sistema operativo.

QUIT (Comando)

Termina la sesión actual de Visual FoxPro y devuelve el control al sistema operativo.


QUIT
Observaciones

Para finalizar una sesión de Visual FoxPro, debe utilizar siempre el comando QUIT. Si apaga el equipo sin ejecutar
QUIT, se pueden dañar los archivos abiertos y perder datos. Además, puede dejar en el disco archivos temporales
de trabajo que normalmente se eliminarían.

Vea también

CANCEL | RESUME | RUN | SUSPEND

? | ?? (Comando)

Evalúa expresiones y muestra los resultados.


? | ?? Expression1 [PICTURE cFormatCodes] | [FUNCTION cFormatCodes] | [VnWidth] [AT nColumn] [FONT cFontName [,
nFontSize] [STYLE cFontStyle | Expression2]] [, Expression3] ...

AT nColumn

Especifica el número de la columna en que aparece el resultado. Esta opción permite alinear el
resultado en columnas para crear una tabla. La expresión numérica nColumn puede ser una función
definida por el usuario que devuelva un valor numérico.

FONT cFontName [, nFontSize]

Especifica una fuente para el resultado de ? | ?? cFontName especifica el nombre de la fuente y


nFontSize especifica el tamaño en puntos. Por ejemplo, el comando siguiente muestra la fecha del
sistema con la fuente Courier de 16 puntos:

? DATE() FONT ‘Courier’,16


Si incluye la cláusula FONT pero omite el tamaño en puntos nFontSize, se usará una fuente de 10
puntos.
Si omite la cláusula FONT y el resultado de ? | ?? se sitúa en la ventana principal de Visual FoxPro, se
utilizará
Si omitepara el resultado
la cláusula FONTlayfuente de la ventana
el resultado de ? | ??principal
se sitúadeenVisual FoxPro.principal
la ventana Si omitede
la cláusula FONT se
Visual FoxPro,
yutilizará
el resultado
para de ? | ?? se sitúa
el resultado en unadeventana
la fuente definida
la ventana por elde
principal usuario, se utilizará
Visual FoxPro. para el
Si omite la resultado la
cláusula FONT
y el resultado
fuente de ? | ??
de la ventana senida
defi sitúapor
eneluna ventana definida por el usuario, se utilizará para el resultado la
usuario.
fuente de la ventana definida por el usuario.
• Si la fuente especificada no está disponible, se sustituirá por una fuente de características
• similares.
Si la fuente especificada no está disponible, se sustituirá por una fuente de características
similares.
STYLE cFontStyle
STYLE cFontStyle
Especifica un estilo de fuente para el resultado de ? | ?? . Si omite la cláusula STYLE, se utiliza el estilo
Especifi
de ca Normal.
fuente un estiloSideelfuente
estilo para el resultado
de fuente especifide ? | ??
cado no. Si omite
está la cláusula
disponible, STYLE, se por
se sustituye utiliza el de
otro estilo
de fuente Normal.
características similares.Si el estilo de fuente especifi cado no está disponible, se sustituye por otro de
características similares.
Nota: Debe incluir la cláusula FONT cuando especifique un estilo de fuente mediante la cláusula
Nota: Debe incluir la cláusula FONT cuando especifique un estilo de fuente mediante la cláusula
STYLE.
STYLE.
Éstos son los estilos de fuente que puede especificar con cFontStyle:
Éstos son los estilos de fuente que puede especificar con cFontStyle:
Character Estilo de la fuente
BCharacterNegrita
Estilo de la fuente
IB Negrita
Cursiva
NI Cursiva
Normal
ON Normal
Contorno
QO Contorno
Opaco
SQ Opaco
Sombra
-S Sombra
Tachado
T- Tachado
Transparente
UT Transparente
Subrayado
U Subrayado
Puede incluir más de un carácter para especificar una combinación de estilos de fuente. Por ejemplo,
Puede incluir más de un carácter para especificar una combinación de estilos de fuente. Por ejemplo,
el comando siguiente muestra la fecha del sistema en Courier negrita y cursiva:
el comando siguiente muestra la fecha del sistema en Courier negrita y cursiva:
? DATE() FONT ‘COURIER’ STYLE ‘BI’
? DATE() FONT ‘COURIER’ STYLE ‘BI’
Observaciones
Observaciones

?? yy ??
?? evalúan
evalúan expresiones
expresionesyyenvían
envíanlos
losresultados
resultadosa alalaventana
ventanaprincipal dede
principal Visual FoxPro,
Visual a una
FoxPro, ventana
a una activa
ventana activa
defi nida por el usuario o a la impresora.
definida por el usuario o a la impresora.
Si SET
Si SET PRINTER
PRINTER está
estádefi
definido
nidocomo
comoON,
ON,los
losresultados
resultadosdedelalaexpresión
expresión sesedirigirán
dirigirán a laa impresora
la impresora y aylaaventana
la ventana
principal de Visual FoxPro o a una ventana activa definida por el usuario. Si SET PRINTER está
principal de Visual FoxPro o a una ventana activa definida por el usuario. Si SET PRINTER está definido defi nido como
comoONON
yy SET
SET CONSOLE
CONSOLEestáestádefi
definido
nidocomo
comoOFF,
OFF,los
losresultados
resultadossesedirigirán
dirigiránúnicamente
únicamente a laa impresora.
la impresora.
Ejemplo
Ejemplo
?? 15*(10+10)
15*(10+10)
?? ‘Welcome
‘Welcome ToTo ‘‘ picture
picture ‘@!’
‘@!’
??
?? ‘Visual
‘Visual FoxPro’
FoxPro’
?? date()
date() font
font ‘courier’,16
‘courier’,16
?? date()
date() font
font ‘courier’
‘courier’ style
style‘bi’
‘bi’
?? date(1998,02,16)
date(1998,02,16)
?? nombre
nombre == ‘Juan
‘Juan Fernando
Fernando‘‘
?? nombre
nombre at
at 25
25
?? precio
precio == 123456.30
123456.30
?? precio
precio ** 16
16 // 100
100
Vea también
también

??? (Comando)
(Comando) ||@
@......SAY
SAY(Comando) | SETMEMOWIDTH
(Comando)| SET MEMOWIDTH(Comando) | SET
(Comando) PRINTER
| SET (Comando)
PRINTER | SET
(Comando) SPACE
| SET (Comando)
SPACE (Comando)
Format (Propiedad)
| Format (Propiedad)| |InputMask
InputMask(Propiedad)
(Propiedad)
CLEAR (Comandos)

Libera de la memoria el elemento o los elementos especificados.


CLEAR [ALL | CLASS ClassName | CLASSLIB ClassLibraryName | DEBUG | DLLS [cAliasNameList]| EVENTS | FIELDS
| GETS | MACROS | MEMORY | MENUS | POPUPS | PROGRAM | PROMPT | READ [ALL] | RESOURCES [FileName] |
TYPEAHEAD | WINDOWS]
Observaciones

CLEAR borra la ventana principal de Visual FoxPro o la ventana activa definida por el usuario y libera de la
memoria todos los controles @ ... GET pendientes. Se puede incluir CLEAR en archivos de formato.

Ejemplo
clear && Limpiar Pantalla
Vea también

@ ... CLEAR | CLOSE | DECLARE - DLL | READ | READ EVENTS | RELEASE | RELEASE CLASSLIB | RELEASE
WINDOWS

DATE() (Función)

Devuelve la fecha actual del sistema, que está controlada por el sistema operativo, o crea un valor Date
compatible con el milenio.
DATE([nYear, nMonth, nDay])
Valores devueltos

Date / Fecha

Parámetros
nYear

Especifica el año devuelto en el valor Date compatible con el milenio. nYear puede tener un valor
entre 1 y 9999.

nMonth

Especifica el mes devuelto en el valor Date compatible con el milenio. nMonth puede tener un valor
entre 1 y 12.

nDay

Especifica el día devuelto en el valor Date compatible con el milenio. nDay puede ser un valor entre
1 y 31.
Observaciones

DATE() devuelve la actual fecha del sistema si se ejecuta sin argumentos opcionales. Incluya los argumentos
opcionales para devolver un valor de fecha compatible con el año 2000 en el formato establecido en la ficha
Regional del cuadro de diálogo cuadro de diálogo Opciones. Los parámetros ausentes se sustituyen con el valor
actual del sistema.

Ningún comando o función de Microsoft Visual FoxPro puede cambiar directamente la fecha del sistema.

Ejemplo
El ejemplo siguiente muestra la fecha actual del sistema con y sin el siglo, y después, muestra una fecha
preparada para el milenio.
clear
set century off
? date()
set century on
? date()
? date(1998,02,16)
? date() + 30
? actual = date(1998,02,16)
? date() - actual
Vea también

CTOD() | DATETIME() | DTOC() | SET CENTURY | SET DATE | SET MARK TO | SYS() - Introducción a las funciones

SET CENTURY (Comando)

Determina si Microsoft Visual FoxPro mostrará o no el siglo en las expresiones Date y cómo interpreta Visual
FoxPro las fechas que sólo especifican los años con 2 dígitos.
SET CENTURY ON | OFF | TO [nCentury [ROLLOVER nYear]]
Parámetros
ON

Especifica un formato de año con cuatro dígitos que ocupa 10 caracteres (incluidos los delimitadores
de fecha).

Nota: Para proporcionar compatibilidad con el año 2000, se recomienda que establezca siempre SET
CENTURY en ON.

OFF

(Predeterminado) Especifica un formato de año de dos dígitos que ocupa ocho caracteres y supone el
siglo veinte para los cálculos de fechas.
Ejemplo
set century on && Año a 4 Digitos
Vea también

DATE() | SET DATASESSION | SET STRICTDATE | SET SYSFORMATS | YEAR()

SET DATE (Comando)

Especifica el formato para mostrar las expresiones Date y DateTime.


SET DATE [TO] AMERICAN | ANSI | BRITISH | FRENCH | GERMAN | ITALIAN | JAPAN | TAIWAN | USA | MDY | DMY | YMD|
SHORT | LONG
Observaciones

A continuación se muestran las configuraciones y los formatos de fecha resultantes:


Valor Formato
AMERICAN mm/dd/aa
ANSI aa.mm.dd
BRITISH/FRENCH dd/mm/aa
GERMAN dd.mm.aa
ITALIAN dd-mm-aa
JAPAN aa/mm/dd
TAIWAN aa/mm/dd
USA mm-dd-aa
MDY mm/dd/aa
DMY dd/mm/aa
AMD aa/mm/dd
SHORT El formato de fecha corto determinado en la configuración
de fecha corta del Panel de Control de Windows.
LONG El formato de fecha larga determinado en la configuración
de fecha larga del Panel de Control de Windows.

Nota: Cuando se establece SET DATE en SHORT o LONG, las fechas anteriores a {1601-01-01} no serán válidas y
generarán un error.
La configuración predeterminada es AMERICAN.

El valor SET DATE también determina cómo aparecerá la fecha en las expresiones DateTime.

Si se establece DATE en SHORT o en LONG, se omitirán los valores de configuración establecidos para SET
CENTURY, SET MARK, SET HOURS y SET SECONDS.

SET DATE tiene como alcance la sesión actual de datos.

Ejemplo
set century on
set date to dmy && Formato dd/mm/aaaa
Vea también

DATE() | DATETIME() | SET CENTURY | SET DATASESSION | SET MARK TO | SET SYSFORMATS

TIME() (Función)

Devuelve la hora actual del sistema en formato de 24 horas, en una cadena de 8 caracteres (HH:MM:SS).
TIME([nExpression])
Valores devueltos

Character / Caracter

Parámetros
nExpression

La hora devuelta incluirá las centésimas de segundo si se incluye nExpression. La expresión numérica
nExpression puede ser cualquier valor. No obstante, la resolución máxima real es de aproximadamente
1/18 de segundo. Utilice SECONDS() para obtener mayor resolución.
Ejemplo
? time() && Imprimir la hora actual
Vea también

CTOT() | DATE() | DATETIME() | DTOT() | HOUR() | SEC() | SECONDS() | SET SECONDS | SYS(2) - Segundos desde
medianoche

DATETIME() (Función)
Devuelve la fecha y la hora actuales como un valor DateTime o crea un valor DateTime compatible con el
milenio.
DATETIME([nYear, nMonth, nDay [, nHours [, nMinutes [, nSeconds]]]])
Valores devueltos

DateTime / Fecha Hora

Parámetros
nYear

Especifica el año devuelto en un valor DateTime compatible con el milenio. nYear puede tener un
valor entre 1 y 9999.

nMonth

Especifica el mes devuelto en un valor DateTime compatible con el milenio. nMonth puede tener un
valor entre 1 y 12.

nDay

Especifica el día devuelto en un valor DateTime compatible con el milenio. nDay puede tener un valor
entre 1 y 31.

nHours

Especifica las horas devueltas en un valor DateTime compatible con el milenio. nHours puede tener
un valor entre 0 (medianoche) y 23 (11 p.m.). Toma el valor predeterminado 0 si se omite.

nMinutes

Especifica los minutos devueltos en un valor DateTime compatible con el milenio. nMinutes puede
tener un valor entre 0 y 59. Toma el valor predeterminado 0 si se omite.

nSeconds

Especifica los segundos devueltos en un valor DateTime compatible con el milenio. nSeconds puede
tomar un valor entre 0 y 59. Toma el valor predeterminado 0 si se omite.
Observaciones

DATETIME() devuelve la fecha actual del sistema si se ejecuta sin ningún argumento opcional. Los parámetros
opcionales de fecha ausentes se sustituyen por los valores actuales del sistema. Un parámetro de hora ausente
se sustituye por 12:00:00.

Incluya los argumentos opcionales para devolver un valor DateTime compatible con el año 2000 en el formato
especificado en la ficha Regional del cuadro de diálogo cuadro de diálogo Opciones.

Ejemplo

En El ejemplo se usa DATETIME() para crear un valor DateTime compatible con el milenio.
clear
set century on
set date to american
? datetime(1998,02,16,12,34,56) && displays 02/16/1998 12:34:56 pm
Vea también

CTOT() | DATE() | DTOT() | HOUR() | SEC() | SECONDS() | SET SECONDS | SET SYSFORMATS | TIME() | TTOC() |
TTOD()

TYPE() (Función)

Evalúa una expresión de carácteres y devuelve el tipo de datos de su contenido.


TYPE(cExpression)
Valores devueltos

Carácter

Parámetros
cExpression

Especifica la expresión que se va a evaluar, que puede ser una variable, un campo, un campo de
memoria o cualquier otra expresión. La expresión se debe transferir como una cadena de carácteres;
escriba entre comillas los nombres de las variables de memoria, los campos, etc. Si no escribe la
expresión entre comillas, la función TYPE() evaluará el contenido de la cadena. Si no se puede evaluar
el contenido como una expresión válida de FoxPro, TYPE() devuelve “U” (expresión no definida).
Observaciones

La tabla siguiente presenta los caracteres que devuelve TYPE() y sus tipos de datos correspondientes:

Tipo de datos Carácter devuelto


Carácter C
Numérico (También Float, Double e Integer) N
Currency Y
Fecha D
DateTime T
Lógico L
Memo M
Objeto O
General G
Screen (creado con SAVE SCREEN) S
Tipo de expresión no definido U
Si pasa un orden como un parámetro a TYPE(), entonces el tipo de datos retomados corresponde al primer
elemento en el orden. Si desea comprobar el tipo de datos por un elemento específico del orden, entonces
debe especificar ese elemento en el parametro. Por ejemplo:
? TYPE(“myarray[3]”)
Puede utilizar además la función TYPE() para comprobar si una variable de memoria es un orden. Por ejemplo:
? TYPE(“myarray[1]”)#”U”
Ejemplo
ntest = 1.01
ctest = “string”
clear
? type(‘(12 * 3) + 4’) && n
? type(‘date()’) && d
? type(‘.f. or .t.’) && l
? type(‘answer=42’) && u
? type(‘$19.99’) && y
? type(‘ntest’) && n
? type(‘ctest’) && c
Vea también
? type(‘ctest’) && c
EVALUATE() | SAVE SCREEN | VARTYPE()
Vea también
SET DEFAULT
EVALUATE() (Comando)
| SAVE SCREEN | VARTYPE()

Especifi
SET ca la unidad
DEFAULT o el directorio predeterminados.
(Comando)
SET DEFAULT TO [cPath]
Especifica la unidad o el directorio predeterminados.
Parámetros
SET DEFAULT TO [cPath]
cPath
Parámetros
cPath Especifica uno de los elementos siguientes:
• ca Un
Especifi unodesignador de unidad.
de los elementos siguientes:
•• Un
Undesignador
designadorde
deunidad.
unidad con un nombre de directorio.
•• Un designador de unidad con un nombre de directorio.
Un nombre de un directorio secundario.
• Un nombre de un directorio secundario.
• Cualquiera de los anteriores, utilizando la notación abreviada de Microsoft MS-DOS ( \ o ..).
• Cualquiera de los anteriores, utilizando la notación abreviada de Microsoft MS-DOS ( \ o ..).
Observaciones
Observaciones
SET DEFAULT cambia el directorio predeterminado al directorio que usted especifique.
SET DEFAULT cambia el directorio predeterminado al directorio que usted especifique.
Cuando salga de Visual FoxPro, volverá a Microsoft® Windows®. Si sale de Windows, volverá a la unidad y al
directorio
Cuando desde
salga de los queFoxPro,
Visual inició Windows.
volverá a Microsoft® Windows®. Si sale de Windows, volverá a la unidad y al
directorio desde los que inició Windows.
Sugerencia: SYS(5) devuelve la unidad predeterminada. SYS(2003) devuelve el directorio predeterminado sin
designador de
Sugerencia: unidad.
SYS(5) SYS(5)la+unidad
devuelve SYS(2003) devuelven laSYS(2003)
predeterminada. unidad y eldevuelve
directorio predeterminados.
el directorio predeterminado sin
designador de unidad. SYS(5) + SYS(2003) devuelven la unidad y el directorio predeterminados.
Ejemplo
Ejemplo
Set default to z:
Set default to z:
Vea también
Vea también
CD | CHDIR | MD | MKDIR | RD | RMDIR | SET PATH | SYS(5) - Unidad predeterminada | SYS(2003) - Directorio actual
CD | CHDIR | MD | MKDIR | RD | RMDIR | SET PATH | SYS(5) - Unidad predeterminada | SYS(2003) - Directorio actual
CREATE (Comando)
CREATE (Comando)
Crea una nueva tabla de Visual FoxPro.
Crea una nueva tabla de Visual FoxPro.
CREATE [FileName | ?]
CREATE [FileName | ?]
Parámetros
Parámetros
FileName
FileName

Especifica
Especifi caelelnombre
nombrede
delalatabla
tablaque
quedesea
deseacrear.
crear.

??

Presentaelelcuadro
Presenta cuadrode
dediálogo
diálogoCrear,
Crear,que
quelelepide
pideelel nombre
nombre para
para la la tabla
tabla queque
se se
va va a crear.
a crear.
Observaciones
Observaciones

En Visual
Visual FoxPro,
FoxPro, sisi hay
hay una
unabase
basede
dedatos
datosabierta
abiertacuando
cuandousted
ustedcrea una
crea tabla,
una dicha
tabla, tabla
dicha se se
tabla agregará
agregará
automáticamente a la base de datos.

En el sistema operativo de Windows, no puede crear una tabla con el nombre de un dispositivo de MS-DOS,
como CON, NUL, PRN y COM1. Debe evitar la utilización de guiones en el nombre de una tabla porque los
nombres de tabla con guiones no aparecen en la ventana Sesión de datos y pueden crear confusión con el
puntero de alias (->).

Una tabla se crea al definir el nombre, tipo y tamaño de cada campo. Una vez creada la estructura de la tabla,
puede agregar registros a la tabla.

Ejemplo
set default to z:
create alumnos

Vea también

ADD TABLE (Comando) | ALTER TABLE - SQL (Comando) | CREATE DATABASE (Comando) | CREATE TABLE - SQL
(Comando) | MODIFY STRUCTURE (Comando)
USE (Comando)
USE (Comando)
Abre una tabla y sus archivos de índice asociados, o una vista SQL.
USE
Abre[[DatabaseName!]Table | SQLViewName
una tabla y sus archivos de índice |asociados,
?] [IN nWorkArea
o una| cTableAlias]
vista SQL. [ONLINE] [ADMIN] [AGAIN] [NOREQUERY
[nDataSessionNumber]] [NODATA] [INDEX IndexFileList | ? [ORDER [nIndexNumber
USE [[DatabaseName!]Table | SQLViewName | ?] [IN nWorkArea | cTableAlias] | IDXFileName
[ONLINE] | [TAG][NOREQUERY
[ADMIN] [AGAIN] TagName
[OF CDXFileName] [ASCENDING
[nDataSessionNumber]] [NODATA]| DESCENDING]]]] [ALIAS
[INDEX IndexFileList | ? cTableAlias] [EXCLUSIVE]
[ORDER [nIndexNumber [SHARED] [NOUPDATE]
| IDXFileName | [TAG] TagName
[CONNSTRING [ASCENDING| (m.nStatementHandle)
cConnectionString
[OF CDXFileName] | DESCENDING]]]] ] [ALIAS cTableAlias] [EXCLUSIVE] [SHARED] [NOUPDATE]
[CONNSTRING
Parámetros cConnectionString | (m.nStatementHandle) ]
Parámetros
[DatabaseName!]TableName
[DatabaseName!]TableName
Especifica el nombre de la tabla que se va a abrir. Puesto que los espacios en blanco son importantes
en los nombres
Especifi ca el nombre de archivo
de lade Microsoft
tabla que seWindows 98Puesto
va a abrir. y posteriores,
que losevite usar espacios
espacios en blanco adicionales en
son importantes
TableName.
en los nombres Si unde nombre
archivo dede
tabla contiene
Microsoft espacios,98escríbalo
Windows entre comillas
y posteriores, (“ “espacios
evite usar o ‘ ‘) adicionales en
TableName. Si un nombre de tabla contiene espacios, escríbalo entre comillas (“ “ o ‘ ‘)
Para abrir una tabla fuera de la base de datos actual, identifique la tabla con el nombre de la base de
Para abrir
datos, con una
un signotabladefuera de la base(!)de
exclamación datos
para actual,
separar identifique
el nombre de lalabase
tabladecon el nombre
datos del nombre de ladebase
la de
datos,Sicon
tabla. un signo
no identifi de exclamación
ca una tabla con un(!) para separar
nombre de baseelde nombre de la baseVisual
datos, Microsoft de datos
FoxPro delsólo
nombre
podráde la
tabla.lasSi tablas
abrir no identifi
de lacabase
unadetabla conactual.
datos un nombre de basededeladatos,
Si el nombre base deMicrosoft
datos, elVisual
nombre FoxPro
de lasólo podrá
tabla
oabrir
amboslas tablas
contienen de la base deescriba
espacios, datos actual. Si eldenombre
el nombre la basede
de ladatos
basey de datos, elde
el nombre nombre
la tablade la tabla
entre
o ambos(“ contienen
comillas “ o ‘ ‘) espacios, escriba el nombre de la base de datos y el nombre de la tabla entre
comillas (“ “ o ‘ ‘)
?
?
Muestra el cuadro de diálogo Uso, que le permite elegir una tabla para abrirla.
Muestra el cuadro de diálogo Uso, que le permite elegir una tabla para abrirla.
IN nWorkArea
IN nWorkArea
Especifica el área de trabajo en la que se abre la tabla. Puede cerrar una tabla de un área de trabajo
Especifica el área
determinada, de trabajo
ejecutando en lalaque
USE con se abre
cláusula IN ylaeltabla.
númeroPuede cerrar
del área de una tabla de un área de trabajo
trabajo.
determinada, ejecutando USE con la cláusula IN y el número del área de trabajo.
La cláusula IN admite 0 como área de trabajo. Al incluir 0, se abrirá una tabla en el área de trabajo
La cláusula IN admite 0 como área de trabajo. Al incluir 0, se abrirá una tabla en el área de trabajo
que tenga el número más bajo. Por ejemplo, si hay tablas abiertas en las áreas de trabajo de 1 a 10, el
que tenga el número más bajo. Por ejemplo, si hay tablas abiertas en las áreas de trabajo de 1 a 10, el
siguiente comando abrirá la tabla customer en el área de trabajo 11:
siguiente comando abrirá la tabla customer en el área de trabajo 11:
USE customer IN 0
USE customer IN 0
IN cTableAlias
IN cTableAlias
Especifi
Especifica
caque
quelalatabla
tablaseseabre
abreenen
elel
área dede
área trabajo dede
trabajo unauna
tabla queque
tabla estáestá
abierta actualmente.
abierta El alias
actualmente. El alias
de la tabla abierta se especifi ca con cTableAlias.
de la tabla abierta se especifica con cTableAlias.
Si
Siomite
omitenWorkArea
nWorkAreay ycTableAlias,
cTableAlias,la la
tabla sese
tabla abrirá enen
abrirá el área de de
el área trabajo seleccionada
trabajo actualmente.
seleccionada actualmente.
AGAIN
AGAIN

Para
Para abrir
abriruna tabladedeforma
unatabla formasimultánea enen
simultánea varias áreas
varias de de
áreas trabajo, puede
trabajo, realizar
puede alguna
realizar de las
alguna de las
acciones
accionessiguientes:
siguientes:
•• Seleccionar
Seleccionarotra
otraárea
áreadedetrabajo y ejecutar
trabajo USEUSE
y ejecutar concon
el nombre de la
el nombre detabla y la ycláusula
la tabla la cláusula
AGAIN.
AGAIN.

•• Ejecutar
EjecutarUSE
USEconconelelnombre
nombre dede
la la
tabla y lay cláusula
tabla AGAIN,
la cláusula y especifi
AGAIN, car un
y especifi carárea de trabajo
un área de trabajo
distinta
distintacon
conlalacláusula IN.IN.
cláusula

Cuandovuelva
Cuando vuelvaaaabrir
abriruna
unatabla
tablaenen otra
otra área
área dede trabajo,
trabajo, la tabla
la tabla de de la nueva
la nueva áreaárea de trabajo
de trabajo tomará
tomará
losatributos
los atributosde
delalatabla
tabladel
delárea
área
dede trabajo
trabajo original.
original. PorPor ejemplo,
ejemplo, si lasitabla
la tabla se abre
se abre parapara acceso
acceso de sólo
de sólo
lecturaooexclusivo,
lectura exclusivo,y ysesevuelve
vuelvea abrir
a abrirenen otra
otra área
área dede trabajo,
trabajo, la tabla
la tabla se abrirá
se abrirá concon el mismo
el mismo tipo tipo
de de
acceso en la nueva área de trabajo.

Los archivos de índice abiertos para la tabla original estarán disponibles para la tabla que vuelva a
abrir si no abre ningún índice al abrir de nuevo la tabla. El orden de índice se establecerá en 0 en las
áreas de trabajo donde vuelva a abrir la tabla.

Puede abrir índices que no estuvieran abiertos en la tabla original. El orden de índice se establece en
0 para la tabla original.

A una tabla abierta de nuevo se le asigna el alias predeterminado del área de trabajo. Puede incluir un
alias cada vez que abra una tabla en varias áreas de trabajo, siempre y cuando los alias sean únicos.

En Visual FoxPro para Windows, al volver a abrir una tabla en otra área de trabajo no se consume
ningún controlador de archivo adicional.
NOREQUERY [nDataSessionNumber]

Especifica que los datos de una vista SQL remota no se vuelvan a descargar. NOREQUERY solamente
está disponible para vistas SQL y se suele utilizar cuando se vuelve a abrir una vista SQL, incluyendo la
cláusula AGAIN. Al incluir la cláusula NOREQUERY se mejora el rendimiento de grandes conjuntos de
datos porque no es necesario volver a descargar los datos.
nDataSessionNumber puede incluirse para especificar que los datos para una vista SQL remota de
una sesión de datos determinada no se descarguen de nuevo. Si se omite nDataSessionNumber, los
datos no se descargarán para la vista abierta en la sesión de datos actual.

Para obtener información adicional acerca de la cláusula NOREQUERY, vea Crear vistas.
NODATA

Especifica que sólo se descargue la estructura de una vista SQL. Los datos de la vista SQL no se
descargan. NODATA es el método más rápido de determinar la estructura de una vista SQL.
Para obtener más información acerca de la cláusula NODATA, vea Crear vistas.
INDEX IndexFileList

Especifica un conjunto de índices que se deben abrir junto con la tabla. Si una tabla tiene un archivo
de índice compuesto estructural, el archivo de índice se abrirá automáticamente con la tabla.
IndexFileList puede contener cualquier combinación de nombres de archivos de índice .idx de una
sola entrada y .cdx de entrada compuesta. No necesita incluir las extensiones de los nombres de los
archivos de índice, a no ser que haya archivos .idx y .cdx con el mismo nombre en la lista de archivos.

El archivo de índice cuyo nombre aparezca el primero en la lista de archivos de índice será el archivo
de índice de control, y controlará cómo se tiene acceso y se muestran los registros de la tabla. Si el
primer archivo de índice es un archivo de índice compuesto .cdx, se mostrarán los registros de la tabla
y se tendrá acceso a ellos en el orden físico de los registros.
INDEX ?

Muestra el cuadro de diálogo Abrir con una lista de archivos de índice disponibles entre los que puede
elegir.

ORDER [nIndexNumber]

Especifica una etiqueta de archivo de índice .cdx compuesto o un archivo .idx de índice de una sola
entrada de control principal distinto del primer archivo de índice o de la primera etiqueta de índice
especificados en IndexFileList.
Los archivos de índice .idx se numeran primero en el orden en que aparecen en la lista de archivos de
índice.
Los Las etiquetas
archivos de los
de índice .idx archivos primero
se numeran de índiceencompuesto
el orden enestructural
que aparecen (si en
existe alguno)
la lista se numeran
de archivos de
entonces
índice. Lasen el ordende
etiquetas enlosque se crearon
archivos las etiquetas.
de índice compuesto Por último, las etiquetas
estructural de todosselos
(si existe alguno) archivos de
numeran
índice compuesto
entonces en el ordenindependientes
en que se crearon se las
numeran en Por
etiquetas. el orden enlas
último, que se crearon.
etiquetas También
de todos puede utilizar
los archivos de
índice compuesto
SET ORDER independientes
para especifi se numeran
car el archivo de índiceen oellaorden en que
etiqueta de se crearon.
control. VeaTambién
SET ORDERpuede utilizar
para obtener
SET
másORDER para especifi
información acercacar deellaarchivo de índice
numeración o la etiqueta
de archivos de control.
y etiquetas de Vea SET ORDER para obtener
índice.
más información acerca de la numeración de archivos y etiquetas de índice.
Si nIndexNumber es 0, los registros de la tabla se mostrarán y se tendrá acceso a ellos en el orden
Si nIndexNumber
físico es 0, ylos
de los registros, losregistros
registrosdepermanecerán
la tabla se mostrarán y se
abiertos. La tendrá
inclusiónacceso a ellos 0enpermitirá
de ORDER el orden que
físico
todosde loslos registros,
archivos deyíndice
los registros
abiertospermanecerán
se actualicenabiertos.
mientrasLaseinclusión
presentan delos
ORDER 0 permitirá
registros que por
ordenados
todos los archivos
el número de índice
de registro. abiertos
Incluir ORDERsesinactualicen mientrasesseidéntico
nIndexNumber presentan los registros
a incluir ORDERordenados
0. por
el número de registro. Incluir ORDER sin nIndexNumber es idéntico a incluir ORDER 0.
ORDER [IDXFileName]
ORDER [IDXFileName]
Especifica un archivo de índice .idx de una sola entrada como archivo de índice de control principal.
Especifica un archivo de índice .idx de una sola entrada como archivo de índice de control principal.
ORDER [TAG TagName] [OF CDXFileName]
ORDER [TAG TagName] [OF CDXFileName]
Especifica una etiqueta de control principal en un archivo de índice .cdx compuesto. El nombre
Especifica una etiqueta de control principal en un archivo de índice .cdx compuesto. El nombre
de la etiqueta puede ser de un archivo de índice compuesto estructural o de cualquier archivo de
de la etiqueta puede ser de un archivo de índice compuesto estructural o de cualquier archivo de
índice compuesto que esté abierto. Si existen nombres de etiqueta idénticos en los archivos de
índice compuesto que esté abierto. Si existen nombres de etiqueta idénticos en los archivos de
índice compuesto abiertos, incluya OF CDXFileName y especifique el nombre del archivo de índice
índice compuesto abiertos, incluya OF CDXFileName y especifique el nombre del archivo de índice
compuesto que contiene la etiqueta deseada.
compuesto que contiene la etiqueta deseada.
ASCENDING
ASCENDING
Especifica
Especifi caque
quesesetiene
tieneacceso
accesoy ysese muestran
muestran loslos registros
registros de de la tabla
la tabla en orden
en orden ascendente.
ascendente.

DESCENDING
DESCENDING

Especifica
Especifi caque
quesesetiene
tieneacceso
accesoy ysese muestran
muestran loslos registros
registros de de la tabla
la tabla en orden
en orden descendente.
descendente.
La inclusión
La inclusióndedeASCENDING
ASCENDINGo oDESCENDING
DESCENDING nono cambia
cambia el archivo
el archivo o laoetiqueta
la etiqueta de índice:
de índice: solamente
solamente
alteraelelorden
altera ordenen
enque
quesesemuestran
muestran y se
y se tiene
tiene acceso
acceso a los
a los registros.
registros.
cTableAlias
ALIAS cTableAlias

Creaun
Crea unalias
aliaspara
paralalatabla.
tabla.Puede
Puede hacer
hacer referencia
referencia a una
a una tabla
tabla porpor su alias
su alias en comandos
en los los comandos y funciones
y funciones
querequieren
que requierenooadmiten
admitenun unalias.
alias.
Cuando
Cuandose seabre
abreuna
unatabla,
tabla,seseleleasigna
asigna automáticamente
automáticamente unun alias, queque
alias, es el
esnombre de ladetabla
el nombre si nosiseno se
la tabla
incluye
incluyeALIAS.
ALIAS.Puede
Puedecrear
crearununalias nuevo
alias nuevo o distinto
o distintopara la tabla
para si incluye
la tabla ALIAS.
si incluye En Visual
ALIAS. FoxPro,
En Visual un un
FoxPro,
alias
aliaspuede
puedecontener
contenerhasta
hasta254
254letras, dígitos
letras, o signos
dígitos dede
o signos subrayado,
subrayado, y debe comenzar
y debe por por
comenzar una una
letraletra
o o
un
unsigno
signodedesubrayado.
subrayado.EnEnlas
lasdemás
demás versiones
versiones dede
FoxPro, loslos
FoxPro, alias pueden
alias pueden contener como
contener máximo
como máximo10 10
letras,
letras,dígitos
dígitosoosignos
signosde
desubrayado,
subrayado, y deben
y deben comenzar
comenzar porporunaunaletra o un
letra o signo de subrayado.
un signo de subrayado.

Se
Seasigna
asignaautomáticamente
automáticamenteununalias predeterminado
alias cuando
predeterminado cuando abre unauna
abre solasola
tabla de forma
tabla simultánea
de forma simultánea
en
en varias
variasáreas
áreasde
detrabajo
trabajocon
conAGAIN
AGAINy no sese
y no especifi ca ca
especifi ununalias al abrir
alias la tabla
al abrir en cada
la tabla áreaárea
en cada de de
trabajo.
trabajo.
EXCLUSIVE
EXCLUSIVE
Abre
Abrelalatabla
tablapara
parauso
usoexclusivo
exclusivoenen
una red.
una Para
red. obtener
Para más
obtener información
más acerca
información del del
acerca uso uso
exclusivo de de
exclusivo
tablas, vea SET EXCLUSIVE.
tablas, vea SET EXCLUSIVE.

SHARED
SHARED
Abre una tabla para uso compartido en una red. SHARED permite abrir una tabla para uso compartido,
incluso cuando EXCLUSIVE está establecido en ON.

NOUPDATE

Impide realizar cambios en la tabla y en su estructura.


Observaciones

Si se ejecuta USE sin un nombre de tabla y está abierto un archivo de tabla en el área de trabajo actual, la tabla
se cerrará. También se cerrará la tabla cuando se abra otra tabla en la misma área de trabajo. No puede tener
abierta más de una tabla a la vez en una misma área de trabajo.

Ejemplo
use
use alumnos
use z:\alumnos
Vea también

CREATE | CREATE SQL VIEW | CREATE TABLE - SQL | CREATEOFFLINE() | DBF() | INDEX | USED() | Crear vistas | SET
EXCLUSIVE

APPEND (Comando)

Agrega uno o más registros nuevos al final de una tabla.


APPEND [BLANK] [IN nWorkArea | cTableAlias] [NOMENU]
Parámetros
BLANK

Agrega un registro en blanco al final de la tabla activa. Visual FoxPro no abre ninguna ventana de
edición cuando usted ejecuta APPEND BLANK.
Es posible modificar los nuevos registros con BROWSE, CHANGE o EDIT.
IN nWorkArea

Especifica el área de trabajo de la tabla a la que se agrega el nuevo registro.

IN cTableAlias

Especifica el alias de la tabla a la que se agrega el nuevo registro.


Si omite nWorkArea y cTableAlias, se agregará un nuevo registro a la tabla en el área de trabajo
seleccionada actualmente. Si ejecuta APPEND, se agregará un registro en blanco a la tabla especificada
mediante nWorkArea o cTableAlias, y la tabla se seleccionará automáticamente. Si ejecuta APPEND
BLANK, se agregará un registro en blanco a la tabla especificada con nWorkArea o cTableAlias, y la
tabla no se seleccionará.
NOMENU

Especifica que se eliminará el título de menú Tabla de la barra de menús del sistema, lo que impide
efectuar cambios en el formato de la ventana de edición.
Observaciones

El cuadro de diálogo Abrir aparece cuando ejecuta APPEND o APPEND BLANK y no hay una tabla abierta en el
área de trabajo activa. Elija una tabla para agregar registros.

APPEND abre una ventana de edición para que pueda escribir datos en uno o varios registros nuevos. Cuando
agregue un nuevo registro, Visual FoxPro actualizará cualquier índice que haya abierto.

Ejemplo
append blank && Adiciona un registro en blanco
append && Adiciona un registro y lo edita en blanco

Vea también

APPEND FROM ARRAY | BROWSE | CHANGE | EDIT | INSERT - SQL | REPLACE

BOF() (Función)

Determina si el puntero de registro está situado al principio de una tabla.


BOF([nWorkArea | cTableAlias])
Valores devueltos

Lógico

Parámetros
nWorkArea

Especifica el número del área de trabajo para una tabla abierta en otra área de trabajo.

cTableAlias

Especifica el alias para una tabla abierta en otra área de trabajo.


Si la tabla cuya condición de principio de archivo desea probar está abierta en un área de trabajo
distinta de la seleccionada actualmente, utilice estos argumentos opcionales para especificar el
número del área de trabajo o el alias para la tabla. Si no hay ninguna tabla abierta en el área de trabajo
especificada, BOF() devolverá Falso (.F.).

Observaciones

Utilice BOF() para probar la condición de principio de archivo de una tabla. BOF() devuelve Verdadero (.T.) si ha
intentado mover el puntero de registro a una posición anterior al primer registro de la tabla.

Vea también

EOF() | FEOF() (Función) | _FEOF() (Rutina de biblioteca API)

EOF() (Función)

Determina si el puntero de registro está situado o no más allá del último registro de la tabla actual o
especificada.
EOF([nWorkArea | cTableAlias])
Valores devueltos

Logical

Parámetros
nWorkArea

Especifica el número de área de trabajo de la tabla.

cTableAlias

Especifica el alias de la tabla.


EOF() devuelve falso (.F.) si no está abierta una tabla en un área de trabajo que especifique.

Si no especifica un alias de área de trabajo, se probará la condición de final de archivo en la tabla


abierta en el área de trabajo seleccionada.

Observaciones

EOF() devuelve verdadero (.T.) si el puntero de registro alcanza el final del archivo de tabla (EOF). El final de la
tabla se alcanza cuando el puntero del registro transfiere el último registro de la tabla. Por ejemplo, cuando se
ejecuta FIND, LOCATE o SEEK sin éxito, Visual FoxPro mueve el puntero de registro hasta después del último
registro, y EOF() devuelve verdadero (.T.). EOF() devuelve falso (.F.) si el puntero del registro no está al final de
la tabla.

Vea también

BOF() | GO | GOTO | SKIP


Si la tabla cuya condición de principio de archivo desea probar está abierta en un área de trabajo
distinta de cuya
Si la tabla la seleccionada
condición actualmente,
de principio de utilice estosdesea
archivo argumentos
probar opcionales
está abiertapara especifi
en un áreacar
de el
trabajo
número
distintadeldeárea de trabajo o el actualmente,
la seleccionada alias para la tabla. Si noestos
utilice hay ninguna tabla abierta
argumentos en el área
opcionales paradeespecifi
trabajo car el
especifi
número cada, BOF()de
del área devolverá
trabajo oFalso (.F.).para la tabla. Si no hay ninguna tabla abierta en el área de trabajo
el alias
especificada, BOF() devolverá Falso (.F.).
Observaciones
Observaciones
Utilice BOF() para probar la condición de principio de archivo de una tabla. BOF() devuelve Verdadero (.T.) si ha
Utilice BOF()
intentado moverparaelprobar
punterolade
condición
registro ade principio
una posiciónde archivo
anterior al de una registro
primer tabla. BOF()
de ladevuelve
tabla. Verdadero (.T.) si ha
intentado mover el puntero de registro a una posición anterior al primer registro de la tabla.
Vea también
Vea también
EOF() | FEOF() (Función) | _FEOF() (Rutina de biblioteca API)
EOF() | FEOF() (Función) | _FEOF() (Rutina de biblioteca API)
EOF() (Función)
EOF() (Función)
Determina
Determina sisi elel puntero
punterodederegistro
registroestá situado
está o no
situado másmás
o no allá allá
del del
último registro
último de lade
registro tabla actualactual
la tabla o o
especificada.
especificada.
EOF([nWorkArea
EOF([nWorkArea| |cTableAlias])
cTableAlias])
Valores
Valoresdevueltos
devueltos

Logical
Logical

Parámetros
Parámetros
nWorkArea
nWorkArea

Especificacaelelnúmero
Especifi númerodede área
área dede trabajo
trabajo de de la tabla.
la tabla.
cTableAlias
cTableAlias
Especifica el alias de la tabla.
Especifica el alias de la tabla.
EOF() devuelve falso (.F.) si no está abierta una tabla en un área de trabajo que especifique.
EOF() devuelve falso (.F.) si no está abierta una tabla en un área de trabajo que especifique.
Si no especifica un alias de área de trabajo, se probará la condición de final de archivo en la tabla
Siabierta
no especifi
en elca un de
área alias de área
trabajo de trabajo, se probará la condición de final de archivo en la tabla
seleccionada.
abierta en el área de trabajo seleccionada.
Observaciones
Observaciones
EOF() devuelve verdadero (.T.) si el puntero de registro alcanza el final del archivo de tabla (EOF). El final de la
EOF() devuelve
tabla se alcanzaverdadero
cuando el(.T.) si el puntero
puntero de registro
del registro alcanza
transfi el final registro
ere el último del archivo
de de tabla (EOF).
la tabla. El final de
Por ejemplo, la se
cuando
ejecuta
tabla FIND, LOCATE
se alcanza cuandooelSEEK
puntero sin del
éxito, Visualtransfi
registro FoxPro
ere mueve
el últimoelregistro
punterodede la registro
tabla. Porhasta después
ejemplo, cuando delseúltimo
registro,FIND,
ejecuta y EOF() devuelve
LOCATE o SEEK verdadero
sin éxito, (.T.).
VisualEOF() devuelve
FoxPro muevefalso (.F.) si de
el puntero el puntero del registro
registro hasta después nodel
está al final de
último
la tabla.
registro, y EOF() devuelve verdadero (.T.). EOF() devuelve falso (.F.) si el puntero del registro no está al final de
la tabla.
Vea también
Vea también
BOF() | GO | GOTO | SKIP
BOF() | GO | GOTO | SKIP
GO | GOTO (Comando)
GO | GOTO
Coloca (Comando)
el puntero de registro en el número de registro especificado de una tabla.
GO [RECORD]
Coloca nRecordNumber
el puntero [INelnWorkArea
de registro en número de| IN cTableAlias]
registro especificado de una tabla.
GO [RECORD] nRecordNumber [IN nWorkArea | IN cTableAlias]
–O bien–
GO TOP | BOTTOM [IN nWorkArea | IN cTableAlias]
–O bien–
GOTO [RECORD] nRecordNumber [IN nWorkArea | IN cTableAlias]
–O bien–
GOTO TOP | BOTTOM [IN nWorkArea | IN cTableAlias]
Parámetros
RECORD nRecordNumber

Especifica el número de registro físico al que desea mover el puntero de registro. Puede omitir por
completo GO o GOTO y especificar simplemente el número de registro. Si especifica solamente el
número de registro, podrá mover el puntero solamente en el área de trabajo actual.

IN nWorkArea

Especifica el área de trabajo de la tabla en la cual se mueve el puntero de registro.

IN cTableAlias

Especifica el alias de la tabla en la cual se mueve el puntero de registro.

TOP

Sitúa el puntero de registro en el primer registro de la tabla. Si la tabla tiene en uso un índice
ascendente, el primer registro será el registro con el valor clave más bajo. Si el índice está en orden
descendente, el primer registro será el registro con el valor clave más alto.

BOTTOM

Sitúa el puntero de registro en el último registro de la tabla. Si la tabla tiene activo un índice ascendente,
el último registro será aquél con el valor de clave más elevado. Si el índice está en orden descendente,
el último registro será el que tenga el menor valor de clave.
Observaciones

GO y GOTO pueden utilizarse indistintamente. Estos comandos actúan sobre la tabla del área de trabajo actual
a menos que especifique otra área de trabajo con la cláusula IN.

Ejemplo
go top
go bottom
go 5
skip 1
? recno()
skip -2
skip
Vea también

RECNO() | SELECT | SKIP

SKIP (Comando)
Mueve el puntero de registro hacia adelante o hacia atrás en una tabla.
SKIP [nRecords] [IN nWorkArea | cTableAlias]
Parámetros
nRecords

Especifica el número de registros que hay que mover el puntero.


Si ejecuta SKIP sin nRecords, el puntero avanzará al siguiente registro. El puntero de registro se mueve
hacia el final del archivo nRecords si nRecords tiene un valor positivo. El puntero de registro se moverá
hacia el principio del archivo nRecords si nRecords tiene un valor negativo.

Si el puntero de registro está colocado en el último registro de una tabla y se ejecuta SKIP sin
argumentos, RECNO() devolverá un valor superior en uno al número de registros de la tabla y EOF()
devolverá verdadero (.T.). Si el puntero de registro está colocado en el primer registro de una tabla y
se ejecuta SKIP -1, RECNO() devolverá 1 y BOF() devolverá (.T.).
IN nWorkArea | cTableAlias

Mueve el puntero de registro en una tabla de un área de trabajo específica. nWorkArea especifica el
número del área de trabajo y cTableAlias especifica el alias de una tabla o de un área de trabajo.
Observaciones

Si la tabla tiene una etiqueta de índice de control principal o un archivo de índice, SKIP mueve el puntero de
registro al registro determinado por la secuencia de índice.

Ejemplo
clear
skip 4
? recno()
go bottom
skip -5
? recno()
Vea también

GO | GOTO | SET SKIP | CLEAR (Comandos)

RECNO() (Función)

Devuelve el número del registro actual de la tabla actual o la especificada.


RECNO([nWorkArea | cTableAlias])
Valores devueltos

Numérico

Parámetros
nWorkArea

Especifica el número del área de trabajo para una tabla abierta en otra área de trabajo. Si no está
abierta ninguna tabla en el área de trabajo que especifica, RECNO() devolverá cero.

cTableAlias
Especifica el alias para una tabla abierta en otra área de trabajo.
Observaciones

El registro actual es el registro en el cual se encuentra el puntero de registro.

RECNO() devuelve números negativos para registros anexados en un búfer de tablas.

RECNO() devuelve un valor que es el número de registros de la tabla más uno si el puntero de registro se
encuentra mas allá del último registro de la misma. RECNO() devuelve 1 si el puntero de registro se encuentra
antes del primer registro de la tabla. Si la tabla no tiene registros, EOF() siempre devolverá verdadero (.T.).

Ejecutar RECNO() sin los argumentos opcionales nWorkArea o cTableAlias devuelve el número de registro actual
de la tabla situada en el área de trabajo seleccionada actualmente.

Si ha ejecutado SEEK sin éxito en una tabla indizada, puede especificar 0 para que nWorkArea utilice la lógica
de “búsqueda cercana” para devolver el número del registro más similar. RECNO(0) devuelve 0 si no puede
encontrarse ninguna coincidencia. Visual FoxPro generará un mensaje de error si ejecuta GO RECNO(0) y no se
encuentra ninguna coincidencia.

Ejemplo
use alumnos
skip 4
? recno()
Vea también

GO|GOTO | RECCOUNT() | RECSIZE() | SEEK | SKIP

RECCOUNT() (Función)

Devuelve el número de registros de la tabla actual o especificada.


RECCOUNT([nWorkArea | cTableAlias])
Valores devueltos

Numérico

Parámetros
nWorkArea

Especifica el número del área de trabajo para una tabla abierta en otra área de trabajo.
Si no hay ninguna tabla abierta en el área de trabajo especificada, RECCOUNT() devolverá cero.
cTableAlias

Especifica el alias para una tabla abierta en otra área de trabajo.


Observaciones

El valor devuelto por RECCOUNT() no se ve afectado por SET DELETED y SET FILTER.

RECCOUNT() sin los argumentos opcionales nWorkArea o cTableAlias devuelve el número de registros de la
tabla del área de trabajo seleccionada actualmente.

Ejemplo
use alumnos
use alumnos
?? reccount()
reccount()
use
use
también
Vea también

RECNO() || RECSIZE()
RECNO() RECSIZE()| |SET
SETDELETED
DELETED| SET
| SET FILTER
FILTER

LOCATE (Comando)
LOCATE (Comando)

Busca secuencialmente
Busca secuencialmenteen
enlalatabla
tablaelelprimer
primer registro
registro que
que coincida
coincida concon la expresión
la expresión lógica
lógica especifi
especificada.cada.
LOCATE [FOR
LOCATE [FORlExpression1] [Scope] [WHILE]
lExpression1] [Scope] [WHILE][NOOPTIMIZE]
[NOOPTIMIZE]
Parámetros
Parámetros
lExpression1
FOR lExpression1

LOCATEbusca
LOCATE buscasecuencialmente
secuencialmenteenen
la la tabla
tabla actual
actual el primer
el primer registro
registro queque coincida
coincida con con la expresión
la expresión
lógicalExpression1.
lógica lExpression1.
Rushmore optimizará
Rushmore optimizaráuna
unaconsulta
consultacreada
creada
concon LOCATE
LOCATE FORFOR si lExpression1
si lExpression1 es una
es una expresión
expresión
optimizable.Para
optimizable. Paraobtener
obtenerelelmáximo
máximo rendimiento,
rendimiento, utilice
utilice unauna expresión
expresión optimizable
optimizable en laen la cláusula
cláusula
FOR.
FOR.

Sidesea
Si deseaobtener
obtenermás másinformación,
información, vea
vea SET
SET OPTIMIZE
OPTIMIZE y Utilizar
y Utilizar optimización
optimización de consultas
de consultas Rushmore
Rushmore
paraacelerar
para acelerarelelacceso
accesodededatos.
datos.
Scope
Scope

Especifica
Especifi caelelintervalo
intervalodedeobjetos
objetosque
quesese buscará.
buscará. Solamente
Solamente se buscarán
se buscarán los registros
los registros incluidos
incluidos en en
elintervalo.
el intervalo.LasLascláusulas
cláusulasdedealcance
alcance son:
son: ALL,
ALL, NEXT
NEXT nRecords,
nRecords, RECORD
RECORD nRecordNumber
nRecordNumber y REST.
y REST. Los Los
comandosque
comandos queincluyen
incluyenScope
Scope sólo
sólo actúan
actúan sobre
sobre la tabla
la tabla deldel
áreaárea de trabajo
de trabajo activa.
activa.
Elalcance
El alcancepredeterminado
predeterminadodede LOCATE
LOCATE eses
ALLALL (todos
(todos loslos registros).
registros).
WHILE lExpression2
WHILE lExpression2

Especifica
Especifi cauna
unacondición
condiciónpor
porla lacual
cual
sese buscan
buscan loslos registros
registros siempre
siempre y cuando
y cuando la expresión
la expresión lógica
lógica
lExpression2dé
lExpression2 décomo
comoresultado
resultado verdadero
verdadero (.T.).
(.T.).

NOOPTIMIZE
NOOPTIMIZE

Desactivalalaoptimización
Desactiva optimizaciónRushmore
Rushmoredede LOCATE.
LOCATE.
Sidesea
Si deseaobtener
obtenermás másinformación,
información, vea
vea SET
SET OPTIMIZE
OPTIMIZE y Utilizar
y Utilizar optimización
optimización de consultas
de consultas Rushmore
Rushmore
paraacelerar
para acelerarelelacceso
accesodededatos.
datos.

Observaciones
Observaciones

es necesario
No es necesarioque
quelalatabla
tablaesté
estéindizada.
indizada.

utiliza el
Si utiliza el comando
comandoLOCATE
LOCATEsin
sinlalaexpresión
expresión FOR,
FOR, Visual
Visual FoxPro
FoxPro coloca
coloca el puntero
el puntero del del registro
registro en elen el primer
primer
registro
registro lógico.
lógico. Esto
Estoesesmás
másrápido
rápidoque queutilizar GOGO
utilizar TOPTOPcuando
cuandose se
utiliza un un
utiliza filtrofiltro
o cuando DELETED
o cuando DELETEDestá está
establecido
establecidoaaON. ON.

Si LOCATE
LOCATE encuentra
encuentraununregistro
registrocoincidente,
coincidente,podrá
podrá utilizar RECNO()
utilizar RECNO()parapara
devolver el número
devolver del registro
el número del registro
coincidente.
coincidente.SiSiseseencuentra
encuentraununregistro coincidente,
registro FOUND()
coincidente, FOUND() devolverá verdadero
devolverá (.T.) (.T.)
verdadero y EOF() devolverá
y EOF() falsofalso
devolverá
(.F.). Si
Si SET
SETTALK
TALKestá
estáestablecido
establecidoenenON,
ON,sese
mostrará
mostraráel número
el número deldel
registro coincidente.
registro coincidente.

Después
Después de
de que
queLOCATE
LOCATEencuentre
encuentreununregistro coincidente,
registro puede
coincidente, ejecutar
puede CONTINUE
ejecutar buscar
parapara
CONTINUE registros
buscar registros
coincidentes adicionales en el resto de la tabla. Cuando se ejecuta CONTINUE, se reanuda el proceso de
búsqueda a partir del registro que sigue inmediatamente al registro coincidente. Puede ejecutar CONTINUE
repetidamente hasta llegar al final del alcance o de la tabla.

Si no se encuentra ninguna coincidencia, RECNO() devolverá el número de registros de la tabla más uno,
FOUND() devolverá falso (.F.) y EOF() devolverá verdadero (.T.).

LOCATE y CONTINUE son específicos del área de trabajo actual. Si se selecciona otra área de trabajo, el proceso
de búsqueda original podrá continuarse cuando se vuelva a seleccionar el área de trabajo original.

Ejemplo

En el ejemplo siguiente se encuentran los registros correspondientes al alumno “Amparo”. A continuación se


muestra el número total.
use alumnos
set talk off
store 0 to contador && contador = 0
locate for “Amparo” $ nombre
do while found()
contador = contador + 1
? nombre
continue
enddo
? ‘Total alumnos que contienen Amparo en el nombre … ‘ + alltrim(str(contador))
Vea también

CONTINUE | EOF() | FIND | FOUND() | INDEXSEEK() | RECNO() | SEEK | SEEK() | SET OPTIMIZE

CONTINUE (Comando)

Continúa el comando LOCATE previo.


CONTINUE
Observaciones

CONTINUE se utiliza después de que LOCATE tenga éxito al encontrar un registro, para continuar la operación
de búsqueda. CONTINUE desplaza el puntero de registro al siguiente registro para el que la expresión lógica
especificada en el comando LOCATE previo dé como resultado verdadero (.T.).

CONTINUE puede repetirse hasta que se encuentre el final del archivo o hasta que se llegue al final del alcance
especificado en LOCATE.

Si CONTINUE tiene éxito al encontrar un registro, RECNO() devolverá el número del registro, FOUND() devolverá
el valor Verdadero (.T.) y EOF() devolverá el valor Falso (.F.).

Si CONTINUE no tiene éxito al buscar un registro, RECNO() devolverá el número de registros de la tabla más uno,
FOUND() devolverá Falso (.F.) y EOF() devolverá Verdadero (.T.).

Vea también

EOF() | FOUND() | LOCATE | SEEK

$ (Operador)

Devuelve verdadero (.T.) si una expresión de caracteres está contenida dentro de otra expresión de caracteres;
de lo contrario, devuelve falso (.F.).
cSearchFor $ cSearchIn
Valores devueltos

Lógico

Parámetros
cSearchFor

Especifica la expresión buscada en cSearchIn.

cSearchIn

Especifica la expresión en que se busca para comprobar si contiene cSearchFor.


Si en cSearchFor se encuentra cSearchIn, $ devolverá verdadero (.T.); de lo contrario, devolverá falso
(.F.). cSearchFor y cSearchIn pueden ser variables o elementos de matriz de tipo carácter, campos de
tipo carácter, literales de cadena de caracteres o campos memo de cualquier longitud.

Los campos memo pueden manipularse de la misma forma que las expresiones de caracteres, los
campos de tablas, las variables o los elementos de matriz. Por ejemplo, si MEMO_FLD es un campo
memo, lo siguiente será aceptable:
LIST FOR ‘FOX’ $ UPPER(memo_fld)
Observaciones

Si no se encuentra la expresión de caracteres, se devolverá falso (.F.). El operador $ distingue mayúsculas de


minúsculas y no es optimizable mediante Rushmore.

Ejemplo

En el ejemplo siguiente se encuentran los registros correspondientes al alumno “Amparo”. A continuación se


muestra el número total.
use alumnos
set talk off
store 0 to contador && contador = 0
locate for “Amparo” $ nombre
do while found()
contador = contador + 1
? nombre
continue
enddo
? ‘Total alumnos que contienen Amparo en el nombre … ‘ + alltrim(str(contador))
Vea también

% (Operador) | DELETE FILE (Comando) | CREATE TABLE - SQL (Comando) | Utilizar optimización de consultas
Rushmore para acelerar el acceso de datos | AT() | Operadores | ATLINE() | RAT() | RATLINE() | OCCURS() | INLIST()
(Función)

DO WHILE ... ENDDO (Comando)

Ejecuta un conjunto de comandos dentro de un bucle condicional.


DO WHILE lExpression
Commands
[LOOP] [EXIT] ENDDO
Parámetros
lExpression

Especifica una expresión lógica cuyo valor determina si se debe ejecutar el conjunto de comandos
incluido entre DO WHILE y ENDDO. Siempre que lExpression dé como resultado verdadero (.T.), el
conjunto de comandos se ejecutará.

Commands

Especifica el conjunto de comandos de Visual FoxPro que se ejecutan siempre y cuando lExpression
dé como resultado verdadero (.T.).

LOOP

Devuelve el control del programa directamente a DO WHILE. LOOP se puede situar en cualquier lugar
entre DO WHILE y ENDDO.

EXIT

Transfiere el control del programa desde el interior del bucle DO WHILE hasta el primer comando
situado detrás de ENDDO. EXIT puede situarse en cualquier lugar entre DO WHILE y ENDDO.
Observaciones

Un conjunto de comandos situados entre DO WHILE y ENDDO se ejecuta siempre y cuando el valor de la
expresión lógica lExpression sea verdadero (.T.). Una instrucción DO WHILE debe tener su correspondiente
instrucción ENDDO.

Puede situar observaciones después de DO WHILE y ENDDO en la misma línea. Estos observaciones se pasan
por alto durante la compilación y ejecución del programa.

Ejemplo

En el ejemplo siguiente se encuentran los registros correspondientes al alumno “Amparo”. A continuación se


muestra el número total.
use alumnos
set talk off
store 0 to contador && contador = 0
locate for “Amparo” $ nombre
do while found()
contador = contador + 1
? nombre
continue
enddo
? ‘Total alumnos que contienen Amparo en el nombre … ‘ + alltrim(str(contador))
Vea también

DO CASE ... ENDCASE | FOR EACH ... ENDFOR | FOR ... ENDFOR | IF ... ENDIF | IIF() | SCAN ... ENDSCAN

FOUND() (Función)

Devuelve verdadero (.T.) si CONTINUE, FIND, INDEXSEEK(), LOCATE o SEEK tienen éxito.
FOUND([nWorkArea | cTableAlias])
Valores devueltos

Lógico

Parámetros
nWorkArea

Especifica el área de trabajo de la tabla sobre la cual FOUND() devuelve el valor indicando si ha tenido
éxito el último comando CONTINUE, FIND, INDEXSEEK(), LOCATE o SEEK.
FOUND() devuelve falso (.F.) si la tabla no esta abierta en el área de trabajo especificada.
cTableAlias

Especifica el alias de la tabla sobre la cual FOUND() devuelve el valor indicando si ha tenido éxito el
último comando CONTINUE, FIND, INDEXSEEK(), LOCATE, o SEEK.
Visual FoxPro genera un mensaje de error si especifica un alias de tabla que no existe.

Observaciones

FOUND() devuelve un valor lógico que indica si el comando mas recientemente ejecutado CONTINUE, FIND,
INDEXSEEK(), LOCATE o SEEK ha tenido éxito, o si el puntero de registro se ha movido en la tabla relacionada.
FOUND() devuelve verdadero (.T.) si la busqueda se ha realizado con éxito; en caso contrario FOUND() devuelve
falso (.F.).

Si se omiten los argumentos opcionales, FOUND() devuelve un valor indicando el éxito del último comando
CONTINUE, FIND, INDEXSEEK(), LOCATE o SEEK para la tabla abierta en el área de trabajo actual.
Sugerencia Esta función es útil para determinar si una tabla secundaria tiene un registro que coincide con el
registro primario.
Ejemplo

En el ejemplo siguiente se encuentran los registros correspondientes al alumno “Amparo”. A continuación se


muestra el número total.
use alumnos
set talk off
store 0 to contador && contador = 0
locate for “Amparo” $ nombre
do while found()
contador = contador + 1
? nombre
continue
enddo
? ‘Total alumnos que contienen Amparo en el nombre … ‘ + alltrim(str(contador))
Vea también

CONTINUE | EOF() | FIND | INDEXSEEK() | LOCATE | SEEK

STORE (Comando)

Almacena datos en una variable, en una matriz o en un elemento de matriz.


STORE eExpression TO VarNameList | ArrayNameList-or- VarName | ArrayName = eExpression
Parámetros
eExpression

Especifica una expresión cuyo valor se almacena en la variable, la matriz o el elemento de matriz. Si
no existe la variable, se crea y se inicializa en eExpression. Una matriz debe estar definida previamente
con DIMENSION. STORE sustituye el valor de una variable, matriz o elemento de matriz existente con
el valor nuevo.

VarNameList

Especifica una lista de variables o elementos de matriz en los que se almacena eExpression. Separe los
nombres o elementos de matriz con comas.

ArrayNameList

Especifica una lista de nombres de matrices existentes en las que se almacena eExpression. Separe
con comas el nombre de las matrices.
STORE inicializa cada elemento de las matrices con el valor especificado si SET COMPATIBLE está
establecido en OFF. STORE almacena el valor especificado en variables de memoria con los nombres
especificados si SET COMPATIBLE está establecido en ON y sobrescribe las matrices existentes que
tengan esos nombres.

Observaciones

Una alternativa a STORE es el signo igual (=). La variable, la matriz o el elemento de matriz debe estar a la
izquierda del signo igual, y su valor a la derecha.

Las fechas pueden almacenarse directamente en variables, matrices o elementos de matriz mediante llaves.
store {^1998-12-25} to gdxmas
El número máximo de variables o matrices que puede crear se muestra en el tema Capacidades del sistema.
El límite se puede aumentar o reducir en el archivo de configuración de Visual FoxPro. Para obtener más
información acerca de la configuración de Visual FoxPro, vea Personalizar el entorno de Visual FoxPro.

Ejemplo
store date() to gddate
store 50 to gnnumeric
store ‘hello’ to gccharacter
store .t. to gllogical
store $19.99 to gycurrency
dimension gamyarray(2,2)
set compatible off
store 2 to gamyarray
Vea también

DIMENSION | SET COMPATIBLE | Capacidades del sistema | Personalizar el entorno de Visual FoxPro

VAL() (Función)

Devuelve un valor numérico a partir de una expresión de caracteres compuesta por números. Puede usar VAL()
para convertir cadenas de caracteres devueltas por las funciones SYS() de Visual FoxPro en valores numéricos.
VAL(cExpression)
Parámetros
cExpression
Especifica una expresión de caracteres compuesta por un máximo de 16 números. Si en cExpression
Especifi ca una
se incluyen expresión
más de caracteres
de 16 números, compuesta por un máximo de 16 números. Si en cExpression
se redondeará.
se incluyen más de 16 números, se redondeará.
Si el primer carácter de cExpression es un signo de dolar ($), VAL() devuelve un valor moneda. En todas
Si
laseldemás
primersituaciones
carácter de cExpression es un
VAL() devuelve unsigno
valorde dolar ($), VAL() devuelve un valor moneda. En todas
numérico.
las demás situaciones VAL() devuelve un valor numérico.
Valores devueltos
Valores devueltos
Dato del tipo Numérico o Moneda. VAL() devuelve los números de la expresión de caracteres de izquierda a
Dato del hasta
derecha tipo Numérico o Moneda.
que encuentra VAL() devuelve
un carácter los números
no numérico. Se pasandepor
la expresión de caracteres
alto los espacios de izquierda
en blanco a
iniciales.VAL()
derecha hasta que encuentra un carácter no numérico. Se pasan por alto los espacios en blanco iniciales.VAL()
devuelve 0 si el primer carácter de la expresión de caracteres no es un número, un signo de dolar ($), un signo
devuelve
más (+) o 0unsi signo
el primer carácter
menos (-). de la expresión de caracteres no es un número, un signo de dolar ($), un signo
más (+) o un signo menos (-).
Ejemplo
Ejemplo
clear
clear
store ‘12’ to a
store
store‘12’
‘13’to
toab
store ‘13’ to b
? val(a) + val(b) && displays 25.00
?store
val(a)‘1.25e3’
+ val(b)to&&
c displays 25.00
store ‘1.25e3’&&
? 2 * val(c) todisplays
c 2500.00
? 2 * val(c) && displays 2500.00
Vea también
Vea también
SET DECIMALS | STR() | SYS() - Introducción a las funciones
SET DECIMALS | STR() | SYS() - Introducción a las funciones
STR() (Función)
STR() (Función)
Devuelve el carácter equivalente a una expresión numérica especificada.
Devuelve el carácter equivalente a una expresión numérica especificada.
STR(nExpression [, nLength [, nDecimalPlaces]])
STR(nExpression [, nLength [, nDecimalPlaces]])
Valores devueltos
Valores devueltos
Character
Character
Parámetros
Parámetros
nExpression
nExpression
Especifica la expresión numérica evaluada por STR().
Especifica la expresión numérica evaluada por STR().
nLength
nLength
Especifica la longitud de la cadena de caracteres devuelta por STR(). La longitud incluye un carácter
Especifica la longitud de la cadena de caracteres devuelta por STR(). La longitud incluye un carácter
para la coma decimal y otro por cada dígito a la derecha de la coma decimal.
para la coma decimal y otro por cada dígito a la derecha de la coma decimal.
STR() llena la cadena de caracteres con espacios al principio si especifica una longitud mayor que
STR() llena la cadena de caracteres con espacios al principio si especifica una longitud mayor que
el número de dígitos a la izquierda de la coma decimal. STR() devuelve una cadena de asteriscos,
el número de dígitos a la izquierda de la coma decimal. STR() devuelve una cadena de asteriscos,
que indica desbordamiento numérico, si especifica una longitud inferior al número de dígitos a la
que indica desbordamiento numérico, si especifica una longitud inferior al número de dígitos a la
izquierda de la coma decimal.
izquierda de la coma decimal.
Si nExpression es de tipo Numérico o Float, STR() devuelve un valor en notación científica si nLength
Si nExpression es de tipo Numérico o Float, STR() devuelve un valor en notación científica si nLength
es menor que el número de dígitos de nExpression. Si nExpression es un entero, STR() devuelve una
es menor que el número de dígitos de nExpression. Si nExpression es un entero, STR() devuelve una
cadena de asteriscos, que indica desbordamiento numérico, si nLength es menor que el número de
cadena de asteriscos, que indica desbordamiento numérico, si nLength es menor que el número de
dígitos de nExpression.
dígitos de nExpression.
Si no se incluye nLength, la longitud de la cadena de caracteres cambia de forma predeterminada a
Si no se incluye nLength, la longitud de la cadena de caracteres cambia de forma predeterminada a
10 caracteres.
nDecimalPlaces

Especifica el número de lugares decimales de la cadena de caracteres devuelta por STR(). Debe incluir
nLength para especificar el número de lugares decimales.
Si se especifican menos caracteres decimales de los que contiene nExpression, El valor devuelto se
redondeará.

Si no se incluye nDecimalPlaces, el valor predeterminado para lugares decimales es cero.

Ejemplo
clear
store 12345 to a
store 67890 to b
? str(a) + str(b) && displays 1234567890
? str(b) + str(a) && displays 6789012345
Vea también

VAL() | Crear expresiones de tipo Numérico | STRCONV() (Función)

ALLTRIM() (Función)

Elimina los espacios en blanco iniciales y finales de la expresión de caracteres especificada y devuelve la
expresión recortada como una cadena de caracteres.
ALLTRIM(cExpression)
Valores devueltos

Character

Parámetros
cExpression

Especifica la expresión de caracteres de la que se eliminan los espacios en blanco iniciales y finales.
Observaciones

ALLTRIM() se puede utilizar para asegurar que los espacios en blanco se eliminan de los datos escritos por un
usuario.

Ejemplo
clear
store “ Instituto “ to a
store “ Tecnico Educando a Colombia ” to b
? a + b && displays Instituto Tecnico Educando a Colombia
? len(a + b) && displays 44
? len(alltrim(a) + alltrim(b) && displays 36
? alltrim(a) + “ “ + alltrim(b) && diaplys Instituto Tecnico Educando a Colombia
Vea también

LTRIM() | RTRIM() | TRIM() | AFONT()

LTRIM() (Función)
Devuelve la expresión de caracteres especificada después de eliminar los espacios en blanco iniciales.
LTRIM(cExpression)
Valores devueltos

Character

Parámetros
cExpression

Especifica la expresión de caracteres en la cual LRTRIM() elimina los espacios en blanco iniciales.
Observaciones

Esta función es especialmente útil para eliminar los espacios en blanco iniciales que se insertan cuando se
utiliza STR() para convertir un valor numérico en una cadena de caracteres.

Ejemplo
clear
store “ Instituto “ to a
?a
? ltrim(a)
Vea también

ALLTRIM() | LEFT() | RIGHT() | RTRIM() | SUBSTR() | TRIM()

RTRIM() (Función)

Devuelve la expresión de caráacteres especificada con todos los espacios en blanco finales recortados.
RTRIM(cExpression)
Valores devueltos

Carácter (Character)

Parámetros
cExpression

Especifica la expresión de carácteres de la cual se deben recortar los espacios en blanco finales.
Observaciones

RTRIM() puede utilizarse para asegurarse de que se quitan los espacios en blanco de los datos introducidos por
un usuario. La función RTRIM() es idéntica a TRIM().

Ejemplo
clear
store “ Instituto “ to a
?a
? rtrim(a)
Vea también

ALLTRIM() (Función) | LTRIM() (Función) | TRIM() (Función)


LEFT() (Función)

Devuelve un número especificado de carácteres de una expresión de carácteres, a partir del carácter situado
más a la izquierda.
LEFT(cExpression, nExpression)
Valores devueltos

Character

Parámetros
cExpression

Especifica la expresión de carácteres de la cual LEFT() devuelve los caracteres.

nExpression

Especifica el número de caracteres devueltos desde la expresión de caracteres. Si nExpression es


mayor que la longitud de cExpression, se devolverá toda la expresión. Devuelve la cadena vacía si
nExpression es negativa o si es 0.
LEFT() es idéntica a SUBSTR() con una posición inicial de 1.

Ejemplo
clear
store “Instituto Tecnico Educando a Colombia“ to a
?a
? left(a,9) && Display Instituto
Vea también

AT() | AT_C() | ATC() | ATCC() | ATCLINE() | ATLINE() | LTRIM() | RAT() | RATLINE() | RIGHT() | RTRIM() | SUBSTR() |
LEFTC() | RIGHTC() | SUBSTRC()

RIGHT() (Función)

Devuelve el número especificado de caracteres del extremo derecho de una cadena de caracteres.
RIGHT(cExpression, nCharacters)
Valores devueltos

Character

Parámetros
cExpression

Especifica la expresión de caracteres de la que se devuelven los caracteres del extremo derecho.

nCharacters

Especifica el número de caracteres devueltos desde la expresión de caracteres. RIGHT() devuelve toda
la expresión de caracteres si nCharacters es mayor que la longitud de cExpression. RIGHT() devuelve
una cadena vacía si nCharacters es negativo o 0.
Observaciones
Los caracteres
caracteresse
sedevuelven
devuelvencomenzando por
comenzando el último
por carácter
el último de la
carácter dederecha y continuando
la derecha durante
y continuando el número
durante el número
de caracteres
caracteresespecifi
especificado.
cado.

Ejemplo
Ejemplo
clear
clear
store
store“Instituto
“InstitutoTecnico
TecnicoEducando a Colombia“
Educando to ato a
a Colombia“
??aa
??right(a,8)
right(a,8)&&
&&Display
DisplayColombia
Colombia
Vea también
también

AT() || AT_C()
AT_C()||ATC()
ATC()| |ATCC()
ATCC()| ATCLINE() | ATLINE()
| ATCLINE() | LEFT()
| ATLINE() | LEFTC()
| LEFT() (Función)
| LEFTC() | LTRIM()
(Función) | RAT()
| LTRIM() | RATLINE()
| RAT() | RTRIM()
| RATLINE() | RTRIM()
| SUBSTR()
SUBSTR()||RIGHTC()
RIGHTC()| |SUBSTRC()
SUBSTRC()| TRIM()
| TRIM()

SUBSTR()
SUBSTR()(Función)
(Función)

Devuelve
Devuelveun
unnúmero
númerode
decaracteres
caracteresespecíficoco
específi dede
una expresión
una de caracteres
expresión o unocampo
de caracteres memo.
un campo memo.
SUBSTR(cExpression,
SUBSTR(cExpression,nStartPosition
nStartPosition[, nCharactersReturned])
[, nCharactersReturned])
Valores
Valores devueltos
devueltos

Carácter
Carácter

Parámetros
Parámetros
cExpression
cExpression

Especifi
Especifica
calalaexpresión
expresióndedecaracteres o el
caracteres campo
o el memo
campo desde
memo los que
desde se devuelve
los que la cadena
se devuelve de de
la cadena
caracteres.
caracteres.

nStartPosition
nStartPosition

Especifica
Especifi calalaposición
posiciónenenlala expresión
expresión dede caracteres
caracteres o la
o en encExpression
la cExpression del campo
del campo memo memo desde
desde la quela que
sedevuelve
se devuelvelalacadena
cadenadedecaracteres.
caracteres. El primer
El primer carácter
carácter de cExpression
de cExpression es laes la posición
posición 1. 1.
Si lalaposición
Si posiciónespecifi
especifi cadaeses
cada mayor
mayor que
que el número
el número de de caracteres
caracteres de cExpression,
de cExpression, se devolverá
se devolverá una una
cadenavacía.
cadena vacía.
nCharactersReturned
nCharactersReturned

Especifica
Especifi caelelnúmero
númerodedecaracteres
caracteresqueque
se se devuelve
devuelve de de cExpression.
cExpression. Si seSiomite
se omite nCharactersReturned,
nCharactersReturned,
loscaracteres
los caracteressesedevolverán
devolverán hasta
hasta llegar
llegar al fialnal
final
de de la expresión
la expresión de caracteres.
de caracteres.
Observaciones
Observaciones

SUBSTR()devuelve
SUBSTR() devuelveuna
unacadena
cadenadedecaracteres
caracteres
dede una
una expresión
expresión de tipo
de tipo Carácter
Carácter o deoun
decampo
un campo memo,
memo, a partir
a partir
la posición
de la posiciónespecifi
especificada
cadaenenlalaexpresión
expresión Character
Character o elo campo
el campo memo,
memo, y hasta
y hasta el número
el número especifi
especifi cado cado
de de
caracteres.
caracteres.

Cuandoutilice
Cuando utiliceSUBSTR()
SUBSTR()con
concampos
campos memo
memo enen
unun comando
comando SELECT
SELECT – SQL,
– SQL, incluya
incluya la función
la función PADR()
PADR() en SUBSTR()
en SUBSTR()
modo que
de modo quelosloscampos
camposmemo
memovacíos
vacíos
oodede longitud
longitud variable
variable produzcan
produzcan resultados
resultados coherentes
coherentes cuando
cuando se se
conviertanaacadenas
conviertan cadenasdedecaracteres.
caracteres.

SUBSTR()no
SUBSTR() nodevolverá
devolveráningún
ningúnvalor
valor para
para unun campo
campo memo
memo si sesiejecuta
se ejecuta
en laenventana
la ventana Depuración.
Depuración. Para devolver
Para devolver
valor en
un valor enlalaventana
ventanaDepuración,
Depuración,incluya
incluya
el el nombre
nombre deldel
campocampo memo
memo en ALLTRIM()
en ALLTRIM() e incluya
e incluya ALLTRIM()
ALLTRIM() en en
SUBSTR().
SUBSTR().

Ejemplo
Ejemplo
clear
store “Instituto Tecnico Educando a Colombia“ to a
?a
? substr(a,11,16) && Display Tecnico Educando
Vea también

AT() | AT_C() | ATC() | ATCC() | ATCLINE() | ATLINE() | LEFT() | PADR() | RAT() | RATLINE() | RIGHT() | LEFTC() | RIGHTC()
| SUBSTRC() | STRTRAN() | STUFF()
NOTAS
NOTAS
NOTAS
NOTAS