Está en la página 1de 12

EXPLICACIÓN

MANEJO DE ARCHIVO DE TEXTO

Contenido
Contenido: Este apunte es para aquellas personas que tienen conocimientos mínimos de
Visual Basic 6 y quieren acceder a archivos de texto con varios fines.
Ya sea crear sus propios registros o editar o visualizar archivos de texto u otro tipo.

A continuación se explica como se utilizan el acceso a archivos y además se da un ejemplo


de una agenda personal.

Este apunte esta dedicado a mis mejores amigos: los cuales siempre me han apoyado en mis
comienzos informaticos y electrónicos: Muchas gracias

Técnico Electrónico or Robótica Fernando Blaha


Técnico Electrónico or Robótica Leonardo Blaha
Técnico Electrónico or Robótica Santiago Montero
Técnico Electrónico or Robótica Emilio Biggeri

Y a mis profesores por su enseñanza y orientación espero haber aprendido algo de la


pedagogía que ustedes emplearon.

Prof. Martín A. Pacheco

Prof. Ingeniero Gustavo Alberto Vázquez

Prof. Ingeniero Jorge Cubo.

Prof. Ingeniero Graciela Azzaroni.

Autor : Técnico Electrónico or Robótica Klaus Daniel Karner


Manejo de Archivos
Para poder manejar archivos propios entendiéndose como propios a archivos lo cuales no
son base de datos Estándar como archivos de dbase o MS ACCSES (DBF o MDB) Visual
Basic tenemos 2 opciones

• Manejo en Forma Secuencial


Leo o escribo en el archivo carácter por carácter o (Renglón por renglón) de archivo sin
poder insertar caracteres o desplazarme sin dejar de leer un carácter

BOTON ABRIR ARCHIVO


Private Sub Abrir() Aquí comienza la subrutina abrir hasta el primer End Sub
Separador = Chr$(13) and Chr$(10) digo que separador es igual a ENTER y
Comenzar a la izquierda
Open Archiv For Input As #Canal Abro Archiv para leer en forma secuencial por
Canal
Do Repito la operación que esta desde el siguiente
Renglón hasta el loop until de acuerdo a la
condición del UNTIL
Input #Canal, TextoDato Leo del archivo un renglón , si vuelo a pasar por
esta línea leo el renglón siguiente
Text1.text = text1.text +Separador + TextoDato
Envio la información al text1.text sin borrar la
información del renglón anterior
Loop Until EOF(Canal) = True
Repito hasta llegar al final del archivo
Close #Canal Cierro el archivo
End Sub Termino la sub Rutina Abrir

BOTON GUARDAR ARCHIVO


Private Sub Guardar() Aquí comienza la subrutina abrir hasta el primer
End Sub

Open Archiv For Output As #Canal Abro el Archivo para grabar por medio de Canal

Write #Canal, Text1.text Guardo los datos del Text1.Text separador por
renglón

Close #Canal Cierro el archivo

End Sub Termino la sub Rutina Abrir

BOTON LIMPIAR

Private Sub Limpiar() Aquí comienza la subrutina abrir hasta el primer End Sub
Texto.Text = "" Limpio los datos del Text1.Text
End Sub Termino la sub Rutina Abrir

BOTON SALIR
Private Sub Salir() Aquí comienza la subrutina abrir hasta el primer End Sub
End Termino el programa
End Sub Termino la sub Rutina Abrir

DATOS DEL FORMULARIO


Private Sub Form_Load () Aquí comienza la subrutina abrir hasta el primer End Sub

Canal = FreeFile Indico que canal será un enlace a archivo

Archiv = “C:’\agenda.txt” Indico donde y como se va a llamar el archivo que


contendra los datos de nuestra base de datos

End Sub Termino la sub Rutina Abrir

Ej De Una Interfase

Abrir , Guardar , Limpiar , Salir son botones con la propiedad Name = su caption
• Manejo en forma Aleatoria

Leo o escribo en el archivo sin la necesidad de leer o escribir carácter por carácter
pudiendo saltear x cantidad de caracteres.

Definiciones GENERALES
Dim reg As Integer Defino la Variable reg como un Numero la cual nos
Nos informa el valor del registro en el cual nos vamos a
encontrar

Dim Archiv As String En la variable Archiv guardaremos el nombre del


Archivo que contendrá los datos de nuestra base de
datos

Private Type re Esto instrucción permite crear una base de datos a


nuestra medida aquí podremos los campos de nuestra
base y limitaremos la cantidad de caracteres

nombre As String * 10 Campo nombre de texto y guardara 10 caracteres


apellido As String * 10 Campo apellido de texto y guardara 10 caracteres
direccion As String * 20 Campo dirección de texto y guardara 20 caracteres
telefono As String * 10 Campo nombre de texto y guardara 10 caracteres no
se utiliza Integer ya que si no se llenara el campo
tomaría como valor 0 y tampoco se podría utilizar el –
para separar el numero
cp As String * 4 Campo Código Postal de texto y guarda 4 caracteres
localidad As String * 10 Campo localidad de texto y guardara 10 caracteres
borrado As Bolean Campo borrado nos dice si este registro se muestra o
no

End Type Aquí termino de definir la base de datos

Dim BaseDeDatos As re Defino al Objeto BaseDeDatos con la estructura de


nuestra base de datos anteriormente definida

Dim canal Como una variable del tipo VARIANT

DATOS DEL FORMULARIO


Private Sub Form_Load() De aquí hasta donde el primer end sub defino
todos los datos que se ejecutran cuando inicio el
programa

reg = 1 Defino un Numero de Registro


Archiv = "c:\agenda.txt" Indico donde y como se va a llamar el archivo que
contendra los datos de nuestra base de datos

canal = FreeFile Indico que canal será un enlace a archivo

Open Archiv For Random As canal Len = Len(BaseDeDatos)

Abro un archivo (agenda.txt) en forma aleatoria por


medio de canalN de longitud del tamaño de nuestra
base de datos

End sub FIN DE LA RUTINA DE INICIALIZACION

BOTON GRABAR
Private Sub GRABAR_Click() Esta linea de comando nos indica que a partir de aquí
hasta el primer end Sub se encontrara la información
acerca del boton grabar

BaseDeDatos.apellido = Text1.Text Transfiero el contenido de TEXT1.TEXT a


nuestra base de datos en el campo apellido

BaseDeDatos.direccion = Text2.Text Transfiero el contenido de TEXT1.TEXT a


nuestra base de datos en el campo apellido

BaseDeDatos.telefono = Text3.Text Transfiero el contenido de TEXT1.TEXT a


nuestra base de datos en el campo apellido

BaseDeDatos.nombre = Text4.Text Transfiero el contenido de TEXT1.TEXT a


nuestra base de datos en el campo apellido

BaseDeDatos.cp = Text5.Text Transfiero el contenido de TEXT1.TEXT a


nuestra base de datos en el campo apellido

BaseDeDatos.localidad = Text6.Text Transfiero el contenido de TEXT1.TEXT a


nuestra base de datos en el campo apellido

BaseDeDatos.borrado = False Fijo en la Base de Datos el campo borrado con


El valor FALSO

Put canal, Val(reg), BaseDeDatos GUARDO en el ARCHIVO en EL


REGISTRO reg nuestros datos
End Sub Termina la subrutina Grabar
BOTON ABRIR
Private Sub Abrir() Esta linea de comando nos indica que a partir de aquí
hasta el primer end Sub se encontrara la información
acerca del boton Abrir
Get canal, Val(reg), BaseDeDatos Traigo los datos de la base de datos del Registro
Reg
Text1.Text = BaseDeDatos.apellido Busco los datos del campo apellido de nuestra
Base de datos y lo transfiero al objeto Text1.text

Text2.Text = BaseDeDatos.dirección Busco los datos del campo direccion de nuestra


Base de datos y lo transfiero al objeto Text2.text

Text3.Text = BaseDeDatos.telefono Busco los datos del campo telefono de nuestra


base de datos y lo transfiero al objeto Text3.text

Text4.Text = BaseDeDatos.nombre Busco los datos del campo nombre de nuestra


base de datos y lo transfiero al objeto Text4.text

Text5.Text = BaseDeDatos.cp Busco los datos del campo cp de nuestra


base de datos y lo transfiero al objeto Text5.text

Text6.Text = BaseDeDatos.localidad Busco los datos del campo localidad de nuestra


Base de datos y lo transfiero al objeto Text6.text

End Sub Termina la subrutina Grabar

BOTON LIMPIAR
Private Sub Limpiar
Text1.Text = “” Limpia los datos del objeto Text1.text
Text2.Text = “” Limpia los datos del objeto Text2.text
Text3.Text = “” Limpia los datos del objeto Text3.text
Text4.Text = “” Limpia los datos del objeto Text4.text
Text5.Text = “” Limpia los datos del objeto Text5.text
Text6.Text = “” Limpia los datos del objeto Text6.text
End Sub

BOTON SALIR

Private Sub Salir


Close Canal Cierro el Archivo
End Sub
Ej Grafico de la Interfase

Grabar , Abrir , Limpiar , Salir Botones con la propiedad Name = Su caption


Apellido , Telefono , Cp , Dirección Nombre , Localiad = Labels identificatorios y a su
costado un text.

Ejemplo de una agenda en fomrma aleatoria


Dim reg As Integer
Dim Archiv As String
Private Type re
nombre As String * 10
apellido As String * 10
direccion As String * 20
telefono As String * 10
cp As String * 4
localidad As String * 10
borrado As Boolean
End Type
Dim BaseDeDatos As re
Dim canal

Private Sub ACEPTAR_Click()


BaseDeDatos.apellido = Text1.Text
BaseDeDatos.direccion = Text2.Text
BaseDeDatos.telefono = Text3.Text
BaseDeDatos.nombre = Text4.Text
BaseDeDatos.cp = Text5.Text
BaseDeDatos.localidad = Text6.Text
BaseDeDatos.borrado = False
Put canal, Val(reg), BaseDeDatos
Deshabilitar_Text
Habilitar
End Sub

Private Sub AGREGAR_Click()


Habilitar_Text
reg = Val(LOF(canal) / Len(BaseDeDatos))
reg = reg + 1
Borrar_text
Deshabilitar
End Sub

Private Sub ANTERIOR_Click()


reg = reg - 1
If reg < 1 Then
reg = Val(LOF(canal) / Len(BaseDeDatos))
End If
consultar
DoEvents
Do
If BaseDeDatos.borrado = True Then
ANTERIOR_Click
End If
Loop Until BaseDeDatos.borrado = False
End Sub

Private Sub AnteriorMenu_Click()


ANTERIOR_Click
End Sub

Private Sub BORRAR_Click()


BaseDeDatos.borrado = True
Put canal, Val(reg), BaseDeDatos
BaseDeDatos.borrado = False
ANTERIOR_Click
SIGUIENTE_Click
End Sub

Private Sub CANCELAR_Click()


ANTERIOR_Click
SIGUIENTE_Click
Deshabilitar_Text
Habilitar
End Sub

Private Sub Form_Load()


reg = 1
Archiv = "c:\mati.txt"
canal = FreeFile
Open Archiv For Random As canal Len = Len(BaseDeDatos)
PRIMERO_Click
End Sub

Private Sub Form_Terminate()


Close #1
End Sub

Private Sub MODIFICAR_Click()


Habilitar_Text
Deshabilitar
End Sub

Private Sub PRIMERO_Click()


reg = 1
Do
Get canal, Val(reg), BaseDeDatos
If BaseDeDatos.borrado = True Then
If reg = Val(LOF(canal) / Len(BaseDeDatos)) Then
reg = 1
End If
reg = reg + 1
End If
Loop Until BaseDeDatos.borrado = False
consultar
End Sub

Private Sub Salir_Click()


End
End Sub

Private Sub SIGUIENTE_Click()


If reg = Val(LOF(canal) / Len(BaseDeDatos)) Then
reg = 0
End If
reg = reg + 1
consultar
DoEvents
Do
If BaseDeDatos.borrado = True Then
SIGUIENTE_Click
End If
Loop Until BaseDeDatos.borrado = False
End Sub

Private Sub SiguienteMenu_Click()


SIGUIENTE_Click
End Sub

Private Sub ULTIMO_Click()


reg = Val(LOF(canal) / Len(BaseDeDatos))
Do
Get canal, Val(reg), BaseDeDatos
If BaseDeDatos.borrado = True Then
If reg = 1 Then
reg = Val(LOF(canal) / Len(BaseDeDatos))
End If
reg = reg - 1
End If
Loop Until BaseDeDatos.borrado = False
consultar
End Sub
Public Sub Habilitar()
PRIMERO.Enabled = True
ULTIMO.Enabled = True
ANTERIOR.Enabled = True
SIGUIENTE.Enabled = True
BORRAR.Enabled = True
MODIFICAR.Enabled = True
BUSCAR.Enabled = True
AGREGAR.Enabled = True
ACEPTAR.Enabled = False
CANCELAR.Enabled = False
End Sub

Public Sub Deshabilitar()


PRIMERO.Enabled = False
ULTIMO.Enabled = False
ANTERIOR.Enabled = False
SIGUIENTE.Enabled = False
BORRAR.Enabled = False
MODIFICAR.Enabled = False
BUSCAR.Enabled = False
AGREGAR.Enabled = False
ACEPTAR.Enabled = True
CANCELAR.Enabled = True
End Sub

Public Sub Habilitar_Text()


Text1.Enabled = True
Text2.Enabled = True
Text3.Enabled = True
Text4.Enabled = True
Text5.Enabled = True
Text6.Enabled = True
End Sub

Public Sub Deshabilitar_Text()


Text1.Enabled = False
Text2.Enabled = False
Text3.Enabled = False
Text4.Enabled = False
Text5.Enabled = False
Text6.Enabled = False
End Sub

Public Sub consultar()


Get canal, Val(reg), BaseDeDatos
Text1.Text = BaseDeDatos.apellido
Text2.Text = BaseDeDatos.direccion
Text3.Text = BaseDeDatos.telefono
Text4.Text = BaseDeDatos.nombre
Text5.Text = BaseDeDatos.cp
Text6.Text = BaseDeDatos.localidad
End Sub

Public Sub Borrar_text()


Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
End Sub