Imprimir página | Cerrar ventana

Cuadro combinado, no actualiza estado

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=85831
Fecha de impresión: 20/Abril/2024 a las 07:05


Tema: Cuadro combinado, no actualiza estado
Publicado por: jorros
Asunto: Cuadro combinado, no actualiza estado
Fecha de publicación: 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




Respuestas:
Publicado por: rokoko
Fecha de publicación: 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


Publicado por: xavi
Fecha de publicación: 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

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: jorros
Fecha de publicación: 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



Imprimir página | Cerrar ventana