Es imprescindible almacenar muchos datos a disco. Es por esto que los sistemas manejadores de bases de datos, también conocidos como DBMS, son indispensables (si quieres saber más de este rollo, puede revisar este mensaje que escribí sobre ello).
Sin embargo, como diría la sabiduría popular: "dependiendo del sapo es la pedrada", o sea queno voy a invertir miles y miles de pesos en instalar Oracle en un servidor chiroliro para un sistema que hice para guardar las direcciones de correo y teléfonos de mis cuates. Cuando este es el caso podemos encontrar alternativas sencillas que nos permiten cumplir la función sin tener que gastar mucho. En esta ocasión voy a mostrar como usar archivos de acceso aleatorio usando Visual Basic 6.0 (hace tiempo hice lo mismo, pero usando Visual Basic 2005, lo cual puedes leer aquí).
Antes que nada, los archivos aleatorios no son adecuados para grandes cantidades de información, ya que, aunque pueda tener acceso a cualquier registro que se le pegue la gana, están ordenados conforme fueron dados de alta y este orden no es muy útil en la mayoría de las ocasiones. Por el otro lado, es gratis (bueno, ya pagaste tu computadora y periféricos y tu copia de Visual Basic 6, así que no es tan gratis que digamos...) y funciona bien para pocos registros.
Ahora sí, voy a dejar el choro mareador con el que empecé para dar lugar al problema en cuestión. El siguiente ejemplo es un programa que almacena información acerca de mis amigos, una agenda telefónica sencilla. La interfaz del programa es este:
Sin embargo, como diría la sabiduría popular: "dependiendo del sapo es la pedrada", o sea queno voy a invertir miles y miles de pesos en instalar Oracle en un servidor chiroliro para un sistema que hice para guardar las direcciones de correo y teléfonos de mis cuates. Cuando este es el caso podemos encontrar alternativas sencillas que nos permiten cumplir la función sin tener que gastar mucho. En esta ocasión voy a mostrar como usar archivos de acceso aleatorio usando Visual Basic 6.0 (hace tiempo hice lo mismo, pero usando Visual Basic 2005, lo cual puedes leer aquí).
Antes que nada, los archivos aleatorios no son adecuados para grandes cantidades de información, ya que, aunque pueda tener acceso a cualquier registro que se le pegue la gana, están ordenados conforme fueron dados de alta y este orden no es muy útil en la mayoría de las ocasiones. Por el otro lado, es gratis (bueno, ya pagaste tu computadora y periféricos y tu copia de Visual Basic 6, así que no es tan gratis que digamos...) y funciona bien para pocos registros.
Ahora sí, voy a dejar el choro mareador con el que empecé para dar lugar al problema en cuestión. El siguiente ejemplo es un programa que almacena información acerca de mis amigos, una agenda telefónica sencilla. La interfaz del programa es este:
Antes de hacer cualquier otra cosa hice un módulo que contiene código que puede ser usada por cualquier ventana que forme parte del proyecto. Aquí defino el tipo (Persona) y declaro algunas variables globales. Contacto es una variable de tipo Persona, RegActual almacena el número de registro que aparece en la ventana y TotalReg tiene el número total de registros en el archivo. Este es el código:
Una vez terminado con las declaraciones globales, comencé el código de la ventana (que llamé frmAgenda) con el evento Load. En esta subrutina cuento el número de registros que tiene el archivo para poder luego saltar de uno a otro o agregar uno al final. Este es el código:
¡Listo! Ahora ya tengo guardado en TotalReg el número de registros dados de alta. Nota: la función MuestraReg solamente pone en la ventana el registro actual (o sea, llena las cajas de texto con los datos del registro en la posición RegActual). Más adelante pongo el código.
Ahora escribo la función que guarda un registro nuevo, lo escribe al final. Abre el archivo, llena la estructura Contacto y luego usa la función Put para escribir los datos en el archivo. Al final cierra el archivo. Este es el código:
Después de esto programé la función que permite buscar un registro. Consideré que el dato por el que buscas un registro de una agenda es el nombre, así que esta fución básicamente va leyendo los registros de manera secuencial hasta encontrar el registro con el nombre deseado o que llegue al final del archivo sin encontrarlo. Este es el código:
Los siguientes botones están muy sencillas de programar. Los botones btnSig y btnAnt me permiten leer el registro siguiente y anterior, respectivamente. Lo único que hacen es modificar la variable RegActual y usan la función MuestraReg. Este es el código:
Esta es la función MuestraReg que solamente abre el archivo, lee el número de registro indicado por la variable RegActual y pone los datos de lo leído en las cajas de texto. Este es el código:
Para terminar, tengo que decirles que encontré un problemita y si alguien sabe la solución, le encargo que me escriba un comentario. La bronca es que siempre me inserta un registro en blanco al principio del archivo. Fuera de eso, todo funciona de maravilla. Intenté corregirlo viendo si el número total de registros (TotalReg) es el primero, que lo escriba en esa posición en lugar de escribirlo en esa posición + 1., pero luego me grabó un registro en blanco después del primer registro. Para que el programa funcione a todo dar, siempre hay que tener en cuenta que el primer registro con datos es el segundo.
Ojalá alguien pudiera resolver este detallito, pero pese a ello, creo que todo este rollo te puede ser útil. ¡Hasta la próxima!
¡Listo! Ahora ya tengo guardado en TotalReg el número de registros dados de alta. Nota: la función MuestraReg solamente pone en la ventana el registro actual (o sea, llena las cajas de texto con los datos del registro en la posición RegActual). Más adelante pongo el código.
Ahora escribo la función que guarda un registro nuevo, lo escribe al final. Abre el archivo, llena la estructura Contacto y luego usa la función Put para escribir los datos en el archivo. Al final cierra el archivo. Este es el código:
Después de esto programé la función que permite buscar un registro. Consideré que el dato por el que buscas un registro de una agenda es el nombre, así que esta fución básicamente va leyendo los registros de manera secuencial hasta encontrar el registro con el nombre deseado o que llegue al final del archivo sin encontrarlo. Este es el código:
Los siguientes botones están muy sencillas de programar. Los botones btnSig y btnAnt me permiten leer el registro siguiente y anterior, respectivamente. Lo único que hacen es modificar la variable RegActual y usan la función MuestraReg. Este es el código:
Esta es la función MuestraReg que solamente abre el archivo, lee el número de registro indicado por la variable RegActual y pone los datos de lo leído en las cajas de texto. Este es el código:
Para terminar, tengo que decirles que encontré un problemita y si alguien sabe la solución, le encargo que me escriba un comentario. La bronca es que siempre me inserta un registro en blanco al principio del archivo. Fuera de eso, todo funciona de maravilla. Intenté corregirlo viendo si el número total de registros (TotalReg) es el primero, que lo escriba en esa posición en lugar de escribirlo en esa posición + 1., pero luego me grabó un registro en blanco después del primer registro. Para que el programa funcione a todo dar, siempre hay que tener en cuenta que el primer registro con datos es el segundo.
Ojalá alguien pudiera resolver este detallito, pero pese a ello, creo que todo este rollo te puede ser útil. ¡Hasta la próxima!
2 comentarios:
Ke onda tony soy mesi
ps yo diria ke poner en el boton siguiente o en el form load un ciclo do while ke cheke si el registro es igual a nada
(do while ... = "")
... = ... + 1
loop
bno yo digo ke esa podria ser una solucion jaja ske asi me sirvio a mi en mi proyecto final
bno tony aila vemos
Feliz Dia tony. tqm! :*
Publicar un comentario