Sie sind auf Seite 1von 8

http://www.recursosvisualbasic.com.ar/htm/utilidades-codigo-fuente/agenda.

htm

Para manipular los datos se utiliza una estructura o UDT que tiene las siguientes variables:
Texto planoCopiar cdigo fuenteImprimir 1. ' Estructura para los datos de los contactos de la agenda 2. Private Type Contacto 3. Nombre As String * 40 4. Apellido As String * 50 5. Telefono As String * 40 6. Mail As String * 70 7. Nota As String * 250 8. End Type
' Estructura para los datos de los contactos de la agenda Private Type Contacto Nombre As String * 40 Apellido As String * 50 Telefono As String * 40 Mail As String * 70 Nota As String * 250 End Type

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

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 : Botn para ir al anterior registro 2. cmdSiguiente : Botn para ir al siguiente registro 3. cmdGuardar : Botn para guardar los cambios cuando se seleccion previamente la opcin Nuevo Registro 4. cmdEliminar: Elimina el registro actual 5. cmdNuevo : Aade un nuevo reg 6. cmdBuscar : Para buscar 7. Cmdsalir : Descarga el Form

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 aadir 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 nmero 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 cdigo fuente en el formulario:

Texto planoCopiar cdigo fuenteImprimir 1. Option Explicit 2. 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 posicin del primer y ltimo registro 24. Dim RegActual As Long 25. Dim RegUltimo As Long 26. ' Variable para la posicin 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 te xtBox 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 posicin 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 posicin del registro actual _ 79. y la cantidad o Total de registros que hay en el archivo 80. lblStatus.Caption = "Registro Actual: " & CStr(RegActual) & vbNe wLine _ 81. & " Total de registros: " & CStr(RegUltimo) 82. 83. End Sub 84. 85. 'Botn 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 el imina 100. If Dir("Temporal.tmp") = "Temporal.tmp" Then 101. Kill "Temporal.tmp" 102. End If 103. 104. FileTemp = FreeFile 105. 'Abrimos y creamos un nuevo fichero temporal 106. Open "Temporal.tmp" For Random As FileTemp Len = Len(DatosT emp) 107. 108. RegActual = 1 109. RegActualTemp = 1 110. 111. 'Se recorren los registros del archivo 112. 113. For p = 1 To RegUltimo - 1 114. 115. Get #FileFree, RegActual, Datos 116. 117. 'Este es el registro que se elimina 118. If RegActualTemp = Pos Then 119. RegActual = RegActual + 1 120. End If 121.

122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187.

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 Next Close FileFree 'Elimina el archjivo con los datos Kill "Datos.dat" Close FileTemp 'Renombra el archivo temporal a datos.dat Name "Temporal.tmp" As "Datos.dat" ' Mostramo los datos en los textbox Cargar RegActual = Pos VisualizarDatos End Sub Private Sub cmdGuardar_Click() GuardarDatos End Sub Private Sub Cmdsalir_Click() 'Guarda los cambios en el archivo antes de salir GuardarDatos 'cierra el archivo abierto Close #FileFree End End Sub Private Sub form_load() 'Carga el primer registro del archivo Cargar 'Selecciona en el combo para la bsqueda de datos Combo1 = Combo1.List(0) Cargarcaptions End Sub Private Sub Cargar() FileFree = FreeFile Open "Datos.dat" For Random As FileFree Len = Len(Datos) RegActual = 1

188. ' Almacenamos la posicin del ltimo registro 189. RegUltimo = LOF(FileFree) / Len(Datos) 190. 191. If RegUltimo = 0 Then 192. RegUltimo = 1 193. End If 194. 195. 'Cargamos los datos en los Textbox 196. VisualizarDatos 197. End Sub 198. 199. 'Botn que agrega un nuevo registro 200. '##################################### 201. 202. Private Sub cmdNuevo_click() 203. 204. RegUltimo = RegUltimo + 1 205. 206. 207. 'Limpia los datos de la estructura para poder agregar un nu evo registro 208. With Datos 209. .Apellido = "" 210. .Nombre = "" 211. .Telefono = "" 212. .Mail = "" 213. .Nota = "" 214. 215. End With 216. 217. ' Graba datos vacios en el nuevo registro hasta que se pres ione el botn _ 218. Guardar que graba los verdaderos datos 219. Put #FileFree, RegUltimo, Datos 220. 221. RegActual = RegUltimo 222. 223. 224. VisualizarDatos 225. txtNombre.SetFocus 226. End Sub 227. 228. 229. 'Botn para posicionar en el siguiente registro 230. '############################################## 231. 232. 233. Private Sub cmdSiguiente_click() 234. 235. If RegActual = RegUltimo Then 236. MsgBox " Ultimo registro ", vbInformation 237. Else 238. 'Incrementa la posicin 239. RegActual = RegActual + 1 240. 'Cargamos los datos en el textbox del siguiente registro 241. VisualizarDatos 242. End If 243. txtNombre.SetFocus 244. End Sub 245. 246. 'Botn para posicionar en el Anterior registro 247. '############################################## 248. 249. Private Sub CmdAnterior_click() 250. 251. If RegActual = 1 Then

252. 253. 254.

MsgBox " Primer registro ", vbInformation Else

'Decrementamos la variable que mantiene la posicin del registro actual 255. RegActual = RegActual - 1 256. 'Mostramos los datos en las cajas de texto 257. VisualizarDatos 258. End If 259. 260. txtNombre.SetFocus 261. 262. End Sub 263. 264. 'Botn para Buscar datos 265. '############################################## 266. 267. Private Sub cmdBuscar_click() 268. 269. Dim Encontrado As Boolean, PosReg As Long, tmp As Contacto 270. 271. If txtBuscar = "" Then txtNombre.SetFocus: Exit Sub 272. 273. Encontrado = False 274. 275. 'Recorremos desde el primer hasta el ltimo en busca del re gistro a buscar 276. 277. For PosReg = 1 To RegUltimo 278. 279. 'Leemos el registro 280. Get #FileFree, PosReg, tmp 281. 282. 'Si es el dato es igual salimos del bucle 283. If UCase(txtBuscar) = UCase(Trim(BuscarPor(tmp))) Then 284. Encontrado = True 285. Exit For 286. End If 287. 288. Next 289. 290. If Encontrado Then 291. 292. RegActual = PosReg 293. 'Cargamos los datos en los text 294. VisualizarDatos 295. 296. Else 297. MsgBox "Nombre: " & txtBuscar & " No se ha encontrado e l registro" 298. End If 299. txtNombre.SetFocus 300. 301. End Sub 302. 303. 'Funcin que retorna el valor de la bsqueda 304. '############################################# 305. 306. Private Function BuscarPor(t As Contacto) 307. 308. Select Case Combo1.ListIndex 309. 310. Case 0: BuscarPor = t.Nombre 311. Case 1: BuscarPor = t.Apellido 312. Case 2: BuscarPor = t.Telefono 313. Case 3: BuscarPor = t.Mail

314. 315. End Select 316. 317. End Function 318. 319. ' Establece los captions de los controles Command del formu lario 320. 321. Private Sub Cargarcaptions() 322. Me.Caption = " Agenda simple utilizando archivos aleatorios " 323. CmdAnterior.Caption = " Anterior " 324. cmdSiguiente.Caption = " Siguiente " 325. cmdGuardar.Caption = " Guardar " 326. cmdEliminar.Caption = " Eliminar " 327. cmdNuevo.Caption = " Nuevo " 328. cmdBuscar.Caption = " Buscar " 329. Cmdsalir.Caption = " Salir " 330. End Sub

http://www.configurarequipos.com/tema2401644-28-0.html

Das könnte Ihnen auch gefallen