Access - Problema de codigo

 
Vista:

Problema de codigo

Publicado por Sandra (12 intervenciones) el 12/02/2019 22:24:38
Tengo el siguiente código para dos formularios, el problema es que en uno no se bloquean los campos que se deben bloquear y en el otro no se cambia la fecha termino al poner "completada" en el campo "estado", espero me puedan ayudar a solucionar este problema, de antemano gracias por su tiempo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Sub Estado_AfterUpdate()
If Me.Estado = "Completada" Then
Me.[Termino] = Date
Else
IsNull (Me.[Termino])
End If
End Sub
Private Sub Form_Current()
Me.[Inicio] = Me.FechaReporte + 14
If Me.[Finalización] > 0 Then
Me.[Finalización] = [Finalización]
Else
Me.[Finalización] = [Fecha de inicio] + 2
End If
End Sub
 
Private Sub Form_Load()
Me.Equipo.Enabled = False
Me.[Observaciones Karen].Enabled = False
Me.[Tipo de servicio].Enabled = False
Me.[No de serie].Enabled = False
Me.FechaReporte.Enabled = False
Me.institución.Enabled = False
Me.Hospital.Enabled = False
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema de codigo

Publicado por Anonimo (3315 intervenciones) el 12/02/2019 23:16:30
Solo desde la teoría:

En la subfunción 'estado', si se cumple la condición el campo 'termino' debería aceptar como dato la fecha actual, pero en su alternativa no se le asigna nada, porque la línea:
1
IsNull (Me.[Termino])
Solo devolverá un true o false sin ninguna otra consecuencia.

Si se desea eliminar cualquier valor del campo 'termino', lo primero que se debería verificar es si ese campo admite el valor 'null' y la sentencia para asígnaselo seria asi:
1
Me.Termino = Null

Insisto en que solo funcionaria si el campo 'termino' al que se supone de tipo DATE admite valores null por diseño.

Respecto a la subfunción 'Current' :
Si el campo 'finalizacion' tiene un valor superior a cero se le reasigna su mismo valor ¿tiene sentido hacer algo que en la practica no hace nada? …. particularmente solo utilizaría la alternativa (cuando es inferior / igual a cero) algo en una única línea tal como:

1
If Me.[Finalización] <=0 Then Me.[Finalización] = [Fecha de inicio] + 2

Respecto a la subfunción 'Load', en principio no debería ser un problema, pero no se debería perder de vista que tras la carga del formulario y antes de finalizar el evento, se ejecuta también la función 'Current' para el primer registro del formulario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar