Agenda muy simple en Visual basic utilizando Ficheros de acceso aleatorio o también denominados Random

January 12, 2019 | Author: Jose Juan Lagunes | Category: Written Communication, Computer Programming, Areas Of Computer Science, Computer Data, Computing
Share Embed Donate


Short Description

Download Agenda muy simple en Visual basic utilizando Ficheros de acceso aleatorio o también denominados Random...

Description

Agenda muy simple en Visual basic utilizando Ficheros de acceso aleatorio o también denominados Random , para almacenar los datos de los contactos de la Agenda. Una vista del ejemplo:

Para man Para manipu ipular lar los datos se uti utiliza liza una est estruc ructur tura a o UDT que tie tiene ne las siguient siguientes es variables: Texto plano Copia Copiarr código cód igo fuente f uente Imprim Imprimir ir 1.

' Estructura para los datos de los contactos de la agenda

2. 3. 4. 5. 6. 7.

Private Type Contacto Nombre As String * 40 Apellido As String * 50 Telefono As String * 40 Mail As String * 70 Nota As String * 250

8.

End Type

Como se puede ver en la imagen, tiene una opción para buscar un registro y especificar por que campo buscar, ya sea por el nombre del contacto, el Apellido, el telefono o el correo electrónico.

Pasos a seguir para armar el formulario con los controles:

Agregar en un Formulario 6 controles TextBox con los siguiente nombres: 1. 2. 3. 4. 5. 6.

txtNombre txtApellido txtTelefono txtMail txtNota txtBuscar

Luego agregar 7 CommandButton con los siguientes nombres: 1. CmdAnterior : Botón para ir al anterior registro 2. cmdSiguiente : Botón para ir al siguiente registro 3. cmdGuardar : Botón para guardar los cambios cuando previamente la opción Nuevo Registro 4. cmdEliminar: Elimina el registro actual 5. cmdNuevo : Añade un nuevo reg 6. cmdBuscar : Para buscar 7. Cmdsalir : Descarga el Form

se

seleccionó

Ahora, agregar un control ComboBox llamado Combo1. A este combo, establecerle en la propiedad Style el valor 2 ( DropDownList ) y agregarle los siguientes valores en la propiedad List: Nombre, Apellido, Telefono e Mail en ese orden

Nota: Para agregar datos en la propiedad List desde la ventana de propiedades, debes mantener la tecla Ctrl presionada y presionar la tecla Enter para añadir un nuevo dato o Item. Por último, agregar un control Label llamado lblStatus que servirá para poder mostrar cuando nos desplazamos por los registros, con los botones anterior y siguiente, el número del registro actual y la cantidad de registros que hay en el archivo. Este Label lo puedes situar en la parte inferior del formulario o donde quieras.

Colocar el código fuente en el formulario: Texto plano Copiar código fuente Imprimir 1. 2.

Option Explicit

3.

'Variables

4. 5.

'##################################################

6.

' Estructura para los datos de los contactos de la agenda

7. Private Type Contacto 8. Nombre As String * 40 9. Apellido As String * 50 10. Telefono As String * 40 11. Mail As String * 70 12. Nota As String * 250 13. End Type 14. 15. 'Variables para utilizar la estructura anterior 16. Dim Datos As Contacto 17. Dim DatosTemp As Contacto 18. 19. 'Variables para el archivo de los datos de contacto y temporal 20. Dim FileFree As Integer 21. Dim FileTemp As Integer 22. 23. 'Variables para la posición del primer y último registro 24. Dim RegActual As Long 25. Dim RegUltimo As Long 26. ' Variable para la posición Temporal del registro 27. Dim RegActualTemp As Long 28. 29. Dim Pos As Integer, p As Integer 30. 31. 32. 33. 34. '###################################################### 35. 'Funciones y procedimientos 36. '###################################################### 37. 38.

39. 40. ' Subrutina que guarda los datos en el archivo 41. '############################################# 42. 43. Private Sub GuardarDatos() 44. 45. 'Asignamos los datos de la estructura con el contenido de los textBox 46. With Datos 47. 48. .Nombre = txtNombre.Text 49. .Apellido = txtApellido 50. .Telefono = txtTelefono.Text 51. .Nota = txtNota.Text 52. .Mail = Trim(txtMail) 53. 54. End With 55. 56. 'Escribimos los datos en el archivo y en la posición 57. Put #FileFree, RegActual, Datos 58. End Sub 59. 60. ' Subrutina que Visualiza los datos en los textBox 61. '################################################## 62. 63. Private Sub VisualizarDatos() 64. 65. 'Lee del fichero en el registro posicionado y almacena los datos_ _ 66. en la la variable UDT 67. Get #FileFree, RegActual, Datos 68. 69. ' Mostramos los datos en las cajas de texto 70. With Datos 71. txtApellido = Trim(.Apellido) 72. txtNombre = Trim(.Nombre) 73. txtTelefono = Trim(.Telefono) 74. txtMail = Trim(.Mail) 75. txtNota.Text = Trim(.Nota) 76. End With 77. 78. 'Mostramos en el control Label la posición del registro actual _ 79. y la cantidad o Total de registros que hay en el archivo 80. lblStatus.Caption = "Registro Actual: " & CStr(RegActual) & vbNewLine _ 81. & " Total de registros: " & CStr(RegUltimo) 82. 83. End Sub 84. 85. 'Botón que elimina un registro del archivo 86. '############################################ 87. 88. Private Sub cmdEliminar_Click() 89. 90. Pos = RegActual 91. 92. If MsgBox(" Está seguro de eliminar el contacto ? ", vbYesNo) = vbNo Then

93. 94. txtNombre.SetFocus 95. 96. Exit Sub 97. End If 98. 99. ' Verificamos que el archivo temporal no exista, si existe se elimina 100. 101.

If Dir("Temporal.tmp") = "Temporal.tmp" Then Kill "Temporal.tmp"

102. 103. 104.

End If

105. 106. 107. 108. 109. 110.

'Abrimos y creamos un nuevo fichero temporal Open "Temporal.tmp" For Random As FileTemp Len = Len(DatosTemp)

111. 112.

'Se recorren los registros del archivo

113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139.

For p = 1 To RegUltimo - 1

140. 141. 142. 143.

Next

144. 145. 146. 147.

'Elimina el archjivo con los datos Kill "Datos.dat" Close FileTemp

148. 149. 150.

'Renombra el archivo temporal a datos.dat Name "Temporal.tmp" As "Datos.dat"

FileTemp = FreeFile

RegActual = 1 RegActualTemp = 1

Get #FileFree, RegActual, Datos 'Este es el registro que se elimina If RegActualTemp = Pos Then RegActual = RegActual + 1 End If Get #FileFree, RegActual, Datos

With DatosTemp .Apellido = Trim(Datos.Apellido) .Nombre = Trim(Datos.Nombre) .Telefono = Trim(Datos.Telefono) .Mail = Trim(Datos.Mail) .Nota = Trim(Datos.Nota) End With 'Escribe en el archivo temporal los datos Put #FileTemp, RegActualTemp, DatosTemp RegActual = RegActual + 1 RegActualTemp = RegActualTemp + 1

Close FileFree

151. 152. 153. 154. 155. 156.

' Mostramo los datos en los textbox Cargar RegActual = Pos VisualizarDatos

157. 158.

End Sub

159. 160.

Private Sub cmdGuardar_Click() GuardarDatos

161. 162.

End Sub

163.

Private Sub Cmdsalir_Click()

164. 165. 166.

'Guarda los cambios en el archivo antes de salir GuardarDatos

167. 168.

'cierra el archivo abierto Close #FileFree

169.

End

170. 171.

End Sub

172. 173.

Private Sub form_load()

174. 175.

'Carga el primer registro del archivo Cargar

176. 177. 178. 179. 180.

'Selecciona en el combo para la búsqueda de datos Combo1 = Combo1.List(0)

181.

End Sub

182. 183. 184. 185. 186. 187.

Private Sub Cargar()

188. 189. 190.

' Almacenamos la posición del último registro RegUltimo = LOF(FileFree) / Len(Datos)

191. 192.

If RegUltimo = 0 Then RegUltimo = 1

193. 194.

End If

195. 196.

'Cargamos los datos en los Textbox VisualizarDatos

197. 198.

End Sub

199.

'Botón que agrega un nuevo registro

200. 201.

'#####################################

202. 203. 204.

Private Sub cmdNuevo_click()

Cargarcaptions

FileFree = FreeFile Open "Datos.dat" For Random As FileFree Len = Len(Datos) RegActual = 1

RegUltimo = RegUltimo + 1

205. 206. 207. tro

'Limpia los datos de la estructura para poder agregar un nuevo regis

208. 209. 210. 211. 212. 213. 214.

With Datos .Apellido = "" .Nombre = "" .Telefono = "" .Mail = "" .Nota = ""

215. 216.

End With

217. ' Graba datos vacios en el nuevo registro hasta que se presione el b otón _ 218. Guardar que graba los verdaderos datos 219. Put #FileFree, RegUltimo, Datos 220. 221. RegActual = RegUltimo 222. 223. 224. VisualizarDatos 225. txtNombre.SetFocus 226. 227. 228.

End Sub

229.

'Botón para posicionar en el siguiente registro

230. 231. 232.

'##############################################

233. 234.

Private Sub cmdSiguiente_click()

235. 236.

If RegActual = RegUltimo Then MsgBox " Ultimo registro ", vbInformation

237.

Else

238. 239.

'Incrementa la posición RegActual = RegActual + 1

240. 241.

'Cargamos los datos en el textbox del siguiente registro VisualizarDatos

242. 243.

End If txtNombre.SetFocus

244. 245.

End Sub

246.

'Botón para posicionar en el Anterior registro

247. 248.

'##############################################

249. 250.

Private Sub CmdAnterior_click()

251. 252.

If RegActual = 1 Then MsgBox " Primer registro ", vbInformation

253. Else 254. 'Decrementamos la variable que mantiene la posición del registro actual 255. RegActual = RegActual - 1 256. 'Mostramos los datos en las cajas de texto

257.

VisualizarDatos

258. 259. 260. 261.

End If

262. 263.

End Sub

264.

'Botón para Buscar datos

265. 266.

'##############################################

267. 268.

Private Sub cmdBuscar_click()

269. 270.

Dim Encontrado As Boolean, PosReg As Long, tmp As Contacto

271. 272. 273. 274.

If txtBuscar = "" Then txtNombre.SetFocus: Exit Sub

txtNombre.SetFocus

Encontrado = False

275. 'Recorremos desde el primer hasta el último en busca del registro a buscar 276. 277. 278.

For PosReg = 1 To RegUltimo

279.

'Leemos el registro

280. 281.

Get #FileFree, PosReg, tmp

282.

'Si es el dato es igual salimos del bucle

283. 284. 285.

If UCase(txtBuscar) = UCase(Trim(BuscarPor(tmp))) Then Encontrado = True Exit For

286. 287.

End If

288. 289.

Next

290. 291. 292. 293. 294. 295.

If Encontrado Then

296. 297. o"

Else MsgBox "Nombre: " & txtBuscar & " No se ha encontrado el registr

298. 299. 300.

End If txtNombre.SetFocus

301. 302.

End Sub

303.

'Función que retorna el valor de la búsqueda

304. 305.

'#############################################

306. 307.

Private Function BuscarPor(t As Contacto)

308.

Select Case Combo1.ListIndex

RegActual = PosReg 'Cargamos los datos en los text VisualizarDatos

309. 310.

Case 0: BuscarPor = t.Nombre

311.

Case 1: BuscarPor = t.Apellido

312.

Case 2: BuscarPor = t.Telefono

313. 314.

Case 3: BuscarPor = t.Mail

315. 316.

End Select

317. 318.

End Function

319. 320.

' Establece los captions de los controles Command del formulario

321.

Private Sub Cargarcaptions()

322. 323. 324. 325. 326. 327. 328. 329.

Me.Caption = " Agenda simple utilizando archivos aleatorios " CmdAnterior.Caption = " Anterior " cmdSiguiente.Caption = " Siguiente " cmdGuardar.Caption = " Guardar " cmdEliminar.Caption = " Eliminar " cmdNuevo.Caption = " Nuevo " cmdBuscar.Caption = " Buscar " Cmdsalir.Caption = " Salir "

330.

End Sub

Nota: Si se desea agregar mas opciones, como por ejemplo el Domicilio, Pais, o cualquier otro dato, solo hay que modificar el estructura Datos y obviamente cambiar en todos los procedimientos donde se asignan y leen valores los nuevos que se han agregado.

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF