Campo control

Cargo una tabla desde un formulario.
En ese formulario incluyo un campo control ( que me suma todos los campos ). Este campo me sirve para comparar contra otro campo de sumatoria total( que lo cargo a mano ).
¿Si de la comparación me surge el resultado? ¿0? (Cero) la carga es correcta.
La idea es que, desde el formulario, el registro no sea tomado como válido hasta que confirme que la carga sea correcta. Es decir antes de pasar a otro registro, revise si un campo determinado está en cero, si no lo está me sirva como aviso para encontrar el error en la carga de datos.
Si se puede hacer sin códigos mejor, si no.

1 respuesta

Respuesta
1
Te aconsejo que lo haga por código... el formulario tiene el evento afterupdate entonces... suponiendo que la caja de texto (que yo la llamare TxtOrigen) debe tener el valor de cero, entonces...
...
Private Sub Form_BeforeUpdate(Cancel As Integer)
If TxtOrigen.Value <> Then
MsgBox "Los VAlores no coincide con el campo control.Por favor revise.",vbInformation,"Error"
Cancel = True
End If
End Sub
...
Que hace esto... el evento afterupdate del formulario.. quiere decir que anter de actualizar el formulario y los datos hace lo que dice el código... aquí coloco que si el valor de la caja es diferente de cero mande un mensaje ("Los VAlores no coincide con el campo control.Por favor revise.") y cancel la actualización... cancel = true... esto hace que hasta que no se supere este valor (<> 0) no lo deja actualizar ni pasar a otro registro...
Me cuanta como le fue... si necesita más ayuda me avisa... si te sirvió..
Muy bueno !
Sólo una aclaración: como manejo campos sin datos utilizo la función Nz para hacer las operaciones, el problema es que me arroja basura ( no es un cero exacto, sino 0,0000824351 por ejemplo )entonces cuando le pongo la condición <> 0, casi siempre me dice que no coincide el campo control. ¿Tenés alguna sugerencia?
Gracias
No... la función Nz esta bien... debe ser que hay operaciones, que te hacen algo y te arrojan un valor, ya que algunas veces cuando realizas operaciones con campos nulos... access los toma por defecto como cero... y realiza lo demás...
Utiliza la funcion Nz asi Nz(VAriable, 0)... le indico que si encuentro un valor nulo... lo tome como cero... si quieres valores enteros utiliza la funcion Round...
Round(Nz(MiVariable, 0), 0)
El ultimo cero es el de round y le indico que no me tome decimales...
Me avisa como le fue

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas