You are on page 1of 6

Archivos en Visual Basic 6.

0
Una parte muy importante al trabajar con programas es el guardar el trabajo realizado en un archivo para su posterior recuperacin, edicin, etc. Visual Basic 6.0 permite guardar los archivos en un disco. Los archivos podrn ser de tres tipos:

Secuenciales De Acceso Aleatorio Binarios

Los archivos secuenciales son aquellos en los que se tiene acceso comenzando desde el principio. No se puede tener acceso a una parte sin haber pasado antes por las anteriores. Un ejemplo de este tipo de archivo son los archivos de texto. Estn escritos en caracteres ASCII y se pueden leer con el Block de Notas. Los archivos de Acceso Aleatorio graban los datos tal como estn escritos en la memoria y no son legibles por el Block de Notas. Los datos se guardan en registros y se puede tener acceso a cualquier registro directamente. Con este tipo de archivos se puede crear una base de datos simple, sin embargo, tiene la limitacin de que los registros deben tener el mismo tamao. Los archivos Binarios son iguales a los de Acceso Aleatorio con la diferencia de que el acceso no es por registros sino por Bytes; es muy poco utilizado. Todos los archivos deben abrirse para trabajar con ellos (y es aqu donde se define el tipo de archivo) y deben cerrarse luego de terminado el trabajo. Archivos Secuenciales. La sintaxis para abrir un archivo de tipo secuencial depender de lo que se desee hacer con l; si se quiere leer o escribir. No se podr entonces leer un archivo abierto para escritura ni escribir en un archivo abierto para lectura. Para abrir un archivo para lectura la sentencia ser la siguiente:
Open archivo For Input As #nFich

Donde archivo es una cadena de caracteres con la ruta y el nombre del archivo a abrir y nFich es un nmero que identifica al fichero. La sentencia para cerrar un archivo abierto, para cualquier tipo de archivo ser la misma:
Close #nFich

Si se escribe esta sentencia sin el argumento #nFich se cerrarn todos los archivos abiertos. Lo siguiente es leer los caracteres de un archivo abierto y para ello se utilizan determinadas funciones. La funcin Input lee determinada cantidad de caracteres, la cual tiene la siguiente sintaxis:
Input(caracteres,#nFich)

Donde caracteres es la cantidad de caracteres a leer. Una aclaracin con respecto a los caracteres. Un salto de lnea est determinado por la sucesin de dos caracteres no imprimibles que en cdigo ASCII tienen los cdigos 13 y 10, y la constante de Visual Basic para esta sucesin es vbCrLf; por tanto, esta funcin tomar un salto de lnea como dos caracteres. Si se quiere leer todo el contenido de un archivo se puede utilizar la funcin Input de la siguiente forma:
Input(LOF(nFich),#nFich)

Otra funcin importante es la funcin Line Input, la cual lee toda una lnea (una lnea termina con un salto de lnea, o sea, con vbCrLf). La sintaxis de esta funcin es:
Line Input #nFich, variable

Donde variable es una variable donde se almacenar la lnea leda. Si se quiere leer todo un archivo utilizando esta funcin, la sentencia puede ser la siguiente:
While Not EOF(nFich) Line Input #nFich, variable1 variable2=variable2 & variable1 Wend

Variable2 contendr todo el fichero al salir del bucle While. Tambin puede utilizarse en lugar de una variable la propiedad Caption de una etiqueta o la propiedad Text de una caja de textp, por ejemplo. Para escribir en un archivo secuencial se debe abrir el archivo para escritura y hay dos modos de apertura; el primero es:
Open archivo For Output As #nFich

Este modo de apertura reemplaza con la nueva escritura toda la escritura anterior. La segunda forma aade al final del archivo la nueva escritura, y la sentencia es:

Open archivo For Append As #nFich

Si el archivo existe se abre el archivo, si no existe se crea uno. Esto es vlido para ambos modos de apertura y para los archivos de Acceso Aleatorio y Binario, pero si se intenta abrir un archivo que no existe en modo de lectura (For Input) se generar un error en tiempo de ejecucin (Error 53). Para escribir en archivos secuenciales se utiliza la instruccin Write, la cual separa los datos mediante el carcter (,); su sintaxis es la siguiente:
Write #nFich, dato1; dato2; dato3...

Donde dato1, dato2, dato3... son datos o variables con los datos a escribir. Se puede leer luego el fichero con la funcin Input. Otra instruccin para la escritura en archivos es la instruccin Print, la cual tiene la siguiente sintaxis:
Print #nFich, Spc(n); texto

Donde Spc(n) es un argumento opcional que permite ingresar espacios antes de escribir y n el nmero de espacios, texto es el texto que se desea escribir. Se puede leer normalmente con las funciones Input y Line Input. Archivos de Acceso Aleatorio. Este tipo de archivos no son legibles por el Block de Notas, a diferencia de los secuenciales ya que no contienen caracteres ASCII. Se abren de la misma forma tanto para lectura como para escritura y si no existen se crean. La sintaxis para la apertura de este tipo es:
Open archivo For Random As #nFich Len=tamao

Este modo de apertura tiene un argumento: Len. En l se especifica el tamao de cada registro. Un registro consiste en una serie de datos los cuales se pueden almacenar en una variable y aqu se puede aprovechar las estructuras o tipos definidos por el usuario para crear una base de datos. Supngase una estructura declarada de la siguiente forma en un mdulo estndar:
Public Type persona apellido as String*10 documento as Long End Type

Cada registro almacenar una variable de tipo persona; una variable de este tipo ocupar 18 bytes (4+10 bytes + 4 bytes), por tanto la sentencia sera:

Open archivo For Random As #nFich Len=18

Tambin puede emplearse alternativamente otra expresin. Supngase declarada la variable Gabriel de tipo persona, la sentencia puede ser tambin:
Open archivo For Random As #nFich Len=Len(Gabriel)

Las funciones para leer y escribir en este tipo de archivos son las funciones Get y Put. La funcin Get lee un registro y guarda lo ledo en una variable. La sintaxis de esta funcin es la siguiente:
Get #nFich, registro, variable

Donde registro es el nmero del registro a leer y variable es la variable donde se almacenar el registro ledo. La funcin Put escribe un registro, si el registro existe lo reemplaza. Su sintaxis es la siguiente:
Put #nFich, registro, variable

Donde registro es el nmero del registro que se escribir (o reemplazar) y variable es la variable que contiene el dato a escribir en el registro. Archivos Binarios. Se trabajan de la misma forma que los archivos de Acceso Aleatorio y se leen y escriben con las funciones Get y Put, pero en vez de acceder a los datos por registros se accede por bytes. Este sistema de trabajo no es usual. La sintaxis para abrir un archivo de este tipo es:
Open archivo For Binary As #nFich Len=tamao

Funciones de trabajo con archivos. Hay varias funciones para trabajar con archivos. Algunas se han utilizado y se explican a continuacin junto con otras no vistas.
o

LOF: devuelve el tamao de un archivo abierto (en bytes). Devuelve un entero de tipo Long. Su sintaxis es:
LOF(nFich)

FileLen: devuelve un entero de tipo Long con el tamao en bytes de un archivo no abierto. Su sintaxis es:
FileLen(archivo)

EOF: devuelve un valor booleano que indica si se lleg al final de un archivo (True) o no (False). Su sintaxis es:
EOF(nFich)

LOC: devuelve un entero de tipo Long con la posicin en un archivo abierto. Si es secuencial, la ubicacin del ltimo carcter ledo y si es de Acceso Aleatorio, el ltimo registro ledo. Su sintaxis es:
LOC(nFich)

FileCopy: este procedimiento permite copiar archivos. Tiene por argumentos origen y destino, los cuales son el archivo a copiar (y su ruta) y el archivo de destino (y su ruta). Su sintaxis es:
FileCopy origen destino

Kill: este procedimiento elimina archivos. archivo es una cadena de caracteres con la ruta y el nombre del archivo a eliminar.
Kill archivo

o o o

MkDir: crea un directorio o subdirectorio. Su sintaxis es:


MkDir directorio

RmDir: elimina un directorio o subdirectorio. Su sintaxis es:


RmDir carpeta

FileDateTime: devuelve un valor de tipo Variant (Date) con la fecha y hora en que un archivo fue creado o modificado por ltima vez. Su sintaxis es:
FileDateTime(archivo)

Ejemplo Crea un nuevo proyecto estndar, aade un mdulo estndar y coloca los siguientes controles en el formulario:
Control Form Label "" Label "" Label "" "" Label "" TextBox "" Propiedad Name Name Caption Name Caption Name Caption Caption Name Caption Name Text lblEspa 0 txtIngr lblEdad Registros lblApell Valor frmArch lblDocu

"" "" ""

Index Caption Caption

0, 1, 2 cmdBusc &Buscar cmdIngr &Ingresar

CommandButton Name CommandButton Name

Escribe en el mdulo estndar a siguiente estructura:


Public Type Persona documento as Long apellido as String*12 nacimiento as Date End Type

En la ventana de cdigo del formulario escribe el siguiente cdigo:


Option Explicit Dim pers as Persona, regs as Integer, x as Byte Private Sub Form_Load() Open "c:\Windows\Temp\datbase.tmp" For Random As #1 Len=24:lblEspa.Caption=LOF(1) End Sub Private Sub cmdBusc_Click() If txtIngr(0).Text="" Then Exit Sub Else:regs=LOF(1)\24 For x=1 To regs Get #1,x,pers If txtIngr(0).Text=pers.documento Then lblDocu.Caption=pers.documento:lblApell.Caption=pers.apellido lblEdad.Caption=pers.nacimiento:Exit For End If Next x End Sub Private Sub cmdIngr_Click() If Len(txtIngr.Text>0) And isDate(txtIngr(2).Text)=True Then pers.documento=txtIngr(0).Text:pers.apellido=txtIngr(1).Text:pers.nacimie nto=txtIngr(2).Text regs=LOF(1)\24+1:Put #1,regs,pers:lblEspa.Caption=LOF(1) End If End Sub

You might also like