Advertisement
idsystems

VBBD_Ejercicio 15_Agenda

Feb 6th, 2012
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ' Codigo para pegar en el formulario de la Agenda2
  2.  
  3. Option Explicit  
  4.    
  5. 'Variables  
  6. '##################################################  
  7.  
  8. ' Estructura para los datos de los contactos de la agenda  
  9. Private Type Contacto  
  10.     Nombre As String * 40  
  11.     Apellido As String * 50  
  12.     Telefono As String * 40  
  13.     Mail As String * 70  
  14.     Nota As String * 250  
  15. End Type  
  16.    
  17. 'Variables para utilizar la estructura anterior  
  18. Dim Datos As Contacto  
  19. Dim DatosTemp As Contacto  
  20.    
  21. 'Variables para el archivo de los datos de contacto y temporal  
  22. Dim FileFree As Integer  
  23. Dim FileTemp As Integer  
  24.    
  25. 'Variables para la posición del primer y último registro  
  26. Dim RegActual As Long  
  27. Dim RegUltimo As Long  
  28. ' Variable para la posición Temporal del registro  
  29. Dim RegActualTemp As Long  
  30.    
  31. Dim Pos As Integer, p As Integer  
  32.    
  33.    
  34.    
  35.    
  36. '######################################################  
  37. 'Funciones y procedimientos  
  38. '######################################################  
  39.  
  40.    
  41.    
  42. ' Subrutina que guarda los datos en el archivo  
  43. '#############################################  
  44.  
  45. Private Sub GuardarDatos()  
  46.    
  47. 'Asignamos los datos de la estructura con el contenido de los textBox  
  48. With Datos  
  49.    
  50.     .Nombre = txtNombre.Text  
  51.     .Apellido = txtApellido  
  52.     .Telefono = txtTelefono.Text  
  53.     .Nota = txtNota.Text  
  54.     .Mail = Trim(txtMail)  
  55.    
  56. End With  
  57.    
  58. 'Escribimos los datos en el archivo y en la posición  
  59. Put #FileFree, RegActual, Datos  
  60. End Sub  
  61.    
  62. ' Subrutina que Visualiza los datos en los textBox  
  63. '##################################################  
  64.  
  65. Private Sub VisualizarDatos()  
  66.    
  67. 'Lee del fichero en el registro posicionado y almacena los datos_ _  
  68. en la la variable UDT  
  69. Get #FileFree, RegActual, Datos  
  70.    
  71. ' Mostramos los datos en las cajas de texto  
  72. With Datos  
  73.     txtApellido = Trim(.Apellido)  
  74.     txtNombre = Trim(.Nombre)  
  75.     txtTelefono = Trim(.Telefono)  
  76.     txtMail = Trim(.Mail)  
  77.     txtNota.Text = Trim(.Nota)  
  78. End With  
  79.    
  80. 'Mostramos en el control Label la posición del registro actual _  
  81. y la cantidad  o Total de registros que hay en el archivo  
  82. lblStatus.Caption = "Registro Actual: " & CStr(RegActual) & vbNewLine _  
  83.                     & " Total de registros: " & CStr(RegUltimo)  
  84.    
  85. End Sub  
  86.    
  87. 'Botón que elimina un registro del archivo  
  88. '############################################  
  89.  
  90. Private Sub cmdEliminar_Click()  
  91.    
  92. Pos = RegActual  
  93.    
  94. If MsgBox(" Está seguro de eliminar el contacto ? ", vbYesNo) = vbNo Then  
  95.    
  96. txtNombre.SetFocus  
  97.    
  98. Exit Sub  
  99. End If  
  100.    
  101. ' Verificamos que el archivo temporal no exista, si existe se elimina  
  102. If Dir("Temporal.tmp") = "Temporal.tmp" Then  
  103. Kill "Temporal.tmp"  
  104. End If  
  105.    
  106. FileTemp = FreeFile  
  107. 'Abrimos y creamos un nuevo fichero temporal  
  108. Open "Temporal.tmp" For Random As FileTemp Len = Len(DatosTemp)  
  109.    
  110. RegActual = 1  
  111. RegActualTemp = 1  
  112.    
  113. 'Se recorren los registros del archivo  
  114.  
  115. For p = 1 To RegUltimo - 1  
  116.    
  117.     Get #FileFree, RegActual, Datos  
  118.        
  119.     'Este es el registro que se elimina  
  120.    If RegActualTemp = Pos Then  
  121.         RegActual = RegActual + 1  
  122.     End If  
  123.        
  124.     Get #FileFree, RegActual, Datos  
  125.    
  126.    
  127.     With DatosTemp  
  128.         .Apellido = Trim(Datos.Apellido)  
  129.         .Nombre = Trim(Datos.Nombre)  
  130.         .Telefono = Trim(Datos.Telefono)  
  131.         .Mail = Trim(Datos.Mail)  
  132.         .Nota = Trim(Datos.Nota)  
  133.     End With  
  134.        
  135.     'Escribe en el archivo temporal los datos  
  136.      
  137.     Put #FileTemp, RegActualTemp, DatosTemp  
  138.    
  139.     RegActual = RegActual + 1  
  140.     RegActualTemp = RegActualTemp + 1  
  141.    
  142. Next  
  143.    
  144.    
  145. Close FileFree  
  146. 'Elimina el archjivo con los datos  
  147. Kill "Datos.dat"  
  148. Close FileTemp  
  149.    
  150. 'Renombra el archivo temporal a datos.dat  
  151. Name "Temporal.tmp" As "Datos.dat"  
  152.    
  153.    
  154. ' Mostramo los datos en los textbox  
  155. Cargar  
  156. RegActual = Pos  
  157. VisualizarDatos  
  158.    
  159. End Sub  
  160.    
  161. Private Sub cmdGuardar_Click()  
  162. GuardarDatos  
  163. End Sub  
  164.    
  165. Private Sub Cmdsalir_Click()  
  166. 'Guarda los cambios en el archivo antes de salir  
  167. GuardarDatos  
  168.    
  169. 'cierra el archivo abierto  
  170. Close #FileFree  
  171. End  
  172. End Sub  
  173.    
  174. Private Sub form_load()  
  175.    
  176. 'Carga el primer registro del archivo  
  177. Cargar  
  178. 'Selecciona en el combo para la búsqueda de datos  
  179. Combo1 = Combo1.List(0)  
  180.    
  181. Cargarcaptions  
  182.    
  183. End Sub  
  184. Private Sub Cargar()  
  185.    
  186. FileFree = FreeFile  
  187. Open "Datos.dat" For Random As FileFree Len = Len(Datos)  
  188.    
  189. RegActual = 1  
  190. ' Almacenamos la posición del último registro  
  191. RegUltimo = LOF(FileFree) / Len(Datos)  
  192.    
  193. If RegUltimo = 0 Then  
  194. RegUltimo = 1  
  195. End If  
  196.    
  197. 'Cargamos los datos en los Textbox  
  198. VisualizarDatos  
  199. End Sub  
  200.    
  201. 'Botón que agrega un nuevo registro  
  202. '#####################################  
  203.  
  204. Private Sub cmdNuevo_click()  
  205.    
  206. RegUltimo = RegUltimo + 1  
  207.    
  208.    
  209. 'Limpia los datos de la estructura para poder agregar un nuevo registro  
  210. With Datos  
  211.     .Apellido = ""  
  212.     .Nombre = ""  
  213.     .Telefono = ""  
  214.     .Mail = ""  
  215.     .Nota = ""  
  216.    
  217. End With  
  218.    
  219. ' Graba datos vacios en el nuevo registro hasta que se presione el botón _  
  220. Guardar que graba los verdaderos datos  
  221. Put #FileFree, RegUltimo, Datos  
  222.    
  223. RegActual = RegUltimo  
  224.    
  225.    
  226. VisualizarDatos  
  227. txtNombre.SetFocus  
  228. End Sub  
  229.    
  230.    
  231. 'Botón para posicionar en el siguiente registro  
  232. '##############################################  
  233.  
  234.    
  235. Private Sub cmdSiguiente_click()  
  236.    
  237. If RegActual = RegUltimo Then  
  238.     MsgBox " Ultimo registro ", vbInformation  
  239. Else  
  240. 'Incrementa la posición  
  241. RegActual = RegActual + 1  
  242. 'Cargamos los datos en el textbox del siguiente registro  
  243. VisualizarDatos  
  244. End If  
  245. txtNombre.SetFocus  
  246. End Sub  
  247.    
  248. 'Botón para posicionar en el Anterior registro  
  249. '##############################################  
  250.  
  251. Private Sub CmdAnterior_click()  
  252.    
  253. If RegActual = 1 Then  
  254.     MsgBox " Primer registro ", vbInformation  
  255. Else  
  256.     'Decrementamos la variable que mantiene la posición del registro actual  
  257.    RegActual = RegActual - 1  
  258.     'Mostramos los datos en las cajas de texto  
  259.    VisualizarDatos  
  260. End If  
  261.    
  262. txtNombre.SetFocus  
  263.    
  264. End Sub  
  265.    
  266. 'Botón para Buscar datos  
  267. '##############################################  
  268.  
  269. Private Sub cmdBuscar_click()  
  270.    
  271. Dim Encontrado As Boolean, PosReg As Long, tmp As Contacto  
  272.    
  273. If txtBuscar = "" Then txtNombre.SetFocus: Exit Sub  
  274.    
  275. Encontrado = False  
  276.    
  277. 'Recorremos desde el primer hasta el último en busca del registro a buscar  
  278.  
  279. For PosReg = 1 To RegUltimo  
  280.    
  281. 'Leemos el registro  
  282. Get #FileFree, PosReg, tmp  
  283.    
  284. 'Si es el dato es igual salimos del bucle  
  285. If UCase(txtBuscar) = UCase(Trim(BuscarPor(tmp))) Then  
  286.     Encontrado = True  
  287.     Exit For  
  288. End If  
  289.    
  290. Next  
  291.    
  292. If Encontrado Then  
  293.        
  294.     RegActual = PosReg  
  295.     'Cargamos los datos en los text  
  296.    VisualizarDatos  
  297.    
  298. Else  
  299.     MsgBox "Nombre: " & txtBuscar & " No se ha encontrado el registro"  
  300. End If  
  301. txtNombre.SetFocus  
  302.    
  303. End Sub  
  304.    
  305. 'Función que retorna el valor de la búsqueda  
  306. '#############################################  
  307.  
  308. Private Function BuscarPor(t As Contacto)  
  309.    
  310. Select Case Combo1.ListIndex  
  311.    
  312. Case 0: BuscarPor = t.Nombre  
  313. Case 1: BuscarPor = t.Apellido  
  314. Case 2: BuscarPor = t.Telefono  
  315. Case 3: BuscarPor = t.Mail  
  316.    
  317. End Select  
  318.    
  319. End Function  
  320.    
  321. ' Establece los captions de los controles Command del formulario  
  322.  
  323. Private Sub Cargarcaptions()  
  324. Me.Caption = " Agenda simple utilizando archivos aleatorios "  
  325. CmdAnterior.Caption = " Anterior "  
  326. cmdSiguiente.Caption = " Siguiente "  
  327. cmdGuardar.Caption = " Guardar "  
  328. cmdEliminar.Caption = " Eliminar "  
  329. cmdNuevo.Caption = " Nuevo "  
  330. cmdBuscar.Caption = " Buscar "  
  331. Cmdsalir.Caption = " Salir "  
  332. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement