P< INTRODUCCION A UNA BASE DE DATOS P8 Hola denuevo, bienvenidos a una sección que intentará explicaros como trabaja una base de datos y que os permitirá sacar partido a Datastore 1.1, ese programilla que Digita te regala con tu Magic Pack. Si tienes un A500, no te preocupes, porque casi todo lo que aparece en este artículo es standar. Casi todas las bases de datos son iguales, variando pocos factores. Datastore es una database con muy poca potencia, pero si todo esto te suena a chino, te va a ayudar a iniciarte en este mundo y al final de este cursucho, cutre y salchichero podrás hacer tus propios modelos de registro y te moverás con agilidad por entre ficheros con millones de items o datos. P: * DEFINICION * ---------- P8 Una base de datos es tan sólo un conjunto de datos, ordenados de una determinada manera, para un fácil acceso y/o uso. P: * CONCEPTOS BASICOS * --------------------- P8 Fichero : Es un conjunto de registros determinado Registro : Son los datos de una misma persona, cosa,... y se componen formando una linea en horizontal. Campo : Son columnas de datos en vertical, por ejemplo, apellidos de una persona P9 EJEMPLO: HANDLE NOMBRE APELLIDOS DIRECCION VEGA CARLOS BLE JURADO C/RAFAEL ALBERTI T.L.M JESUS REYES MARTINEZ C/CARLOS jr ... P8 En este ejemplo que puede representar un fichero, la columna de handle puede ser un campo, mientras que todos los datos de la persona son un registro. Fácil, ¿ verdad ? De todos modos existe un pequeño margen de confusión, ya que cuando abres un fichero como Address Book te encuentras con un sólo registro colocado de antiuniformes maneras, claro que te puedes mover sin problemas de un regitro a otro y editar tus propios registros con el modelo que te venga dado. Hasta aquí, hemos abarcado los conocimientos que como mínimo debe saber cualquier persona con un poco de interés por la informática. Ahora es el momento de practicar, reiterar lo dicho y ampliar nuestros conocimientos hasta que Datastore se nos quede pequeña. Supongamos que ya tienes instalado el programa en el HD, y estas listo para hundir dos veces el icono de tu base de datos. Abrimos Datastore y nos encontramos con la que será nuestra pantalla de creación y no de edición como más de uno estará pensando Una pantalla con una barra de herramientas a base de iconos, una barra de título con diversos menus esperando aparecer nada más pulses con el botón derecho de tu ratón sobre ella y el resto de la pantalla ocupada por una hoja en blanco, con rectángulos entrecortados a modo de cuadrícula, acompañados de una ventanita llamada Desing Tools. Para empezar no es mala idea echar una ojeada a los ficheros que trae el programa, para que compruebes la cantidad de utilidades que te proporcionan unos pocos de encuadres bien colocados. Nos dirigimos al primer icono de la tool bar, ese folio en blanco que te abre una ventana cuando lo pulsas doblemente y escogemos el fichero que nos parezca. Una vez abierto buscamos el Record Browser (menú View) que claramente nos indica su función. Si deseamos añadir algún registro pulsamos "+", dirigimos el puntero hacia los recuadros que nos ofrecen los campos y escribimos cuanto nos plazca, o bien tomamos el comando insert record del menú Record, aunque hay ciertos campos que no admiten letras y viceversa. Mirad cuantos deseéis, pero id cerrando ficheros al par que abris, porque la Ram se satura en seguida e incluso el manejo de el puntero se hace engorroso y pesado, dando una lentitud incrible al programa. Alguien se estará dando cuenta de que estamos en el modo de edición de registros, de inglés records y de que existen con éste dos modos. El otro lo abordaremos en seguida, es el de creación, el que gustará a los más creativos. Saltemos a la creación abriendo el "Blank Record", para intentar hacer un modelo de listín de amigueros, con el mismo procedimiento de antes (icono new) o con su icono inferior inmediato. A pesar de que aquí, las ordenes new y open se usan para lo mismo son bien distintas; la primera te abre cualquier modelo de registro y la segunda además, los items ya almacenados. Tomemos la Desing Tools (menú View) para agilizar el trabajo, pues cualquier tarea que hagamos mediante estos dibujillos representativos se encontrará también entre los menús de la title bar, o barra de título. Pulsemos sobre el dibujo inmediato posterior al de nuestra preciada "flechita" (en D.tools) y arrastremos con el botón izquierdo del mouse, el rectángulo que se irá creando al ir moviéndolo. Estamos creando un campo, que enseguida te informa de su posición y otro tipo de elementos, y que te volverá a informar cada vez que lo acciones dos veces con el puntero, siempre que estes en el modo Change Desing o de creación. Lógicamente se te permite poner un nombre al campo, pues el ordenador te asigna el nomre de field1 si no lo modoficas. Pongámosle por nombre HANDLE. Al lado del dibujo del campo de nuestra ventana de herramientas, encontramos otro con una T en su centro. Lo utilizamos como el anterior y del mismo modo, nos informa de su situación, pero evidentemente este es distinto; es un Caption text y se suele usar para poner título al modelo de registro, introduciendo un texto en el recuadro que espera a que coloques el cursor en él. El texto será, Litín de Amigueros, o algo así. Al pulsar Return queda intro- ducido, después das OK, y colocas en cualquier lugar de la pantalla el rótulo creado, simplemente arrastrándolo. Todas las cajas, sean campos o no, te muestran unos puntos si las accionas una vez. Estos puntos son los gadgets por donde puedes modificar las medidas de tu caja, además del cuadro de información de dicha figura, que está siempre lista para ser sobre escrita sin ningún problema. Siguiéndo con las herramientas de la ventana Desing, encontramos un cuadrado rojo, que es una simple caja para adornar, usada como fondo. También se extiende, como los anteriores ejemplos y podemos cambiar sus colores, etc. Sin embargo, si probais a extenderla por toda la pantalla nos cubrirá el campo y el caption text, pero no os preocupeis. Para ello Datastore nos ofrece todo un menú Desing, con opciones como Move Backward, Bring to Front,... que nos resolverán la papeleta. Otra cuestión son los anteriormente citados rectángulos de fondo; si nos damos cuenta hay que respetarlos y no podemos colocar ninguna caja entre medias de dos de ellos. Este problema se soluciona solicitando la opción Snap to Grid? del menú Settings, que hace que estas "rejas" desaparezcan. Ya sólo nos queda el dibujo de la foto, que es un tanto inncesario, pues también un campo puede ser tipo foto o "picture". P: * TIPOS DE CAMPO * ============== P8 Así como nos muestra la ventana de información, un campo posee diversas variantes dependiendo de los datos que vayamos a colocar en él. Si sostenemos el gadget de <> de dicha ventana, el programa nos mostrará todos sus tipos de campo, de los cuales tendremos que elegir uno. El más conocido es el campo de texto, utilizado cuando va a ir impreso un dato alfanumérico, o de caractéres (letras). Otro muy utilizado es el de número, que es el ideal en ejemplos como la edad. Seguro que encontrais la utilidad de los otros, más explicaré uno de los más complicados. P9 ¿ Qué es un campo lógico ? °°°°°°°°°°°°°°°°°°°°°°°°°° P8 Uno de los últimos casos es el tipo True/false: Este es un campo lógico boleano, que únicamente admite 1 caracter: si(y) o no(n), verdadero(t) o falso(f)... La verdad es que no le encuentro la utilidad en un programa que aparéntemente no se puede programar. De todas formas es bueno que se conozca, dado que en algunas situaciones es muy útil: Es el día de las elecciones y tenemos que contar cuantas personas votaron a un determinado partido. Cada una de ellas tiene ocupado todo un registro lleno de campos que revelan sus datos personales y un campo boleano con un sí o un no, si eligieron al partido "x". Para el recuento, bastaría con introducir una orden que de inmediato nos ofreciera el nº de votos y/o escaños obtenidos, ahorrando trabajo. Necesitaríamos un fichero para cada partido y encima ésto no ahorraría tanto trabajo, pero es el único ejemplo que se me ocurre en estos instantes. P; Ejemplo2 (¡viva la inspiración!) P8 Llevo un almacén y todos mis productos están registrados en una base de datos, con un campo boleano llamado "vendido" en todos los registros. Viene un intermediario y se lleva el lote de azúcar disponible y yo marco con un sí en mi True/false, para que con otra sentencia (por desgracia ausente como todas en Datastore) me pase el dato de la venta a otro fichero llamado venta, en el que tengo registradas las ventas, las ganancias, las pérdias... P: * CONDICIONALES DE UN CAMPO * ========================= P8 También en la información hay un apartado para añadir condiciones muy valiosas a la hora de trabajar con una database. Al seleccionar "Condition" aparece una subventana. En esta se encuentran la primera condición y la elección de poder incorporar una segunda. La primera es por defecto "contains" (que contenga) y al lado suyo hay un recuadro para escribir lo que deseamos que contenga.Al editar será imposible poner algo contrario a lo indicado en la condición. Las condicionales están dotadas de una gran utilidad: P;Ejemplo 1 P8 Estamos en la base de datos de un asilo, en el fichero de los más ancianos, pues conviene separarlos por las cuestiones del trato, las medicinas, etc. En el campo edad necesito que la edad mínima a introducir sean los 80, porque si alguien se equivoca y pone menos, podemos cargarnos al paciente con las juergas que se montan los de 60. Para ello abrimos la ventana de información, la de condición y apretando el gadget que lleva impreso contains, seleccionamos la condición " is greater than or equals ". Escribimos en el recuadro 80 y listo. No creo que haya hecho falta decir, que el tipo de campo debe ser de nº. Como podeis comprobar existen tipos de condición, claro que yo no voy a soltar otro rollo sobre eso. P:* EDITANDO REGISTROS * ------------------ P8 Antes de nada salvemos nuestro fichero con el icono <>. Si deseamos guardarlo con una clave secreta, dirijámonos al menú Settings, Change Settings, File y Save Password with File antes de grabarlo. Si encima queremos que haga una copia de seguridad, Create Document Backups. P9 CONSEJO-CONSUELO: No os confiéis salvando y mirad bien que salvais porque a mí me ha costado escribir este artículo dos veces. P8 Saltamos al modo de edición: "Edit Records" (menú Edit). Si fuera al revés, accionaríamos Change Desing, que se encontraría en el mismo lugar. Cada uno tendrá su modelo de registro, listo para construir un fichero lleno de direcciones de amigueros (¡incluid la mía!). Para editar cada campo basta con pulsar con el puntero sobre él, escribir, y dar el teclazo a Return. Para este modo existe una librería adicional que está lista para ser editada; si alguno de vosotros a puesto handle como campo y se le repite el dato "no tiene" puede ahorrarse trabajo usándola. Es el icono que indiscutíblemente mejor la representa dentro de la tool bar. Cuando la abrimos nos recibe cómo no, con una ventana (oh! como Windouz {PCero 1}). En ella hay cierto botón NEW, que es fundamental a la hora de escribir el texto que va a recoger nuestra librería. Tecleamos NO TIENE y damos Return; se pueden poner las que queramos. Ahora cerramos la librería y llegamos hasta Handle, dejando allí el cursor. Volvemos a la librería, marcamos No tiene y usamos el botón "Introducir". Con esta librería que vamos creando, damos más rapidez a cualquier edición de registros. Cualquier registro indeseado se borra con Delete (m.Record), pero si sólo queremos dejarlo en blanco usaremos Erase (m.Edit). P: * FLITROS, BUSQUEDA Y ORDEN * ------------------------- P8 Bueno lo último que os cuento (¡por fin!) es como moverse entre un fichero y como ordenar el nuestro propio. Empezemos por el movimiento: En caso de vernos metidos en un fichero con un par de miles de registros, no es aconsejable utilizar el R.Browser porque te puede salir una ampolla en el dedo de darle al ratón. Si sabemos el nºde registro exactamente, o sabemos que ronda por ahí, aprovechamos el comando Go to. Es el icono que tiene unos pasos dibujados. Una vez nos muestre su ventana (estoy empezando a pensar que esto es mejor que W indouz {PCero 2}) podemos escribir el número de registro deseado y dejar que nos "LLEVE A". Si queremos buscar algo y no recordamos su nº, pero recordamos una parte de un campo o un simple caracter, hemos de usar el comando FIND. Es el icono-linterna. Introduce lo que recuerdes en la zona Find what. Determina si la búsqueda va a ser hacia delante(forwards) o hacia atrás (backwards). Te aconsejo que marques "backwards" si estas en el último registro. Otra de sus funciones es la de poder reemplazar el dato, además de configurar el lugar de la búsqueda; por defecto es en todos los campos. Cuando estemos listos para que lo busque, le decimos que encuentre el próximo (Find Next). Vamos ahora con los filtros o QUERY. A mi juicio son más útiles que Find. Su icono es el interrogativo. Son condiciones idénticas a las del campo, pero de búsqueda de campos que las cumpla, es decir: Lo primero es hacer un nuevo query (new, dentro de la ventana) y escoger el campo sobre el que se establecerá el query. Más tarde determinar qué tipo de condicón tomar, aunque la más corriente es contains. Rellenar el recuadro y usar nuestro nuevo filtro. Nos va a mostrar el primero que encuentre como record1, el segundo, como record2,... así que si nos movemos con el R.Brower sólo lo haremos por nuestro filtro. La táctica para anular éste es usar el query, "Show All Records". Tenemos la suerte de que ordenar todo el fichero es más fácil que ordenar una habitación (si no, mis ficheros serían un desastre). Comenzamos por tomar la sentencia SORT. Su icono es el último. Es suficiente con modificar el <>. Optamos por un campo que nos sirva de patrón para seguir un orden y también por el orden ascendente(a,z) o descendente(z,a). Esto es todo. Lo que finalmente se suele hacer, es plasmar el primer ejemplo que puse o lo que es lo mismo, hacer un REPORTe, con la finalidad de tener una visión general o parcial a nuestro gusto, porque admite filtros. El mayor fin de tal utilidad es imprimir el fichero. Su icono es el que queda por encima del Sort. Se pueden crear, como las condicionales y meter de éstas en el mismo Repot, a modo de selección a visualizar. Se permite optar por cualquiera o todos los campos, a la hora de mostrarlos en pantalla, traspasándolos del cuadro Avilable Fiels al Chosen Fileds. Exite un espacio para la titulación y el cierre de las páginas. Tras configurar el reporte lo podemos ver con VIEW. Desde ahí lo podemos imprimir y pasar las páginas P< ---------------------------------------- P8 Desde luego, no creo que nadie haya llegado leyendo hasta aquí, pero os advierto que la próxima ( si es que admiten esta patraña en la revista) se intentará hacer mejor, e intentaré por todos los medios no ser tan repetitivo. Ahora habrá alguien tirado por los suelos de la risa, pero creedme que es muy dificil adentrarse en el apasionante mundo de AMIGA, cuando te están hablando de rutinas, y tu ni siquiera sabes dónde está la tecla Return. Mi intención era hacer que la gente se hacercara a una base de datos, y que si alguien por algún rincón de la escena se encuentra tan perdido como yo, pueda empezar a trabajar con su AMIGA y dejar de "catar" juegos y hacer swapping masivo. La próxima quizas nos metamos en la programación de SuperBase o en el manejo de Turbo. Calc. Quién dijo que no pudiéramos llevar una empresa con un AMIGA? Espero que lleguemos a meternos en Amos y... quién sabe sino acabaremos ensamblando. Me gustaría hacer un llamamiento a aquellos amigueros/as que están empezando, para que se pongan en contacto conmigo. Ya sabéis, si tenéis un mínimo de edad que ronde los 15 (mi edad), incluso podemos formar un grupo. Conoceréis el dicho ¿no? Locos unidos....... <<¡Irán al manicomio>>. P< SALUDOS DESDE MI POZILGA... P9 P.S También necesito ayuda, así que si alguien siente pena...