** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Cuadro combinado, no actualiza estado
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoCuadro combinado, no actualiza estado

 Responder Responder
Autor
Mensaje
jorros Ver desplegable
Habitual
Habitual
Avatar

Unido: 20/Octubre/2008
Localización: España
Estado: Sin conexión
Puntos: 154
Enlace directo a este mensaje Tema: Cuadro combinado, no actualiza estado
    Enviado: 21/Febrero/2021 a las 17:24

Buenas tardes

En un formulario continuo donde muestro las cabeceras de factura, tengo un cuadro combinado llamado SITUACION con el que selecciono el estado actual de la factura: 1 ADMON, 2 JEFE DE OBRA, 3 GIRO etc. etc.

En el evento después de actualizar tengo el siguiente código

    Me.HisCabNumFac.SetFocus

    Me.SITUACION.SetFocus

    Me.SITUACION.Requery

    DoCmd.SetWarnings False 'Esto deshabilita los mensajes de sistema

 

DoCmd.RunSQL "UPDATE TbRegFacEst SET TbRegFacEst.RegFacEstActivo = False WHERE (((TbRegFacEst.RegFacEstActivo)=True) AND ((TbRegFacEst.RegFacEstFacNum)=[Formularios]![FrmConFacturas]![HisCabNumFac]) AND ((TbRegFacEst.RegFacEstFacTip)=[Formularios]![FrmConFacturas]![HisCabTip]))"

DoCmd.RunSQL " INSERT INTO TbRegFacEst ( RegFacEstNum, RegFacEstFacNum, RegFacEstFacTip, RegFacEstFecIni, RegFacEstActivo ) SELECT TbHisCabFac.HisCabSit, TbHisCabFac.HisCabNumFac, TbHisCabFac.HisCabTip, Now() AS AltaSit, True AS Act FROM TbHisCabFac WHERE (((TbHisCabFac.HisId)=[Formularios]![FrmConFacturas]![HisId]))"

 

    DoCmd.SetWarnings True 'Esto habilita los mensajes de sistema

 

Debe dar de alta en la tabla TbRegFacEst con el nuevo estado de la factura, un registro de esa factura. El problema es que crea el registro con el estado anterior a pesar de estar En el evento DESPUES DE ACTUALIZAR. He probado con un Me.SITUACION.Requery con llevar el foco a otro campo y volverlo a situacion pero el caso es que no consigo que lo haga bien.

 

Gracias

Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 21/Febrero/2021 a las 17:45
Prueba  poner Me.reflesh al principio del codigo, podria ser que el dato no se habria guardado aun...

Y si he entendido bien si ese codigo lo lanzas en el evento despues de actualizar ya estas en el campo que quieres, te sobrarian las 3 primeras lineas de codigo.

Y otra cosa veo que primero actualizas y despues creas registro con esas consultas, por casualidad no seria al reves, me despista tu ultima linea...Debe dar de alta.......

Saludos
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14720
Enlace directo a este mensaje Enviado: 21/Febrero/2021 a las 18:12
Que utilices el evento Despues de actualizar el control no implica que el registro se haya guardado. Así es posible que, cuando llames al valor del control, aun mantenga el anterior.

Yo sugeriría salvar el registro antes de lanzar las consultas. 

If Me.Dirty Then
  DoCmd.RunCommand acCmdSaveRecord
End If

y el resto de código.

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
jorros Ver desplegable
Habitual
Habitual
Avatar

Unido: 20/Octubre/2008
Localización: España
Estado: Sin conexión
Puntos: 154
Enlace directo a este mensaje Enviado: 21/Febrero/2021 a las 18:35
Gracias Rokoko, se comporta igual.

Muchas gracias Xavi, ha funcionado a la perfección. 

Desconocía la propiedad Dirty  https://docs.microsoft.com/es-es/office/vba/api/access.form.dirty(property)

Es un lujo contar con profesionales tan altruistas como vosotros.

Se puede cerrar el hilo

 Muy agradecido
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable