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.