Access - Actualizar formulario actual

   
Vista:

Actualizar formulario actual

Publicado por Alejandro (1 intervención) el 10/05/2012 15:11:32
Hola.
A ver quien me pueda echar una mano. Llevo varios días atascado con una cuestion, les explico.
Resulta que en un formulario tengo varios campos relacionados con datos personales de un socio (NIF, Nombre, Apellidos, FechaNac, FechaAlta, etc...)
He conseguido que para evitar se de alta un socio sin introducir el NIF, el resto de campos permanezcan desativados y bloqueados.
Hasta ahí todo va bien, en el evento al salir del campo NIF le he puesto que si tiene datos permanezcan visibles y desbloqueados y si no es así los bloquee. Resulta que al salir ejecuta la acción pero no me actualiza el formulario y tengo que volver a un registro anterior para que se actualice.
He probado con Me.refresh, Me.recalc
La opción Me.requery es perfecta pero tiene el inconveniente de que vuelve al primer registro y eso es un poco tedioso.
Alguien puede decirme si existe alguna solución para actualizar el formulario en registro actual.
Muchas gracias por adelantado
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

Actualizar formulario actual

Publicado por josepf (54 intervenciones) el 10/05/2012 16:07:53
Buenas Alejandro!

Crea la función:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Public Function REFRESCAR(pnomcamp As String)
    ' boto de refrescar
    On Error Resume Next
    Dim valor As Variant
    Dim f As Form
    Set f = Screen.ActiveForm
    valor = f.Recordset.Fields(pnomcamp).Value
    f.Requery
    If IsNumeric(valor) Then
       f.Recordset.FindFirst pnomcamp & "=" & valor
    ElseIf IsDate(valor) Then
       f.Recordset.FindFirst pnomcamp & "=#" & Format(valor, "yyyy/mm/dd") & "#"
    Else
       f.Recordset.FindFirst pnomcamp & "='" & valor & "'"
    End If
  ' w = Fields(ww)
  '  Screen.ActiveForm.Requery
  '  w.SetFocus
  '  DoCmd.FindRecord ww, acEntire, False, acSearchAll, False, acCurrent, True
End Function

Y crea una llamada a la función pasandole el nombre del campo principal.
Esta función si tienes varios mantenimientos de tablas, la puedes poner en un módulo.

Yo controlo el tema que comentas del Nif, no a la salida del Nif, sinó en el evento antes de actualizar.
Compruebo que el nif no esté vacio, si lo está mando un mensaje advirtiendo, cojo el campo.focus y hago un docmd.cancelevent

y así puedes obligar por los campos que quieras.

Ya me diras.

1 Saludo
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

Actualizar formulario actual

Publicado por Jefferson (381 intervenciones) el 11/05/2012 22:30:21
Hola Alejandro


Pues nada; en un boton de comando en el evento Click()

i = me.currentrecord
me.requery
docmd.gotorecord , , acgoto, i


Tan sencillo como asi.......

Desde Venezuela
Jefferson
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