Formularios en Access

Estoy desarrollando un programa para una PYME, basándome en el ejemplo de "Neptuno.mdb" y necesito saber como puedo proteger la información que aparece al abrir un registro con un formulario. Me explico: cuando habro un registro con un formulario es muy falcil modificar los datos sin darse cuenta porque los formularios están creados con la opción de que se puedan modificar. Lo que me gustaría es poder hacer algún procedimiento con el cual cuando habrá el formulario si modifico o realizo algún cambio me pregunte al salir si deseo guardar los datos, siempre en el caso de que los haya modificado. Gracias
Nota: creo que los comandos BeginTrans y Comintrans tienen algo que ver con esto que pregunto.

2 Respuestas

Respuesta
1
Para proteger los registros en formularios, se pueden emplear varios métodos.
Uno que es bastante eficaz es definir las propiedades del formulario como de solo lectura, para ello, en el apartado de datos se debe elegir permitir ediciones=No.
El manejo de las propiedades del formulario, se puede utilizar con el código vba y así permitir con el toque de un botón pasar de edición a solo lectura y viceversa.
Personalmente, empleo formularios donde se permite hacer casi de todo, y me limito a bloquear/desbloquear los campos que no son modificables. El tratamiento es similar al del formulario, pero con la propiedad activado y la propiedad bloqueado.
Si quieres ampliar más información puedes consultar la ayuda de Access, o puedes realizar otra pregunta en este mismo sitio.
Respuesta
1
Perdona por el titulo. Imagino que la versión de access es la 2000, porque la única base de datos de ejemplo que pone es neptuno, si te puedes hacer con las que trae la version 97, encontraras otras dos muy interesantes para ver ejemplos, una es Pedidos.mdb y la otra Soluciones.mdb.
El código que evitaría el problema que comentas seria algo así:
Private Sub Form_Current()
' Si el pedido no tiene un cliente, no permitir al usuario modificar los
' controles de información del cliente.
On Error Resume Next
Const conBorrar = 0
' Desactivar y bloquear el control IdCliente.
' Mostrar el control IdCliente con el mismo fondo que su sección
' y sin borde, para que no se vea como un control modificable.
IDCliente.Enabled = True
IDCliente.Locked = True
IDCliente.BorderStyle = conBorrar
' Si el pedido no tiene asignado un cliente, desactivar los controles del cliente.
' El usuario debe seleccionar un cliente antes de modificar la información del cliente.
If Not IsNull(IDCliente) Then
On Error Resume Next
IDCliente.Enabled = False
IDCliente.Locked = False
MostrarProductos.Enabled = False
Dirección.Enabled = False
Ciudad.Enabled = False
Región.Enabled = False
CódPostal.Enabled = False
País.Enabled = False
FechaPedido.Enabled = False
Me![Subformulario Pedidos].Enabled = False
Me![SubformularioPedidos].Locked = True
' Si el pedido tiene un cliente asignado, activar los controles del cliente.
Else
IDCliente.Enabled = True
IDCliente.Locked = True
MostrarProductos.Enabled = True
Dirección.Enabled = True
Ciudad.Enabled = True
Región.Enabled = True
CódPostal.Enabled = True
País.Enabled = True
FechaPedido.Enabled = True
Me![Subformulario Pedidos].Enabled = True
Me![Subformulario Pedidos].Locked = False '**
End If
With Me
If FechaPedido >= Date Then
IDCliente.Locked = False
.AllowDeletions = False
.AllowEdits = False
!SubformularioPedidos.Enabled = False
!SubformularioPedidos.Locked = True
!Detalles.Enabled = False
Else
.AllowDeletions = True
.AllowEdits = True
!SubformularioPedidos.Enabled = True
!SubformularioPedidos.Locked = False '**
!Detalles.Enabled = True
End If
End With
End Sub
Se que esto es bastante pegajoso, por lo que insisto en lo de conseguir esas bases de datos. Son muy ilustrativas.
Gracias Raul por la aclaración que me has hecho, la verdad es que me has dado otra idea para proteger el Formulario "PEdidos", pero te formulo otra cuestión: Cuando habrés un formulario, por ejemplo, un mantenimiento de Clientes, ¿Hay alguna forma de capturar los cambios que realices en un "Temporal oculto" y que al cerrar el formulario te pregunte si los deseas guardar? Y si les dices que no que mantenga la información que había antes de modificar. Gracias de Nuevo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas