Como podemos comprobar en el organigrama del ejemplo, el bucle no tiene en realidad ninguna complejidad, solo hay que asegurarse en el mismo de que tras la lectura debemos filtrar que el registro que se ha leído está ocupado, para que pase a proceso.
Private Sub Bucle(Hasta as Integer)
Dim Posición as Integer
Posicion = 1 ' iniciar contador
While Posicion <= Hasta
FileGet(CanalAgenda, Reg, Posicion)
Select Case Reg.Nom <> Space(15)
Case True ' registro ocupado
' Acción de proceso
End Select
Posicion = Posicion + 1 ' Incremento del contador
End While
End Sub
Si revisamos las acciones de alta, baja, modificación, y las comparamos veremos que los cambios son mínimos.
Y como son mínimos podemos hacer una fusión de todos y obtener un único programa que sea capaz de realizar todas las tareas de mantenimiento ahorrando código y complejidad cara al usuario.
Por lo tanto podría quedar de la siguiente forma la tarea de mantenimiento:
Select Case Campo00.Text <> ""
Case True
Posicion = CLng(Campo00.Text)
Select Case Posicion
Case 1 To 20
FileGet(CanalAgenda, Reg, Posicion) ' Lectura
Select Case Reg.Nom <> StrDup(15, " ")
Case True ' Ocupado
Visualiza() ' Visualizar datos y esperar
Case Else ' Código libre, dejamos que se continúe
End Select ' Campo siguiente
Case Else ' Código fuera de rango
Mensaje = "Código fuera de rango"
End Select
Case Else ' Valor inadecuado
Mensaje = "Valor del campo incorrecto"
End Select
Explicación filosófica de la propuesta.
Select Case Reg.Nom <> StrDup(15, " ")
Case True ' Ocupado
Visualiza() ' Visualizar datos y esperar
Case Else ' Código libre, dejamos que se continúe
End Select ' Campo siguiente
Preguntamos si el registro leído esta ocupado.
Select Case Reg.Nom <> StrDup(15, " ")
Case True ' Ocupado
Visualiza() ' Visualizar datos y esperar
Case Else ' Código libre, dejamos que se continúe
End Select ' Campo siguiente
Si está ocupado visualizamos su contenido, se pasa al siguiente dato y se queda a la espera de que
el usuario seleccione la opción de borrar.
desee introducir un código nuevo, retrocediendo al campo código.
o continúe en el campo actual realizando por tanto una modificación.
Select Case Reg.Nom <> StrDup(15, " ")
Case True ' Ocupado
Visualiza() ' Visualizar datos y esperar
Case Else ' Código libre, dejamos que se continúe
End Select ' Campo siguiente
No se realiza ninguna acción, se pasa al siguiente campo y se asume que es un alta, un dato nuevo.
Si es un error porque quería acceder a un código existente, como la pantalla está vacía comprobará si es un error el código que ha introducido y si no lo es podrá ver que el código no está grabado, porque no se visualiza nada.
Este criterio es fácil de comprender por quien utiliza el programa y fácil de implementar.
Tal cual, evidentemente con los cambios requeridos por una base de datos, se aplica para los mantenimientos de las tablas de la base de datos.
El uso de un archivo Random permite direccionar los datos que se desean leer o grabar.
Conviene reservar o generar todo el espacio que va a utilizar el archivo con blancos para facilitar la gestión.
El asignar un espacio al archivo no significa que no pueda aumentar su capacidad de almacenamiento más adelante.
El sistema más cómodo de direccionamiento es relacionar el código del dato con la posición del mismo en el archivo.
Siempre conviene realizar una lectura de comprobación para saber cual es la situación del registro que vamos a tratar.
Actualizar es grabar un registro existente con datos.
Insertar es grabar un registro que no existe, con datos.
Borrar es grabar blancos en un registro que existe.
Tienen evidentemente un uso muy concreto actualmente, puesto que las aplicaciones se desarrollan todas en un entorno de base de datos.
![]() |
Síguenos en: Facebook Sobre aulaClic Política de Cookies