Trabajar con archivos planos en VB.Net

Un archivo es, en la mayoría de los casos, simplemente un flujo unidimensional de bits , que es tratado por el sistema operativo como una única unidad lógica. Un archivo de datos informático normalmente tiene un tamaño, que generalmente se expresa en bytes; en todos los sistemas operativos modernos, el tamaño puede ser cualquier número entero no negativo de bytes hasta un máximo dependiente del sistema. Son muy utilizados para almacenar informacion y datos de usuarios a traves de los programas y fueron los precursores de los sistemas de base de datos.

En esta entrada vamos a elaborar una pequeña aplicacion que crea un archivo y permite consultar los datos que van siendo almacenados.

 Para comenzar creamos un nuevo proyecto de Vb.net y agregamos los siguientes controles:

* 3 textbox

* 1 listbox

* 4 Botones

* Varios labels

y elaboramos un diseño similar al que se observa en la siguiente imagen:

Luego, creamos un modulo llamado declaracionesModule.vb donde vamos a definir una estructura para manejar los datos que vamos a guardar y a leer del archivo. el Codigo de la estructura en nuestro modulo es:

Module declaracionesModule

Structure contactos

Public cedula As Long

Public nombres As String

Public tel As String

End Structure

Public c() As contactos

End Module

Ahora creamos un nuevo modulo llamado archivosModule.vb donde vamos a definir los metodos o procedimientos usados para leer y guardar en el archivo.
Dichos metodos dentro del modulo deberan estar de la siguiente manera:

Module archivosModule

Sub guardar(ByVal ruta As String, ByVal datos As String)

FileOpen(1, ruta, OpenMode.Append)

PrintLine(1, datos)

FileClose(1)

End Sub
Sub leer(ByVal ruta As String)

Dim datos, AUX() As String

Dim i As Integer

FileOpen(1, ruta, OpenMode.Input, OpenAccess.Read)

While Not EOF(1)

datos = LineInput(1)

AUX = Split(datos, ",")

ReDim Preserve c(i)

c(i).cedula = AUX(0)

c(i).nombres = AUX(1)

c(i).tel = AUX(2)

i += 1

End While

FileClose(1)

End Sub

End Module

ya habiendo definido las funciones de lectrura y escritura en el modulo asi como la estructura de datos para manejar el archivo, podemos pasar a codificar en nuestro formulario; para empezar escribamos lo siguiente en el boton nuevo:

Private Sub NuevoButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NuevoButton.Click

Me.cedula.Clear()
Me.nombres.Clear()
Me.tel.Clear()

End Sub

Luego, creamos una subrutina o funcion para actualizar los datos que estan en el archivo, esto lo codificamos de la siguiente manera:

Sub actualizar()

Me.lista.Items.Clear()

Dim i As Integer

Try

leer("contactos.ja")

For i = 0 To UBound(c)

lista.Items.Add(c(i).nombres)

Next

Catch ex As Exception

MsgBox(ex.Message)

End Try

End Sub

Dicha funcion actualizar la llamamos desde el evento load del formulario:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

actualizar()

End Sub

luego codificamos el proceso para guardar en el boton:

Private Sub guardarButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles guardarButton.Click

Dim datos As String

Try

datos = cedula.Text & "," & nombres.Text & "," & tel.Text

guardar("contactos.ja", datos)

MsgBox("Datos guardados con exito...", MsgBoxStyle.Information, "Notificacion")

actualizar()

Catch ex As Exception

End Try

End Sub

ahora vamos a crear la funcion que se encargara de buscar los datos en el archivo, para ello vamos a sobrecargar un metodo, es decir, vamos a crear 2 funciones con el mismo nombre pero que reciben diferentes tipos de datos, en el siguiente segmento veremos la busqueda por cedula o tipo numerica:

Function buscar(ByVal buscado As Long) As Integer
Dim i As Integer

For i = 0 To UBound(c)

If buscado = c(i).cedula Then

Return i

Exit Function

End If

Next

End Function

ahora creamos otra funcion elaborando dicha sobrecarga para que se permita la busqueda por nombre o por cadena de caracteres (String)

Function buscar(ByVal buscado As String) As Integer

Dim i As Integer

For i = 0 To UBound(c)

If buscado = c(i).nombres Then

Return i

Exit Function

End If

Next

End Function

Bien ya hemos creado los metodos principales de busqueda sobrecargados, ahora creamos un nuevo procedimiento para listar o mostrar los datos que han sido encontrados segun la busqueda:

Sub ver(ByVal i As Integer)

Try

cedula.Text = c(i).cedula

nombres.Text = c(i).nombres

tel.Text = c(i).tel

Catch ex As Exception

MsgBox("ERROR : 1234 " & ex.Message)

End Try

End Sub

Luego Invocamos a cada una de las funciones en el boton buscar como se puede ver a continuacion:

Private Sub buscarButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles buscarButton.Click

Try

If Len(cedula.Text) = 0 Then

ver(buscar(CLng((InputBox("digite cedula a buscar")))))

Else

ver(buscar(CLng(cedula.Text)))

End If

Catch ex As Exception
End Try

End Sub

tambien invocamos a las funciones de buscar y ver en el evento SelectedIndexChanged del listbox para que al seleccionar algun nombre de la lista tambien se carguel los demas datos tal y como se ve a continuacion:

Private Sub lista_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lista.SelectedIndexChanged

ver(buscar(lista.SelectedItem))

End Sub

Para Finalizar en el boton salir colocamos la siguiente instruccion:

Private Sub salirButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles salirButton.Click

Me.Close()

End Sub

Haciendole una prueba a la aplicacion observariamos el siguiente resultado:

Bien eso es todo amigos, espero y les resulte util.

 

Descargar Aplicacion

Deja un comentario