Edmundo A. Cáceres TABLAS, BASES DE DATOS E ÍNDICES



Documentos relacionados
Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda:

Operación Microsoft Access 97

2_trabajar con calc I

TEMA 2 WINDOWS XP Lección 4 BLOC DE NOTAS

A25. Informática aplicada a la gestión Curso 2005/2006 Word Tema 3. Formato de sección.

... Formas alternativas de escribir un texto. Columnas. anfora CAPÍTULO 4

1.- MENU DE CONTROL O MENU VENTANA: permite cerrar la ventana cambiarla de tamaño y pasar a otra ventana

Operación de Microsoft Word

La ventana de Microsoft Excel

WINDOWS. Iniciando Windows. El mouse

Guía N 1: Fundamentos básicos(i)

Para crear una lista como la anterior, primero escribe la información, y después selecciona el texto y aplícale el formato de viñetas.

A continuación se describen cuáles son los elementos principales de las tablas, cómo crear una y cómo modificarla.

GENERACIÓN DE TRANSFERENCIAS

Módulo I - Word. Iniciar Word Finalizar Word Definición de elementos de pantalla Escribir texto en un documento El cursor...

Sistema de Gestión Portuaria Sistema de Gestión Portuaria Uso General del Sistema

La pestaña Inicio contiene las operaciones más comunes sobre copiar, cortar y pegar, además de las operaciones de Fuente, Párrafo, Estilo y Edición.

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática

Centro de Capacitación en Informática

ESTÁNDAR DESEMPEÑO BÁSICO Recopila información, la organiza y la procesa de forma adecuada, utilizando herramientas tecnológicas.

Capítulo 9. Archivos de sintaxis

TEMA 20 EXP. WINDOWS PROC. DE TEXTOS (1ª PARTE)

Para crear formularios se utiliza la barra de herramientas Formulario, que se activa a través del comando Ver barra de herramientas.

Práctica 3: Introducción a Word

Kepler 8.0 USO DEL ERP

APUNTES DE WINDOWS. Windows y sus Elementos INSTITUTO DE CAPACITACIÓN PROFESIONAL. Elementos de Windows

Trabajar con diapositivas

reemplaza menú archivo y esta situado en la esquina superior izquierda de estos programas de

Bases de Datos en Visual FoxPro. Administrador de proyectos

Diseño de formularios

Conocer la interfaz de Office 2010

Dividir automáticamente las palabras en todo un documento

ORGANIZAR LA INFORMACIÓN: EL EXPLORADOR DE WINDOWS

MANUAL DE HOJA DE CALCULO

EMPLEO NTIC`S II SEGUNDO SEMESTRE

Informes. 3. Elija la opción Nuevo (en la parte superior de la ventana) 4. Elija Autoinformes: en tablas y luego la tabla o consulta que se usará.

MICROSOFT WORD 2007 AVANZADO. Unidad Didáctica Nº 1

Microsoft Access proporciona dos métodos para crear una Base de datos.

3. Presionar en el botón Buscar para obtener el siguiente cuadro:

GENERACIÓN DE ANTICIPOS DE CRÉDITO

Concesionario de coches

3_formato I. NOTA: al pegar unas celdas sobre otras no vacías, se borrará el contenido de estas últimas.

UNIDAD I PROCESADOR DE TEXTOS

MACROS Y FORMULARIOS

Formularios. Formularios Diapositiva 1

CAPÍTULO 4. EL EXPLORADOR DE WINDOWS XP

Hacer clic sobre la figura, para extraer todos los registros o presionar la tecla F2.

10. El entorno de publicación web (Publiweb)

Índice general de materias LECCIÓN 7 74

Programa diseñado y creado por Art-Tronic Promotora Audiovisual, S.L.

ENTORNO DE TRABAJO DE WORD 2007

TUTORIAL PRÁCTICO DE BASES DE DATOS EN ACCESS CREAR UNA AGENDA

Guía de Aprendizaje No. 1

NORMA 34.14(SEPA) 05/11/2013

Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora

Imprimir códigos de barras

Tabla dinámica. Vamos a crear una tabla dinámica a partir de un conjunto de datos.

LAS CONSULTAS ACCESS Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

Ejercicio de Microsoft Access

PUESTA EN MARCHA PROGRAMA GESTION DE OPTICAS. Junio

Guardar y abrir documentos

Roberto Quejido Cañamero

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: Fax.:

Microsoft Office XP Excel XP (I)

Como crear carpetas. Abrir carpetas o archivos. La forma más sencilla y rápida para visualizar el contenido de una carpeta es la siguiente:

3. Número inicial y número final de mensajes mostrados en la página actual.

Ministerio de Educación. Diseño de Presentaciones en la Enseñanza. Módulo 9: Imprimir

vbnmqwertyuiopasdfghjklzxcvbnmrty uiopasdfghjklzxcvbnmqwertyuiopasdf ghjklzxcvbnmqwertyuiopasdfghjklzxc

PESTAÑA DATOS - TABLAS EN EXCEL

Accede a su DISCO Virtual del mismo modo como lo Hace a su disco duro, a través de:

Módulo II - PowerPoint

Centro de Profesorado Luisa Revuelta (Córdoba) TEMA 6 TABLAS Y GRÁFICOS EN IMPRESS

TALLER #5 ACCESS CONSULTAS. objeto Consulta en la vista lateral izquierda de la ventana Base de datos. Aparece esta ventana.

Manejo de datos. Manejo de datos Diapositiva 1

Operación de Microsoft Excel

Manual de Procedimiento

Presentaciones. Con el estudio de esta Unidad pretendemos alcanzar los siguientes objetivos:

Figura 1 Abrir nueva hoja de cálculo

Horde Manual de usuario

Correo Electrónico: Webmail: Horde 3.1.1

Manual para el uso del Correo Electrónico Institucional Via Webmail

PLANTILLAS DE DOCUMENTOS EN WORD 2007

6.1. Conoce la papelera

Una vez que tengamos el padrón de un determinado tributo con todos sus datos actualizados, podemos generar los recibos de ese padrón.

A continuación, se detalla el uso de los accesorios más comunes:

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

Horde Manual de usuario

Cómo creo las bandejas del Registro de Entrada /Salida y de Gestión de Expedientes?

MS ACCESS BÁSICO 6 LOS INFORMES

Autor: Microsoft Licencia: Cita Fuente: Ayuda de Windows

En términos generales, un foro es un espacio de debate donde pueden expresarse ideas o comentarios sobre uno o varios temas.

Actividades con GeoGebra

Recursos de Aprendizaje

Kaldeera Advanced Forms 2009 Guía del usuario

La visualización de la ventana de Word tiene las siguientes partes:

Operación Microsoft PowerPoint 97

Clase Nº 9 OPERADOR PC. P á g i n a 1 HOJA DE CALCULO MICROSOFT EXCEL

Charla N 6: Utilidades de Consulta de datos.

Transcripción:

Edmundo A. Cáceres TABLAS, BASES DE DATOS E ÍNDICES 2008

Índice Introducción...4 Comando?...4 Barra de estado...4 Resultado de comandos...4 Tablas...5 Tipos de tablas...5 Creación de una tabla: Diseñador de tablas...6 Create...7 Tipos de campos...7 Ventana Examinar...7 Apertura de la ventana Examinar...8 Browse...9 Cierre de tablas. Use, Close, Clear, Quit...9 Apertura de tablas...9 Use...10 Modos Editar y Examinar...10 Modo Añadir...10 Marcadores de registro...10 Marcadores de destrucción...10 Partidor...11 Tamaño y movimiento de la ventana Examinar...11 Líneas de cuadrícula...11 Ancho y posición de las columnas...11 Alto de encabezados y renglones...11 Menú Edición...11 Set keycomp...12 Fuente...12 Filtro de registros...12 Between( ) e Inlist( )...13 Set filter to...13 Exactitud en comparaciones de caracteres...14 Set exact...14 Operador ==...14 Número de registro y cantidad de registros...14 Filtro de campos...14 Diálogo Selector de campos...14 Set fields...15 List structure y Display structure...15 List status y Display status...15 Orden del índice...16 Set order to...16 Index on...16 Dir...16 Borrado del escritorio...17 Clear...17 Archivo de índices compuesto estructural...17 Alcance...17 For...18 While...18 Ir a un registro...19 1

Go, Skip, Locate y Continue...20 Comienzo y fin de archivo. Bof( ) y Eof( )...21 Recno( )...21 Reccount( )...22 Set deleted...22 Agregar un registro...22 Append blank...22 Opciones poco útiles del menú Tabla...22 Copy structure...23 Copy to...23 Modify file...24 Diálogo Exportar...24 Agregado masivo de registros: diálogo Añadir desde...24 Append from...25 Diálogo Importar...25 Marcado de registros a eliminar...25 Delete...26 Deleted( )...26 Desmarcado de registros a eliminar...26 Recall...26 Eliminación de registros marcados...26 Pack...26 Cambio de los datos de uno o varios campos...27 Replace...27 Vinculación de particiones...27 Regeneración de índices...27 Reindex...27 Modificación de la estructura de una tabla...28 Modify structure...28 Campos de tipo fecha, fecha hora y lógico...28 Campos de tipo memo...29 Diálogo Editar propiedades...30 List, Display, Set heading...30 Set memowidth...31 Índices...32 Tipos de índices...32 Expresiones complejas de índice. Str( ), Dtos( ) y Ttoc( )...33 Aplicación de índices...35 Dtoc( )...36 Iif( )...36 Bases de datos...37 Creación de una base de datos...37 Create database...37 Barra de herramientas Diseñador de bases de datos...37 Menús contextuales del diseñador de bases de datos...38 Opciones de menú en el diseñador de bases de datos...38 Close databases...38 Apertura de una base de datos...39 Open database...39 Modificación de una base de datos...39 Modify database...39 Propiedades exclusivas de las tablas base...39 2

Áreas de trabajo. In, Order y Noupdate de Use. Select...41 Relaciones e Integridad referencial...43 Relaciones transitorias...43 Ampliación de una relación...44 Nombre...44 Relaciones permanentes...45 Alumnos...45 Exámenes...45 Campos...45 Campos...45 Indices...45 Indices...45 Integridad referencial...46 Sesión de datos...47 3

Introducción Esta pequeña obra pretende dar conceptos y ejercicios para que el lector aprenda a diseñar tablas y bases de datos. Como casi todo lo que se trata se puede conseguir mediante menús y barras de herramientas, he creído conveniente exponer también los comandos y las funciones de VFP que logran lo mismo. Esto no es imprescindible, salvo que el lector se interese en programación. Por ello, se exponen estos temas en letra más pequeña. Antes de entrar en tema, veamos algunas cosas útiles, que usaremos con frecuencia. Comando? En la ventana que dice Comandos, escriba los siguientes ejemplos y termine apretando ENTER. Las líneas verticales en el margen izquierdo indican que debe probar en la ventana COMANDOS.? 4 + 35? 25 * 127? date( )? date( ) + 10? 5 = 3 + 6? "Hoy es", date( )? "Hoy es " + cdow(date( )) El comando? evalúa una o varias expresiones y muestra el resultado en la ventana principal (la gran superficie blanca, donde yace la ventana COMANDOS). Si la ventana COMANDOS no está visible, la puede activar con VENTANA VENTANA COMANDOS, es decir, dar clic en el menú VENTANA y dar otro clic en la opción VENTANA COMANDOS. También puede usar la combinación de teclas CTRL + F2. Barra de estado La barra de estado es una banda de color gris que se puede hacer visible al pie de la ventana principal de VFP. Esto se consigue con HERRAMIENTAS OPCIONES VER BARRA DE ESTADO. También se puede activar o desactivar emitiendo respectivamente los siguientes comandos: set status bar on set status bar off La barra de estado reduce el espacio de pantalla disponible para ver datos, diseñar formularios, diseñar informes, etc., por lo que conviene ocultarla. En algunas ocasiones es útil que esté visible. Resultado de comandos Hay comandos que escriben resultados en la ventana principal, expresados como números, letras, etc. Esto a veces puede ser útil, pero otras veces molesta. Para activar o desactivar esta característica, válgase de HERRAMIENTAS OPCIONES VER RESULTADO DEL COMANDO. También puede lograr lo mismo, respectivamente, con SET TALK ON y SET TALK OFF. Pruebe: set talk on a = 250 * 32 set talk off b = 250 * 32 Cuando activó mostrar el resultado de los comandos, el comando a = 250 * 32 calculó el producto 250 x 32 y lo almacenó en una porción de la memoria, llamada variable de memoria, a la que identificamos con el nombre a; pero también mostró el resultado 8000 en la pantalla principal. Cuando desactivó mostrar el resultado de los comandos, el comando b = 250 * 32 calculó el resultado y lo almacenó en otra variable de memoria, a la que identificamos con el nombre b; pero no mostró el resultado en la pantalla principal. El estado de SET TALK no afecta al comando?, porque su propósito es evaluar expresiones y mostrar el resultado en la ventana principal. 4

Tablas Una tabla es el archivo contenedor de datos más común en VFP, cuyo nombre es cualquiera y cuya extensión es DBF. Una tabla está formada por registros y los registros están formados por campos. Todos los registros tienen los mismos campos. Si en una tabla se guardan datos de alumnos, cada alumno tendrá su propio registro. En los campos de un registro particular se guardan los datos de un alumno particular: en un campo la matrícula, en otro el nombre, en otro el domicilio, etc. La igualdad de forma de los registros en cuanto a que todos tienen los mismos campos, es lo que constituye la estructura de un registro genérico. Los registros se guardan físicamente en disco uno tras otro, como indica la siguiente figura. Registro Registro Registro Matrícula Nombre Domicilio Etc. Matrícula Nombre Domicilio Etc. Matrícula Nombre Domicilio Etc. Si dispusiéramos un registro bajo otro, cada uno ocuparía una fila y los campos formarían columnas: Matrícula Nombre Domicilio Etc. Siguen más registros Siguen más registros También podríamos disponer los registros de esta ofra forma: Matrícula Nombre Domicilio Etc. Matrícula Nombre Domicilio Etc Matrícula Nombre Domicilio Etc. Siguen más registros Estas disposiciones son comunes para examinar una tabla, llamadas modos examinar y añadir, respectivamente. Son dos formas de ver el contenido de la tabla, porque la distribución física es la de la primera figura. Tipos de tablas Hay dos variedades de tablas: tablas libres y tablas de base de datos. Las primeras tienen su estructura completamente definida en sí mismas, consistente en las características obligatorias. Pueden ser ordenadas por tres de los cuatro tipos de índices: normal, único y candidato. Tecnológicamente, son las más antiguas. Las tablas de base de datos pueden tener algunas definiciones adicionales en la base de datos donde están incluidas. Aunque no es obligatorio usarlas, las posibilidades que brindan estas definiciones brindan mayor seguridad y evitan errores. Entre estas posibilidades, las más comunes son reglas y mensajes de validación de campos y registros; formatos y máscaras de entrada de cada campo; valores predeterminados de campos al agregar nuevos registros. Las tablas de base de datos pueden ser ordenadas por los cuatro tipo de índices existentes: normal, único, candidato y principal. Cuando se elimina una tabla libre, se la elimina físicamente de la carpeta donde está guardada. Cuando se elimina una tabla de base de datos, hay que elegir entre eliminarla físicamente de la carpeta o eliminarla de la base de datos. Si se elige esta última posibilidad, VFP advierte que se perderán las características adicionales guardadas en la base de datos, además de las relaciones permanentes donde interviene la tabla, si las hay. Confirmada la acción, la tabla se transforma en tabla libre. Si la tabla contiene índice principal, éste se transforma en candidato. 5

Creación de una tabla: Diseñador de tablas Para crear una tabla, primero hay que crear su estructura, es decir, definir qué campos va a contener, y luego agregarle registros. Una forma de crear una estructura, entre otras, es con ARCHIVO NUEVO. Esto presenta el diálogo NUEVO. En TIPO DE ARCHIVO, elija TABLA. Tiene dos opciones para crearla: NUEVO ARCHIVO y ASISTENTE. La opción NUEVO presenta el diálogo CREAR, donde debe seleccionar una carpeta (VFP le sugiere una) y escribir un nombre para la nueva tabla. Puede elegir cualquier carpeta, como MIS DOCUMENTOS, que suele depender de la unidad C; pero es mejor que use su carpeta de trabajo, SI1. Escriba Alumnos como nombre de la tabla. Pulse el botón GUARDAR. Se presenta el DISEÑADOR DE TABLAS. En la barra de título aparece el nombre de la tabla a crear. El diseñador tiene las fichas CAMPOS, ÍNDICES y TABLA. En la ficha CAMPOS hay seis columnas: NOMBRE, TIPO, ANCHO, DECIMAL, ÍNDICE y NULL. Debajo de NOMBRE hay un rectángulo. Escriba mu, abreviatura de matrícula universitaria. Avance a la columna TIPO, pulsando TAB o dándole clic. Elija Numérico en la lista desplegable. Avance a ANCHO e introduzca el número 6, ya que es el máximo de posiciones que podrá tener en cifras nuestra matrícula. En DECIMAL introduzca 0, pues la matrícula no tiene decimales. En ÍNDICE abra la lista y elija Ascendente. Esto va a crear un índice por este campo, en forma ascendente. Complete la definición de la estructura, para que finalmente se vea así: Nombre Tipo Ancho Decimal Índice Null mu Numérico 6 0 nombre Carácter 30 domicilio Carácter 30 sexo Carácter 1 Ha definido cuatro campos llamados MU, NOMBRE, DOMICILIO y SEXO. Estos nombres pueden tener hasta 10 posiciones, formados por letras, números y algunos caracteres especiales, como el de subrayado. Deben empezar con una letra. No pueden contener espacios. Cada campo debe tener un tipo. MU es de tipo numérico, lo que significa que sólo podremos ingresar números a este campo. Como tiene un ancho o tamaño de 6 posiciones, los valores posibles irán de 99.999 a 999.999. No podremos ingresar decimales, porque hemos dicho que tiene 0 posiciones decimales. Si hubiéramos dicho que tiene 2 decimales, cuántas posiciones enteras habría? Se podría pensar que si el número tiene en total 6 posiciones, 2 de las cuales son decimales, habría 4 posiciones enteras. No es así, porque VFP guarda el punto decimal, con lo cual 2 decimales más el punto decimal son 3 posiciones, por lo que quedarían 6 3 = 3 posiciones enteras. Por qué decimos punto y no coma decimal? Porque en Estados Unidos, donde se ha inventado VFP, se usa el punto como separador decimal, no la coma. Los demás campos son de tipo carácter: su contenido será letras, números y otros símbolos del teclado. Para NOMBRE y DOMICILIO el ancho es una estimación. Si uno de estos campos resulta pequeño para un dato específico, deberemos abreviar o truncar el dato. Para SEXO usaremos un código, F para femenino y M para masculino, por lo que con una posición es suficiente. Los campos de caracteres no tienen decimales. Hemos creado un índice para el campo MU. Un índice, que debe tener un nombre, establece cómo ordenar los registros de acuerdo a un criterio, llamado expresión de índice. Un índice no modifica el orden con que están guardados los registros, pero, cuando se activa, hace que se ordenen virtualmente por un criterio, por ejemplo por nombre o por matrícula. Una tabla puede tener varios índices distintos, por distintos criterios, que se guardan todos en un único archivo de índices. Seleccione la ficha ÍNDICES y verá que la primera fila dice que su NOMBRE es Mu, su TIPO es Normal y su EXPRESIÓN es Mu. En la columna ORDEN se ve una flecha ascendente, indicando que el orden es en tal sentido. La tabla, entonces, va a tener un índice MU que aceptará valores repetidos, si así los ingresamos, en el campo MU. Esto es lo que permiten los índices normales. Obviamente, la matrícula no debería repetirse nunca, porque es el identificador de cada alumno. Hay otros tipos de índice que impiden esta repetición errónea. Vuelva a la ficha CAMPOS. Vea a la izquierda de cada fila un rectángulo gris. Tiene dos propósitos. El primero es indicar el campo activo, es decir el campo que está definiendo o modificando, lo que se indica con el sím- 6

bolo. El segundo propósito es arrastrar el campo activo hacia arriba o abajo, para cambiarlo de posición. Si vuelve a la ficha ÍNDICES, verá a la izquierda de la única fila, por ahora, un rectángulo igual, que tiene el mismo cometido. Vaya a la ficha TABLA. No hay campos que pueda llenar. Solamente da información inmodificable. Indica que hay 0 registros, 4 campos y que la longitud de cada registro es de 68 posiciones. Si sumamos lo que mide cada campo, es decir 6 + 30 + 30 + 1 = 67. El espacio excedente en cada registro sirve para indicar si se lo quiere destruir, como veremos. Por ahora pulse el botón ACEPTAR. Un mensaje le pregunta si quiere ingresar registros. Qué significa esto? Hemos dicho que todos los registros de una tabla tienen la misma estructura. Al crear la tabla, definió la estructura que van a tener los registros, mediante sus campos componentes con sus características, y posiblemente índices. Pero no ingresó registros con datos específicos. Las tablas tienen dos partes: una es la definición estructural, que se ubica al comienzo del archivo; la otra son los registros con datos particulares. Las tablas deben tener al menos la primera parte; pero pueden carecer de la segunda. Si ese es el caso, tendríamos tablas vacías, donde en cualquier momento puede agregar registros con datos en sus campos. La pregunta que hace VFP es si quiere dejar la tabla vacía o empezar a introducir registros. Dígale que sí. Create El comando para crear una tabla es CREATE, seguido por el nombre de la tabla. Éste puede ir precedido por el camino de carpetas para llegar a la carpeta que va a contener la tabla. Ejemplos: create alumnos create c:\si1\alumnos create c:\windows\temp\pagos Tipos de campos Cada campo componente de la estructura de tabla debe tener un tipo. No sólo los campos, sino los demás datos de VFP, como variables y constantes, necesariamente son de algún tipo. El tipo establece los datos permitidos y el intervalo de valores entre los cuales puede variar. Los campos contemplan más posibilidades que los otros datos en cuanto a tipo. Los tipos de campos más sencillos son los siguientes. Tipo Contenido Tamaño Carácter Texto Hasta 254 Numérico Reales Hasta 20 Fecha Fechas 8 Fecha Hora Fecha y hora 8 Lógico Valores lógicos 1 Memo Texto 4 Note que los tamaños de los campos de caracteres y numéricos deben definirse al crear o modificar la estructura de la tabla. Los demás campos son de longitud fija. Cuando se define un campo numérico, además, hay que indicar cuántos decimales posee. VFP no usa coma, sino punto, para separar la porción entera de la porción decimal de un número. Cuando llevan decimales, el punto también se cuenta en el tamaño, porque ocupa una posición. Por ejemplo, si un campo numérico tiene 10 posiciones con 2 decimales, hay que contar el punto y las posiciones decimales, de modo que las posiciones enteras son 7. Dejaremos los campos memo para más adelante, porque son muy particulares. Ventana Examinar Luego de contestar que sí quiere ingresar registros, se presenta la ventana EXAMINAR. Aparecen los nombres de los campos MU, NOMBRE, DOMICILIO, SEXO, uno bajo el otro. Debajo hay una línea horizontal, que se repite regularmente formando bandas, pero vacías. Cada banda representa un registro. El punto de inserción está en MU. Ingrese 5201, la primera matrícula del ejemplo. Si observó, ahora aparece en la segunda banda otra serie de nombres de campos, uno bajo el otro. Complete los restantes datos del primer registro, de modo que se vea así: 7

Mu: 5201 Nombre: Cortés, Luis Domicilio: Jujuy 8543 Sexo: M Para avanzar de campo en campo, si el contenido no lo llena completamente, puede usar TAB o ENTER. Al completar el último campo del primer registro, el punto de inserción pasa al campo MU del siguiente registro. Apenas comience a llenarlo, aparecen los nombres de los campos en la tercera banda. Los datos del segundo registro son: Mu: 1702 Nombre: Ávila, María Domicilio: Mitre 7047 Sexo: F Al terminar el segundo registro, el punto de inserción salta al campo MU del tercero. No llene más. Si el último registro está vacío y sale con el botón de cierre o con ESC, ese registro no se grabará en el archivo. Advierta que, si estuviera en un campo que llena o modifica y pulsa ESC, ese campo no será grabado con el nuevo contenido. Por ello debe salir del campo SEXO del segundo registro, confirmando su contenido, para que pueda grabarse. No es necesario pasar a un registro vacío: también podría volver a un campo llenado previamente, del registro actual o de cualquier otro previo. Salga con ESC. Apertura de la ventana Examinar Usted acaba de cerrar la ventana EXAMINAR. Una forma de abrirla es cuando termina de crear la estructura de una tabla y decide ingresar registros. Si la tabla que desea examinar ya tiene registros, el procedimiento anterior no se puede aplicar. Pero hay varias otras formas de abrirla. Como requisito previo, se necesita que la tabla esté abierta y seleccionada. La tabla ALUMNOS está abierta, porque no ha hecho nada para cerrarla. También está seleccionada, porque es la única que está abierta. Seleccionar una tabla tiene sentido cuando hay varias tablas abiertas a la vez, una sola de las cuales puede estar seleccionada. Otra forma de abrir la ventana EXAMINAR para la tabla ALUMNOS es con VER EXAMINAR "ALUMNOS ". Hágalo. Ahora vuelve a ver el contenido de la tabla. Pero hay una presentación distinta: al ingresar registros luego de definir la estructura de la tabla, los campos aparecían uno bajo otro y los registros se veían separados por bandas. Ahora los campos se ven uno junto a otro, formando columnas, y los registros se ven como filas. Es una diferencia de presentación, pero los datos son los mismos. La ventana EXAMINAR es como las demás ventanas de Windows: se puede movea, maximizar o minimizar, cambiar el alto o el ancho, etc. Cuando tiene varios registros en una tabla que visualiza en la ventana EXAMINAR, puede navegar por la tabla, de varias maneras: Avanzar o retroceder de a un registro, con las teclas de flechas verticales. El registro actual se indica con el símbolo en la primera columna de la ventana EXAMINAR. Con el mouse, puede desplazar registros dando clic en los extremos de la barra de desplazamiento vertical. Para cambiar de registro, dé clic en cualquier campo del registro que quiere seleccionar. Avanzar o retroceder los registros que caben en la ventana, con AVPÁG y REPÁG. Con el mouse, el equivalente es dar clic dentro de la barra de desplazamiento vertical, arriba o debajo del deslizador. Para movimientos mayores, arrastre el deslizador hacia arriba o abajo. Ir al extremo izquierdo o derecho de un campo, con INICIO y FIN. Avanzar o retroceder por el interior de un campo, con las flechas horizontales. El campo actual se remarca con un recuadro. Avanzar al siguiente campo de la derecha, con TAB o ENTER. Retroceder al siguiente campo de la izquierda con CTRL + TAB. Con el mouse, se da clic en el campo que se desea en el registro seleccionado. 8

Ir a un registro específico, buscar el primero que tenga un contenido dado, etc., usando otros comandos o alguna opción de menú. La ventana EXAMINAR permite modificar los datos de la tabla, no su estructura. Usted puede agregar nuevos registros (altas), eliminar registros existentes (bajas) y modificar el contenido de los campos de registros existentes (cambios). Si en las dimensiones actuales de la ventana EXAMINAR no entran todos los campos, porque son muchos o muy grandes, se muestran los que caben. Pero, al llegar a un campo extremo, los movimientos laterales incorporan nuevos campos a medida que desaparecen los que antes estaban visibles. Con el mouse, se puede usar la barra de desplazamiento horizontal. Con la tabla ALUMNOS, que tiene pocos campos y de poco tamaño, no podrá ver este efecto, salvo que la haga estrecha. Si fuera necesario, la ventana EXAMINAR tendrá dos barras de desplazamiento, una vertical y otra horizontal. Salga con ESC. Browse El comando para abrir la ventana EXAMINAR es BROWSE. Es uno de los comandos para tablas más poderosos. Muchas de las funciones de este comando se logran mediante los menús VER y TABLA. También se logran mediante el objeto GRID en un formulario. No obstante, el comando o sus posibilidades están presente tras ellos. browse Usted puede hacer que BROWSE impida agregar registros (cláusula NOAPPEND), no admita cambiar los existentes (cláusula NOMODI- FY) ni deje marcarlos para destruir (cláusula NODELETE). browse noappend nomodify nodelete Por defecto, BROWSE trabaja con todos los campos, pero permite hacerlo con un subconjunto de ellos, usando una lista de campos, introducidos por la cláusula FIELDS. Los campos aparecerán en el orden que ocupan en la lista. browse fields mu, nombre nomodify En la lista de campos se puede incluir un campo calculado. Un campo calculado no existe en la tabla, pero se infiere de un campo real, mediante alguna expresión. En BROWSE, un campo calculado debe tomar la forma de un nombre seguido por = y la expresión. Por ejemplo, si quiere incluir el doble de la matrícula, aunque no tenga sentido, debe hacer: browse fields nombre, doble = mu * 2 noappend El nombre que precede a = se usa como título de la columna. En cada registro, el valor del campo calculado es la expresión resuelta. Los campos calculados no pueden ser modificados, porque no habría donde guardar los cambios en la estructura de la tabla. Si usted quiere modificar solamente un campo, debe indicarlo en la cláusula FREEZE: browse freeze mu browse fields mu, nombre freeze mu nodelete noappend Cierre de tablas. Use, Close, Clear, Quit Hay varias formas de cerrar tablas abiertas. No se puede hacer con el menú ARCHIVO, salvo eligiendo SALIR. Por ahora veamos los siguientes comandos, que puede emitir en la ventana COMANDOS: USE, sin nada adicional, cierra la tabla seleccionada y sus archivos dependientes. CLOSE TABLES ALL cierra todas las tablas abiertas y sus archivos dependientes. CLOSE ALL cierra todos los archivos y diseñadores abiertos. CLEAR ALL cierra todos los archivos y diseñadores abiertos y elimina las variables del usuario. QUIT cierra todo lo que está abierto y sale de VFP. Equivale a ARCHIVO SALIR. Como aún no conoce muchas de las cosas que se cierran, nos limitemos a los dos primeros comandos. Los archivos dependientes de una tabla son el archivo de índices y el archivo de campos memo. Dependientes significa que son abiertos automáticamente al abrir la tabla de la que dependen. Como tenemos una sola tabla hasta ahora, cerrar todas las tablas la incluirá, por lo que USE y CLOSE TABLES ALL, en este caso, producen lo mismo. Si hubiera varias tablas abiertas, USE cerraría sólo la tabla seleccionada, dejando las demás abiertas; CLOSE TABLES ALL cerraría todas las tablas. Apertura de tablas Si debe interrumpir su trabajo en cualquier momento, para seguir practicando con una tabla debe abrirla. Hay 9

varias formas de hacerlo. Puede usar ARCHIVO ABRIR, que trae el diálogo ABRIR. En TIPO DE ARCHIVO elija Tabla (*.dbf). Esto lista las tablas existentes en la carpeta que aparece en BUSCAR EN. Esta carpeta, ahora, es la predeterminada, que puede cambiar por otra si lo necesita en alguna oportunidad. Elija la tabla deseada en el listado o escriba su nombre en NOMBRE DE ARCHIVO y pulse ACEPTAR. Las tablas, por defecto, tienen la extensión DBF, de modo que, si no la escribe, VFP la supone escrita. Use Otra forma de abrir una tabla es el comando USE seguido por el nombre del archivo a abrir. Con la barra de estado activa, emita close tables all set status bar on use alumnos Si el directorio predeterminado no fuera SI1, podría emitir USE C:\SI1\ALUMNOS. Ahora aparece en la barra de estado el nombre de la tabla, ALUMNOS, el número de registro del registro actual, 1, y el total de registros. Modos Editar y Examinar La diferencia entre ver los campos uno bajo otro o uno junto a otro se maneja en la ventana EXAMINAR. Ábrala. Despliegue el menú VER. Hay dos opciones mutuamente excluyentes: EXAMINAR y EDITAR. Pruebe uno y otro. Elija el modo que le resulte más cómodo o conveniente. Modo Añadir Ahora no puede agregar registros a la tabla, como sucedió cuando terminó de crearla. Se podrá volver a esa modalidad? Sí. Elija VER MODO AÑADIR. Ahora el punto de inserción salta al final, a un registro vacío, de modo que pueda llenarlo. Si quiere bajar a otro registro nuevo, no es posible. Pero apenas comienza a llenar el registro vacío, se habilitará un nuevo registro vacío. Siempre habrá disponible un solo registro vacío, ya que el que está llenando ya no está vacío. Si decide subir a registros ya llenos, el modo añadir no se cancela. Permanecerá así mientras no cierre la ventana EXAMINAR. Si luego de retroceder a registros existentes quiere seguir agregando registros nuevos, vaya al último y baje uno. Agregue ahora los siguientes registros. Puede agregar más, si desea. Mu Nombre Domicilio Sexo 542 Suárez, Jorge Salta 101 M 2388 Ruiz, Marina Belgrano 1128 F 257 Oro, Eugenio Roca 2928 M 1377 Toro, Laura Paso 339 F 645 Vidal, Daniel La Rioja 2246 M 2406 Alba, Alberto Córdoba 175 M 4315 Castro, Ana Solís 4214 F 3161 Gil, Raúl San Martín 5928 M Marcadores de registro Si tiene abierta la ventana EXAMINAR, ciérrela y vuelva a abrirla, para cancelar el modo AÑADIR. Observe que a la izquierda hay una columna de cuadritos en gris, uno de los cuales tiene un símbolo. Esta marca indica cuál es el registro actual, es decir, el seleccionado. Si cambia de registro, sea dando clic en otro o moviéndose con las teclas verticales, la marca cambia de sitio. Marcadores de destrucción La columna a la derecha inmediata de los marcadores de registro es un conjunto de cuadritos en blanco. Cada uno sirve para marcar y desmarcar el respectivo registro para eliminarlo. Marcarlo no lo elimina, sino que lo prepara para ello. Antes de eliminarlo para siempre, lo puede rescatar, desmarcándolo. Una forma de poner o quitar la marca es dar clic en el cuadrito del registro que quiere elimnar. Otra forma es usar CTRL + T, que pone o saca la marca. Hay otras formas. En la tabla puede haber varios registros marcados, tantos como desee eliminar. 10

Partidor Edmundo A. Cáceres Tablas, Bases de Datos e Índices 2008 Al pie de la columna marcadores de registro hay un. Si pone el mouse sobre ella, el puntero toma la forma. Si con este puntero arrastra horizontalmente y suelta, la ventana EXAMINAR se divide en dos particiones. La partición activa es donde está el punto de inserción. Una partición se puede ver en modo editar y la otra en modo examinar, activando la partición y usando el menú VER. Pruébelo. Si avanza o retrocede por los registros en una partición, el movimiento se refleja en la otra. Las particiones, entonces, están vinculadas. Hay una forma de desvincularlas, de modo que se avance por una pero no por la otra. Sin embargo, si no ha agregado muchos registros a la tabla, no podrá ver esto ahora, salvo reducir el alto de la ventana EXAMINAR. Para volver a una sola partición, tome el partidor y arrástrelo a su lugar original. Tamaño y movimiento de la ventana Examinar Como cualquier ventana, EXAMINAR se puede mover, si no está maximizada, tomándola de la barra de título y arrastrándola. Para cambiar su tamaño, siempre que no esté maximizada ni minimizada, se toma cualquiera de sus bordes o vértices y se lo arrastra. Líneas de cuadrícula VER LÍNEAS DE CUADRÍCULA se puede activar o desactivar, mostrando u ocultando las líneas horizontales y verticales entre campos y registros. Ancho y posición de las columnas En modo EXAMINAR, los nombres de los campos aparecen como encabezados. Si coloca el puntero en la línea vertical donde termina el encabezado de un campo, toma la forma. Si con ese puntero arrastra lateralmente y suelta, puede variar el ancho de la columna. Esto afecta a la ventana EXAMINAR, no al ancho con que está definido el campo en la estructura de la tabla. En modo EXAMINAR, si lleva el puntero al interior de un encabezado, toma la forma. Si con ese puntero arrastra lateralmente, puede cambiar la ubicación de la columna con respecto a las demás. En modo EDITAR, si da clic y sostiene en el nombre de un campo, se seleccionan todos los que tienen igual nombre en los demás registros visibles. Esto le permite variar por arrastre su posición con respecto a los otros campos. Los cambios descriptos afectan a la ventana EXAMINAR, no a la posición del campo en la estructura de la tabla. Alto de encabezados y renglones En modo EXAMINAR, a la izquierda del primer encabezado, sobre el primer marcador de registro y el primer marcador de destrucción, hay un rectángulo gris sin nombre. Si coloca el puntero en la base de este rectángulo, toma la forma. Si con ese puntero arrastra verticalmente, puede variar la altura de todos los encabezados a la vez. Si coloca el puntero en la base del primer marcador de registro o del primer marcador de destrucción, toma la forma. Si con ese puntero arrastra verticalmente, puede variar la altura de todos los registros a la vez. Menú Edición Estando en la ventana EXAMINAR, el menú EDICIÓN permite seleccionar todo, copiar, cortar y pegar, operaciones que ya conoce, pero reducidas al campo actual. Puede seleccionar una porción del campo, arrastrando el mouse o usando MAYÚSC + flechas horizontales. Con INICIO y FIN puede ir al comienzo o fin del campo, esté o no seleccionado todo o parte de su contenido. Si modifica el contenido de un campo y quiere volver a su valor original, use EDICIÓN DESHACER. EDICIÓN BUSCAR presenta un diálogo para introducir el texto a buscar. Note que busca registro a registro, campo a campo, considerando que la tabla es un gran texto. Esto es útil en ocasiones; pero se puede buscar exclusivamente dentro de un campo, forma más usual y poderosa, para lo que se necesita otra opción. EDICIÓN BUSCAR SIGUIENTE continúa buscando la siguiente aparición del texto deseado. 11

Las operaciones de edición se pueden lograr con combinaciones de teclas, sin abrir el menú EDICIÓN. Estas combinaciones, que aparecen junto a cada opción del menú, son: CTRL + A Seleccionar todo CTRL + R Rehacer CTRL + C Copiar CTRL + V Pegar CTRL + F Buscar CTRL + X Cortar CTRL + G Buscar siguiente CTRL + Z Deshacer Set keycomp Ya habrá notado que al cambiar de campo, aquél al que entra se selecciona completamente. Este comportamiento se llama "seleccionar al entrar", lo cual permite reemplazar todo el contenido por otro, sin tener que borrarlo posición a posición. Es el modo propio de Windows. En modo DOS, este efecto no se produce, sino que el punto de inserción se coloca al comienzo del campo. Para cambiar de modo se usan los comandos SET KEYCOMP TO WINDOWS y SET KEYCOMP TO DOS. Estos comandos no están en ningún menú, de modo que hay que emitirlos en la ventana COMANDOS. Estando en la ventana EXAMINAR, active la ventana COMANDOS con VENTANA VENTANA COMANDOS o con CTRL + F2. Emita set keycomp to dos Vuelva a la ventana EXAMINAR, dándole clic, eligiéndola por su nombre en el menú VENTANA o pulsando CTRL + F1. Ahora cambie de campos y verá que no hay más selección al entrar. Para volver a modo Windows, active la ventana COMANDOS y emita set keycomp to windows Active la ventana EXAMINAR y cambie de campos. Fuente Cada vez que se abre la ventana EXAMINAR, aparece el menú TABLA en la barra de menús. Desaparece cuando se cierra esa ventana. La segunda opción de este menú, FUENTE, trae el diálogo de igual nombre, que permite cambiar la fuente, el estilo y el tamaño que se aplicará a toda la ventana. Filtro de registros La primera opción del menú TABLA, PROPIEDADES, presenta el diálogo PROPIEDADES DEL ÁREA DE TRABAJO, donde hay varias opciones. La opción FILTRO DE DATOS tiene un cuadro de texto para ingresar una expresión y un botón con tres puntos, que lleva al diálogo GENERADOR DE EXPRESIONES. Si sabe escribir la expresión, puede hacerlo directamente en el cuadro de texto. Si no lo sabe, o si quiere asegurarse de su corrección, dé clic en el botón de tres puntos. La expresión a escribir será, por ejemplo, mu < 5000. Esto actuará como un filtro de los registros: aquéllos cuyo campo MU tenga un valor menor a 5000 pasarán el filtro; aquellos cuyo campo MU tenga un valor igual o mayor a 5000 quedarán retenidos por el filtro. Los que pasan la prueba serán los únicos que muestre la ventana EXAMINAR. Los demás no aparecerán. Este efecto durará mientras no quite el filtro o lo cambie por otro. Elija el botón. En el GENERADOR DE EXPRESIONES, abajo, a la izquierda, hay una lista desplegable que indica el nombre de la tabla, ALUMNOS. Si abre la lista, por ahora no hay más que esa tabla. Arriba de esta lista hay una lista desplegada con los campos de la tabla, donde aparecen sus nombres, tipos, anchos y posiciones decimales. Dé doble clic en el campo MU. Esto provoca que en el cuadro grande superior, llamado expresión SET Filter: <expl>, aparezca escrito Mu. La abreviatura <expl> indica que se requiere una expresión lógica, que se evalúe como verdadera o falsa. Luego abra la lista de funciones LÓGICAS y elija el operador <. En el cuadro superior ahora se ve Mu < o Alumnos.Mu <, es lo mismo. Complete la expresión escribiendo 5000, ya que no puede hacerlo de otra forma. Si prefiere, puede escribir la expresión Mu < 5000 directamente en el cuadro superior. Puede dejar espacios antes y después del operador. Para saber si la expresión es correcta, pulse el botón COMPROBAR. Esto le dirá si está bien o tiene errores. El mensaje aparece en la barra de estado o en una ventanita, según que tal barra esté o no visible. Si la expresión es válida, pulse ACEPTAR, que lo devuelve al diálogo PROPIEDADES DEL ÁREA DE TRABAJO. En éste, pulse el botón ACEPTAR. VFP vuelve a la ventana EXAMINAR, donde puede comprobar que el filtro está en vigencia. Pruebe nuevos filtros. Por ejemplo, Mu > 5000 o Nombre <= "D". Note que 5000 y "D" no son campos, sino valores literales. El primer ejemplo usa un campo numérico, por lo que debe compararse con una expresión numérica, como en este caso el literal numérico 5000. El segundo, que usa como primer operando un campo 12

de caracteres, debe compararse con una expresión de caracteres, como es el literal de caracteres "D". Por qué las comillas en este caso? Para indicar que es un literal de caracteres. Si no las escribiera, VFP interpretaría que es el nombre de otro campo o de una variable. En lugar de comillas, puede usar apóstrofos. El segundo ejemplo filtra los registros cuyos nombres empiecen con las letras A, B, C y D. Los literales numéricos, es decir, los números, no tienen delimitadores, como el 5000 del ejemplo. Los literales de caracteres, es decir, las cadenas, deben usar los delimitadores comillas o apóstrofes, como la "D" del ejemplo. Esto significa que 2150 no es igual a "2150", porque son de distinto tipo. Además de los literales numéricos y de caracteres, hay otros. Cómo sería la expresión para filtrar registros con matrícula entre 1000 y 5000? Puede escribirse Mu >= 1000 and Mu <= 5000. Esta expresión indica filtrar registros cuya matrícula sea mayor o igual a 1000 y a la vez menor o igual a 5000. Between( ) e Inlist( ) Hay funciones que facilitan escribir expresiones complejas como la anterior. Por ejemplo, las funciones BETWEEN( ) e INLIST( ). BETWEEN( ) prueba si el valor de algo está dentro de un intervalo de valores. Usa tres argumentos: el primero es lo que se quiere probar, el segundo el extremo inferior del intervalo y el tercero el extremo superior.? between(5,1,10)? between(20,1,10)? between("f","a","m") antes = date( ) 10 después = date( ) + 10? between(date( ), antes, después) Apelando a BETWEEN( ), la expresión Mu >= 1000 and Mu <= 5000 se puede reemplazar con between(mu,1000,5000) Si le resulta más claro, puede dejar espacios, como en between (Mu, 1000, 5000) between ( Mu, 1000, 5000 ) En el GENERADOR DE EXPRESIONES, en la lista de funciones lógicas, además de los operadores AND, OR, NOT, <, =, >, etc., hay funciones lógicas, como BETWEEN( ) e INLIST( ). Para listar los registros cuyo campo NOMBRE comience con A, D, F, L y Z, una expresión filtro puede ser: Nombre="A" or nombre="d" or NOMBRE="F" or nombre="l" or nombre="z" Los nombres de los campos pueden escribirse en minúsculas o mayúsculas, porque VFP los reconoce no importa cómo los escriba. Hasta la versión 2.5 de VFP no pasaba lo mismo con los literales "A", "D", etc., porque "A" no era igual a "a" ni "D" a "d", etc. Las versiones posteriores no hacen esa diferencia cuando se usa el operador =. No puede insertar espacios dentro de estos valores, porque "A" es distinto a " A ", "A ", " A", etc. (Cada representa un espacio.) La expresión ejemplificada es bastante larga de escribir. La función INLIST( ) facilita la tarea, logrando el mismo resultado. Tiene como primer argumento lo que se quiere probar, el contenido del campo NOMBRE en el ejemplo. Siguen hasta 24 argumentos que son los valores contra los cuales probar.? inlist(5,1,5,7,12,15)? inlist(5,1,10, 20,30)? inlist("f","a","f","m") La expresión filtro para la tabla, entonces, puede escribirse también de este modo: inlist(nombre,"a","d","f","l","z") Para volver a ver todos los registros, elimine la expresión filtro en vigencia. Puede borrarla en el cuadro donde está escrita o en el GENERADOR DE EXPRESIONES. Note finalmente que el título FILTRO DE DATOS que aparece en el diálogo PROPIEDADES DEL ÁREA DE TRABAJO es, en realidad, un filtro no de cualquier dato, sino un filtro de registros. Set filter to El comando para filtrar registros es SET FILTER TO. Si no se escribe nada después de TO, se elimina el filtro vigente sobre la tabla seleccionada, ALUMNOS en este caso. Esto no cierra la tabla. Si se la cierra, también se elimina el filtro que pesa sobre ella. Si se escribe una expresión lógica después de TO, se establece un nuevo filtro sobre tal tabla. Pruebe lo siguiente en la ventana COMANDOS 13

y active la ventana EXAMINAR luego de cada uno, para ver los efectos: set filter to nombre>="d" set filter to between(nombre,"c","t") set filter to inlist(nombre, "A","C","F","M") set filter to between(mu,1500,3000) set filter to Exactitud en comparaciones de caracteres Si usáramos un filtro de registros como Nombre = "C", veríamos los registros cuyos nombres comienzan con C, como Cortés, Luis. Estrictamente hablando, Cortés, Luis no es igual a C. Es parcialmente igual a partir de la izquierda. En comparaciones de caracteres, es posible usar una igualdad parcial o exigir igualdad total. Esta característica se logra con HERRAMIENTAS OPCIONES DATOS SET EXACT ACTIVADO. Controle que la exactitud está desactivada. Establezca el filtro de registros Nombre = "C". Verá los registros cuyo campo NOMBRE tiene valores que comienzan con C. Active la exactitud y no verá registros. Vuelva a desactivar la exactitud y verá los registros cuyos nombres comienzan con C. Active la exactitud y cambie el filtro por Nombre = "Cortés, Luis". Verá un solo registro. Desactive la exactitud y verá ese mismo registro. Esto quiere decir que la igualdad parcial no se limita al primer carácter de la izquierda, sino hasta donde se acaba el segundo operando. Con la exactitud desactivada, el filtro Nombre = "Cor" dejaría pasar a Corleone, Corona, Cortés, Correa, Coria, etc., si los hubiera. Elimine el filtro. Set exact El comando para activar la exactitud al comparar de caracteres es SET EXACT ON y para desactivarla SET EXACT OFF. Operador == Sin tener en cuenta si la exactitud está activada o no, el operador == exige exactitud total para dar por iguales ambos miembros de la comparación de caracteres, distinguiendo entre mayúsculas y minúsculas. Se lo puede llamar operador exactamente igual.? "Dos" == "dos"? "Dos" == "DOS"? "Dos" == "Dos "? "Dos" == "Dos" Número de registro y cantidad de registros Active la barra de estado. Aparece en ella el nombre de la tabla seleccionada, ALUMNOS. Hasta ahora está usando esa única tabla, de modo que no podría seleccionar otra. También aparecen dos números, separados por una /. El primero es el número del registro actual y el segundo la cantidad total de registros en la tabla. El número de registro es el orden que se añade un registro a la tabla: el primero tiene número de registro 1; el segundo tiene número de registro 2, etc. Examine la tabla. Dé clic en otro registro. Verá en la barra de estado que cambia el primer número del par. Se debe a que ha cambiado de registro, el cual tiene otro número. El segundo número del par no cambia, porque la cantidad total de registros sigue siendo la misma. Variará cuando agregue nuevos registros o elimine los registros marcados para destruir. Filtro de campos Así como hay filtros para registros, hay filtros para campos. Primero hay que incluir en este tipo de filtro los campos a ver. Cuando el filtro se pone en vigencia, serán los únicos campos que tendrá en cuenta la ventana EXAMINAR y todos los comandos que procesan registros. Cierre la tabla ALUMNOS para eliminar el filtro de registros que pudiera estar vigente. Ábrala y examínela. En TABLA PROPIEDADES PROPIEDADES DEL ÁREA DE TRABAJO, el botón FILTRO DE CAMPOS trae el diálogo SELECTOR DE CAMPOS. Diálogo Selector de campos Tiene los siguientes componentes: TODOS LOS CAMPOS. Es una lista que muestra todos los campos de la tabla, con sus nombres, tipos, an- 14

chos y decimales. CAMPOS SELECCIONADOS. Es la lista donde figuran los campos camponentes del filtro. MOVER. Si selecciona un campo y pulsa este botón, el campo pasa a la lista Campos seleccionados y se ve atenuado en la lista original. El mismo efecto tiene darle doble clic. TODOS. Mueve todos los campos a la vez a Campos seleccionados. QUITAR. Devuelve un campo seleccionado a la lista Todos los campos. También puede darle doble clic. QUITAR TODOS. Devuelve todos los campos seleccionados a la lista Todos los campos. El diálogo sirve para filtrar los campos que queremos ver: los campos seleccionados serán los únicos que mostrará la ventana EXAMINAR. Seleccione el campo NOMBRE. Pulse ACEPTAR para cerrar el diálogo y volver a PROPIEDADES DEL ÁREA DE TRABAJO. En el recuadro PERMITIR ACCESO A, además del botón FILTRO DE CAMPOS, hay dos botones de opción. Active SÓLO LOS CAMPOS ESPECIFICADOS EN EL FILTRO DE CAMPOS, es decir, active el filtro. Pulse ACEPTAR. Está de vuelta en la ventana EXAMINAR, pero se ven todos los campos, no únicamente el filtrado. Hubo un mal funcionamiento? No. El filtro de campos tendrá vigencia en las próximas aperturas de la ventana EXAMINAR. Salga de la ventana actual con ESC o el botón de cierre. Vuelva a examinar la tabla. Ahora sí verá el efecto del filtro. Active ahora el botón TODOS LOS CAMPOS DEL ÁREA DE TRABAJO del recuadro inferior y pulse ACEPTAR. Esto desactiva el filtro. Deberían verse todos los campos, pero sólo se ve el campo filtrado. Para que lo establecido tenga efecto, cierre la ventana EXAMINAR y vuelva a abrirla. Si ahora quiere filtrar los campos NOMBRE y DOMICILIO, repita los pasos para llegar al diálogo SELECTOR DE CAMPOS. El campo NOMBRE ya está seleccionado, lo cual indica que el filtro de campos es aditivo. Que sea aditivo quiere decir que, salvo quitar los campos puestos por un filtro anterior, permanecen. El filtro de campos que afecta a una tabla, esté activo o no, permanece mientras la tabla está abierta. Desaparece cuando se la cierra. Set fields La puesta en vigencia de filtros de campos también se puede lograr mediante los comandos SET FIELDS. Hay varios tipos de ellos. Como son poco usuales, no nos interesa verlos en detalle. Lo que sí conviene recalcar es que un filtro de campos activado no afecta a la ventana EXAMINAR, sino que afecta a la tabla o tablas involucradas. Por ello, cuando se las examina, se ven los campos establecidos por el filtro. List structure y Display structure Estos comandos muestran la estructura de una tabla. Por defecto, la tabla es la que está seleccionada. Pero puede ser otra tabla abierta, si se usa IN seguido por el nombre de la tabla (o su alias). La salida puede ir a impresora o un archivo, para lo que se usan las cláusulas TO PRINTER y TO FILE. Para suprimir la salida a pantalla se usa NOCONSOLE. Para cada campo, el listado da nombre, tipo, ancho y decimales. Si hay índices cuyos nombres y expresiones sean iguales a los nombres de campo, junto a éstos se indica si son ascendentes o descendentes. Si está en vigencia un filtro de campos, aparece > junto a cada campo del filtro. Se indica el número total de registros y la fecha de la última actualización. Si la tabla tiene campos memo, se muestra el ancho con que se verá su contenido. (Luego veremos qué son campos memo.) Se da el tamaño del registro. use alumnos display structure list structure close tables all List status y Display status Estos comandos muestra el entorno de VFP. La salida va a la ventana principal. El despliegue puede ir a impresora, con TO PRINTER, o a un archivo, con TO FILE. NOCONSOLE para suprime la salida por pantalla. La información que brindan es muy útil y sirve para muchas comprobaciones. Sin agotar todos los ítemes, mencionaremos: Tablas abiertas Ruta de acceso Archivos memo activos Directorio predeterminado Alias de tablas Destino de impresora Relaciones vigentes Configuración de márgenes Índices activos Área de trabajo seleccionada Expresiones de índices Valores de los comandos set 15

Índice principal Página de códigos actual Archivos CDX abiertos Formato de fecha actual Tipo de procesador Macros de teclado use alumnos display status list status close tables all Orden del índice Abra y examine la tabla ALUMNOS. TABLA PROPIEDADES trae el diálogo PROPIEDADES DEL ÁREA DE TRABAJO. La lista ORDEN DEL ÍNDICE dice < sin orden >. Esto indica que no se ha activado ningún índice. Dado que al crear la estructura de la tabla definió el índice MU, para ponerlo en vigencia despliegue la lista y elíjalo. No hay más índices porque no creamos más. Pulse ACEPTAR. Observe que los registros se ven ahora ordenados en forma ascendente por el campo MU. Muévase por los registros. Se va de uno a otro como si hubieran sido grabados en ese orden, lo cual no es cierto. Ahora desactive el índice, eligiendo < sin orden >. Los registros se ven en el orden real de grabación, tal cual están dispuestos físicamente en el archivo. Set order to El comando para activar o desactivar índices es SET ORDER TO. Si sigue el nombre de un índice, es ése el que se activa. Si no se coloca nada, se desactiva el índice actual y se vuelve al orden de grabación. set order to mu browse Los registros están ordenados por matrícula. set order to browse Ahora los registros no están ordenados. Si cambia de índice con la ventana EXAMINAR abierta, el efecto se aprecia inmediatamente en ella. Sin embargo, no es necesario que esté abierta para emitir SET ORDER TO, dado que este comando afecta a la tabla, no a la ventana. Cree otro índice normal por el campo NOMBRE. Antes de ello, si está trabajando en red, para modificar la estructura de una tabla debe abrirla en modo exclusivo. Esto se logra con ARCHIVO ABRIR, seleccionar la tabla ALUMNOS en el diálogo ABRIR, como ya sabe, pero tildando EXCLUSIVO. Otra forma es emitir el comando USE ALUMNOS EXCLUSIVE. También podría emitir el comando SET EXCLUSIVE ON, que establece abrir de ahora en adelante todas las tablas en modo exclusivo, y luego emitir USE ALUMNOS. Para modificar la estructura de la tabla agregando un nuevo índice, puede valerse de VER DISEÑADOR DE TABLAS. En el diseñador, podría usar la ficha CAMPOS, definiendo un índice ascendente en el campo NOMBRE. De un modo más general, puede usar directamente la ficha ÍNDICES, agregando luego del índice MU el índice llamado Nombre, de tipo Normal y expresión Nombre. El nombre del índice no tiene por qué ser igual al nombre del campo. Podría haber sido cualquier otro. Acepte los cambios. Index on El comando para crear un índice es INDEX ON. Como hay varias clases de índices, el comando tiene muchas variantes. Pero nos reduciremos a crear índices compuestos estructurales, que son los mejores y más eficientes, por lo que las variantes se reducen. Luego de INDEX ON se coloca la expresión del índice, que es uno o más campos, transformados por funciones de caracteres si hace falta. Si son varios campos o funciones sobre ellos, se concatenan con el operador +. A continuación sigue la palabra TAG y el nombre que va a tener el índice. Todo lo anterior es obligatorio. Opcionalmente se pueden usar las cláusulas que se exponen a continuación. La cláusula opcional ASCENDING, que se supone escrita, hace que el índice ordene los registros en secuencia ascendente. La contraria, también optativa, es DESCENDING, que debe incluirse si se desea secuencia descendente. Para crear el índice NOMBRE del punto anterior, el comando sería index on nombre tag nombre Examine la tabla y active el índice NOMBRE. Verá los registros ordenados por ese campo. Dir El comando DIR, que también se puede escribir DIRECTORY, muestra los archivos de una carpeta en el escritorio. Si no se indica una carpeta, se aplica a la carpeta actual, es decir, la de trabajo. Si escribe DIR sin agregar datos adicionales, muestra las tablas, una por línea, indicando su nombre, fecha de creación, tamaño en bytes, cantidad de registros, etc. Emita DIR en la ventana COMANDOS. 16

Si indica un patrón luego de la palabra DIR, pero no indica extensión, se listan las tablas que responden a él. En el patrón se pueden usar los comodines? y *. El? indica que en la posición donde aparece puede haber cualquier carácter. El * indica que en varias posiciones puede haber cualquier carácter. Por ejemplo, todos los comandos siguientes listan la tabla ALUMNOS: dir alumnos dir *m* dir al* dir *s dir?lumnos dir *os dir?lu* dir *no? Si hubiera otras tablas que responden a estos patrones, también serían listadas. Para qué usar patrones? Suponga que hubiera 500 tablas. Si quisiera ver datos solamente de aquellas tablas cuyo nombre responde a un patrón, usando éste en el comando DIR reduciría el listado solamente a ellas. Si en el patrón incluye la extensión, el listado incluirá las tablas y todos los archivos que respondan a él, pero listará los nombres y extensiones, no los tamaños, fechas de creación, etc. El patrón tendrá dos partes: la primera se refiere al nombre y la segunda a la extensión. Ambas partes se separan por un punto, que es indispensable. Pruebe: dir al* && Lista las tablas que empiezan con al, en este caso Alumnos dir al*.dbf && Lista las tablas que empiezan con al, en este caso Alumnos dir *.cdx && Lista todos los archivos de índices dir alum*.* && Lista todos los archivos que empiezan con alum Los && introducen comentarios al final de una línea. No son interpretados como parte del comando. No hace falta que usted los escribe. Se han colocado para explicar lo que hace cada comando. Si cualquier ventana tapa el escritorio, DIR y cualquier otro comando que escriba resultados en el escritorio se ejecutarán lo mismo, pero no se podrá ver lo escrito, salvo que se cierren las ventanas, se las cambie de lugar, se las minimice, etc. DIR puede listar archivos de cualquier otra carpeta, si se incluye el camino adecuado. Borrado del escritorio Si quiere limpiar el escritorio, puede usar VENTANA BORRAR. Clear El comando para borrar el escritorio es CLEAR, que no lleva más componentes. Archivo de índices compuesto estructural Cierre la ventana EXAMINAR si está abierta, borre el escritorio y emita dir alumnos.* Verá que hay dos archivos: ALUMNOS.DBF y ALUMNOS.CDX. El que tiene extensión DBF es la tabla ALUMNOS. El que tiene extensión CDX es el archivo donde se guardan los índices MU y NOMBRE. Como es un archivo que puede tener más de un índice, se llama compuesto. Hay otros archivos con un solo índice, menos poderosos, cuya extensión es IDX. El archivo de índices tiene el mismo nombre de la tabla, lo cual indica que es estructural. Un archivo de índices estructural siempre es compuesto. Un archivo compuesto no siempre es estructural. Un archivo compuesto estructural se abre o cierra siempre que lo hace la tabla. Si se agregan o eliminan registros, todos los índices se actualizan automáticamente. No pasa lo mismo con los archivos compuestos no estructurales, que necesitan ser abiertos y actualizados mediante comandos apropiados. Los compuestos estructurales, entonces, son los más ventajosos, por lo que desde que existen son prácticamente los únicos que se usan. De todos los índices que forman un archivo compuesto estructural, sólo uno puede estar activo. Sin embargo, los cambios que se introduzcan en la tabla, agregando, eliminando o modificando registros, actualizan todos estos índices. Alcance Hay opciones de menú y comandos que afectan a una cantidad variable de registros. ALCANCE es la cantidad de registros a afectar por esas opciones y comandos. Hay cuatro alcances: Alcance Efecto ALL Incluye todos los registros de la tabla 17

NEXT Incluye N registros siguientes, contando desde el actual. RECORD Incluye solamente el registro cuyo número de registro es N. REST Incluye desde el registro actual hasta el final de la tabla. Si se usan NEXT o RECORD, hay que proporcionar un número N, que es la cantidad de registros siguientes o el número del registro. Si hay un filtro de registros en vigencia, en el alcance se incluyen solamente los registros que pasan ese filtro. For La cláusula FOR introduce una condición lógica en un comando para modificar su comportamiento. El comando prueba la condición FOR registro a registro, dentro del ALCANCE. Todo registro que cumpla esa condición, es decir, aquél para el cual la condición resulte verdadera, será afectado por el comando. Todo registro que no la cumpla, será ignorado. El comando funciona hasta agotar la totalidad del alcance, aunque no encuentre registros que satisfagan la condición. El uso de FOR es opcional, excepto en un caso que veremos pronto. While La cláusula WHILE introduce una condición lógica en un comando para modificar su comportamiento, pero actúa de otro modo. El comando prueba la condición WHILE registro a registro, dentro del ALCANCE. Si es verdadera, el comando sigue funcionando. Si es falsa, termina la ejecución del comando. WHILE predomina sobre FOR e incluso sobre la porción remanente del ALCANCE. Si el comando termina, puede quedar una porción del alcance sin inspeccionar, dentro de la cual puede haber registros para los cuales FOR sea verdadera. El uso de WHILE siempre es opcional. Dejemos clara la diferencia entre FOR y WHILE. Sea que la tabla ALUMNOS, con el índice MU activo, tiene los siguientes registros: Mu Nombre Domicilio Sexo Registro 257 Oro, Eugenio Roca 2928 M 5 542 Suárez, Jorge Salta 101 M 3 645 Vidal, Daniel La Rioja 2246 M 7 1377 Toro, Laura Paso 339 F 6 1702 Ávila, María Mitre 7047 F 2 2388 Ruiz, Marina Belgrano 1128 F 4 2406 Alba, Alberto Córdoba 175 M 8 3161 Gil, Raúl San Martín 5928 M 10 4315 Castro, Ana Solís 4214 F 9 5201 Cortés, Luis Jujuy 8543 M 1 Veamos distintas combinaciones de ALCANCE, FOR y WHILE para un comando que los admita. Consideraremos cuál es el registro actual al momento de emitir el comando. Registro actual es aquel donde está el puntero. Reg. actual Alcance For While Regs. afectados Cualquiera All Nombre = "C" 9, 1 Cualquiera All Sexo = "M" es Ninguno. While es.f. en 6, Nombre = "C".T. en 5, 3, 7. fin del comando. Cualquiera All Sexo = "F" es.f. en 5, Nombre = "A" Ninguno fin del comando. 5 Next 5: 5, 3, 7, 6, 2 Nombre = "T" 6 6 Rest: 6, 2, 4, 8, 10, 9, 1 Sexo = "M" 8, 10, 1 6 Rest Sexo = "M" Mu < 2400 es Ninguno. While es.f. en 8,.T. en 6, 2, 4. fin del comando. Cualquier Record 4 Nombre = "T" Ninguno. Nombre del registro 4 no comienza con T. Cualquiera All Nombre # "Ávila" 5, 3, 7, 6. While es.f. en 2. 18

Para el alcance ALL no importa el registro de partida, porque se incluyen todos los registros, desde el comienzo. Tampoco importa para RECORD, pues se incluye únicamente el registro indicado. Puede que se pregunte para qué usar WHILE, pues sería posible introducir su condición dentro de FOR. Así, el Ejemplo 6, en lugar de for Sexo = "M" while Mu < 2400, podría usar for sexo = "M" and Mu < 2400. Desde un punto de vista lógico la objeción es correcta. Pero no lo es en cuanto al rendimiento. FOR examina todo el alcance y termina al agotarlo. Si la tabla tuviera gran número de registros, digamos 15.000.000, el comando que llevara ese FOR demoraría un buen rato. WHILE, por el contrario, termina el comando la primera vez que su condición resulta falsa. Esto implica que, si se activa el índice adecuado y se establece adecuadamente el registro actual antes de emitir el comando, el tiempo de inspección de los registros se reduce drásticamente. En computación, es obvio, el tiempo que tarda un comando es de gran importancia. FOR y WHILE usan condiciones lógicas que se pueden construir libremente con cualquier campo o campos. Si no hay un índice activo, el comando inspecciona los registros en el orden de grabación. Si lo hay, el comando inspecciona los registros en el orden que establece el índice. Pero el índice solamente influye en el orden de acceder a los registros; nada tiene que ver con lo que hace el comando en sí. Ir a un registro Al examinar una tabla, el menú TABLA IR AL REGISTRO tiene varias posibilidades. PRIMERO. El puntero de registros salta al primer registro de la tabla. ÚLTIMO. El puntero salta al último registro de la tabla. SIGUIENTE. El puntero salta al registro siguiente. ANTERIOR. El puntero salta al registro anterior. Los cuatro casos anteriores tienen un comportamiento diferente, según haya o no un índice activo. Si no hay un índice activo: PRIMERO es el que tiene número de registro 1, es decir el primero grabado. Para simplificar, en lugar de decir "registro que tiene número de registro X", diremos "registro X". ÚLTIMO es el grabado al final. Si la tabla tiene 150 registros, último es el registro 150. SIGUIENTE es el que sigue al actual en orden de grabación. Si el puntero está en el registro 38, siguiente es el registro 39. ANTERIOR es que precede al actual en orden de grabación. Si el puntero está en el registro 38, anterior es el registro 37. Si hay un índice activo, el comportamiento es diferente: PRIMERO es el que el índice indica que está al comienzo, el cual no necesariamente es el registro 1. ÚLTIMO es el que el índice indica que está al final. Por ejemplo, si la tabla ALUMNOS tuviera nada más que cuatro registros, cuyo campo MU en orden de grabación fuera: Mu Registro 2154 1 1259 2 3275 3 2048 4 Si se activa el índice MU, cuya expresión es el campo MU, los registros se verían ahora: Mu Registro 1259 2 2048 4 2154 1 3275 3 19