Professional Documents
Culture Documents
Los archivos proporcionan una manera de almacenar informacin a largo plazo. Visual Basic ofrece tres
formas de acceder a los datos:
Archivo secuencial. Archivo de texto plano. Se lee una lnea cada vez. Cada lnea podr ser
tan larga como quiera. Cuando se empieza a leer un archivo secuencial, se empieza por la
primera lnea y se contina con la siguiente hasta llegar al final. Este tipo de datos no suele
ser el adecuado para almacenar grandes series de nmeros porque se almacenan en forma
de cadena de caracteres. Ejemplos: archivos TXT
Archivo aleatorio. Su contenido puede ser ledo y escrito en el orden que se necesite. Todas
las lneas deben ser del mismo tamao. Asumiremos que est formado por un conjunto de
registros de la misma longitud. Cada registro individual se identifica con un nico nmero y
puede ser ledo, escrito o actualizado. Ejemplos: archivos que simulen bases de datos.
Archivo binario. Es una coleccin de bytes o secuencia numerada de caracteres,
independientemente de la estructura del mismo. Ofrecen la posibilidad de almacenar los
datos como se quiera, aunque para poder acceder a ellos, es necesario conocer cmo fueron
escritos. Ejemplos: archivos EXE
7.2.- ARCHIVOS DE ACCESO SECUENCIAL.
ABRIR ARCHIVOS SECUENCIALES
La instruccin Open (abrir) le dice a Visual Basic a qu archivo debe acceder. La sintaxis es:
Open NombreDeArchivo For {Input | Output| Append} As #NmeroDeArchivo
donde Input indica si se quiere leer del archivo, Output si se quiere escribir de l, Append si se quiere aadir
informacin al final del fichero y, NumeroDeArchivo es un nmero entre 1 y 255. Si se trata de abrir para
lectura un archivo que no existe, se producir un error. Si se abre para escritura Visual Basic crear un
nuevo archivo, reemplazando cualquier archivo con ese nombre. Si no se sabe qu nmero de archivo est
libre, se utilizar el siguiente cdigo:
NumArchivo = FreeFile
Open NomArch For {Input | Output} As #NumArchivo
CERRAR ARCHIVOS SECUENCIALES
Despus de trabajar con un archivo, se debe cerrar con la instruccin Close, cuya sintaxis es:
Close #NmeroDeArchivo
Si la intruccin Close se utiliza sin poner NumeroDeArchivo, se cerrarn todos los ficheros abiertos.
LEER DE ARCHIVOS SECUENCIALES
Para leer de un archivo secuencial se utilizar la instruccin Line Input que permite leer una lnea cada vez
y que tiene la sintaxis:
Line Input #NmeroDeArchivo, VariableDeCadena
o bien se utilizarn las rdenes:
Input #NmeroDeArchivo, VariableDeCadena
VariableDeCadena = Input(NmCaracteres, #NmeroDeArchivo)
donde la ltima instruccin, permite leer un nmero determinado de caracteres y, est limitado a ficheros de
32.767 bytes mximo.
La funcin EOF (Fin De Fichero) indica cundo se acaba un archivo. A esta funcin hay que facilitarle el
nmero de archivo correspondiente y, devolver True si se ha ledo toda la informacin del archivo. La
funcin LOF (Longitud De Archivo) indica la longitud de un archivo.
Por tanto, para leer de un archivo de acceso secuencial se seguirn los pasos:
Abrir el fichero para lectura con: Open NombreDeArchivo For Input As #NmeroDeArchivo
Input #NmeroDeArchivo,
VariableDeCadena; o
Write y Print son diferentes. Write inserta comas entre los distintos items a escribir en el fichero. Si se
desean conservar los valores de un archivo abierto para escritura, se tendr que abrir en modo Append y
no Output.
Por tanto, para escribir en un archivo de acceso secuencial se seguirn los pasos:
Abrir el fichero para escritura con: Open NombreDeArchivo For Output As #NmeroDeArchivo
Modificar el ejercicio del Editor para que se pueda grabar o recuperar el texto de un
archivo. debe aparecer un nuevo formulario en el que el usuario introducir el nombre
del fichero a grabar o recuperar, incluida la ruta. Se deben controlar los posiblers
errores que aparezcan al intentar acceder a un archivo que no exista.
1. Modificar el ejercicio anterior para que el usuario pueda escoger la unidad, directorio y
nombre del fichero a recuperar.
Abrir el fichero para acceso binario con: Open NombreDeArchivo For Binary As
#NmeroDeArchivo
End If
La propiedad Attributes indica los atributos de un campo. Para saber si un campo tiene un
determinado atributo, se har un And con el valor del atributo a verificar. Las constantes DB_...
estn definidas en el fichero ...vbdataconstant.txt
Algunos eventos que se producen en un control de datos son:
Reposition. Se produce despus de que un determinado registro pase a ser el
registro actual. Su sintaxis es Sub Data1_Reposition()
Validate. Se produce justo antes de que un determinado registro pase a ser el
registro actual. Ocurre antes de una operacin Update, Delete o Close. Su sintaxis
es Sub Data1_Validate(Action As Integer, Save As Integer). Para saber la causa
que origin el suceso Validate, habr que examinar el parmetro Action. Este
parmetro se corresponde con el tipo de operacin que caus este suceso. Los
valores que puede tomar se pueden localizar en el fichero ...vbconstant.txt y
empiezan por DATA_ACTION... El parmetro Save toma el valor True si cualquier
control ligado al control de datos cambia. Para saber qu control ha cambiado,
habr que evaluar la propiedadDataChanged de cada uno de ellos. Durante este
suceso, no se podrn utilizar los mtodos Move.... En su lugar se utilizar el
parmetro Action.
UTILIZADES ADICIONALES
Las utilidades adicionales que se pueden utilizar en aplicaiones complejas son:
Control de transacciones. Una transaccin es una serie de cambios que se quieren hacer
sobre una base de datos con la posibilidad de deshacerlos. Las tres sentencias de Visual
Basic para realizar transacciones son: BeginTrans, CommitTrans y RollBack. La forma de
utilizarlas lo veremos en un ejemplo.
BeginTrans
Criterio = "Ttulo Like *1 Edicin*"
Data1.Recorset.FindFirst Criterio
Do While Not Data1.Recordset.NoMatch
If Not Data1.Recordset.NoMatch Then
Data1.Recordset.Delete Borrar registro
RegsBorrados = RegsBorrados + 1
End If
Data1.Recorset.FindNext Criterio
Loop
If RegsBorrados = 0 Then
RollBack
Exit Sub
End If
Msg = "Est seguro que desea borrar " & RegsBorrados & " registros?"
If MsgBox(Msg, 17, "Borrar registros?") <>1 Then
RollBack Deshacer los cambios
Else
CommitTrans Borrar Registros
End If
Mtodos UpdateRecord, que guarda valores contenidos en los controles ligados
correspondientes al registro actual. Su ejecucin no provoca el suceso Update.
Y UpdateControls, que actualiza los controles ligados con los valores del registro actual.
Ambos mtodos ejecutan sus acciones sin cambiar de registro actual.
Suceso Error, que se produce si ocurre un error en tiempo de ejecucin. til para
controlar los errores. Su sintaxis es: Sub Data1_Error(DataErr As Integer, Response As
GetPrivateProfileInt
WritePrivateProfileString
Estas funciones son parte de la API de Windows. Son fucniones externas a Visual Basic, por lo que
deben ser declaradas en la seccin general de declaraciones de un formulario del proyecto Visual,
o en la seccin de declaraciones de un mdulo y declaradas como pblicos.