Problemas al guardar formulario llamado desde evento


([N1] leonardo daniel velazquez fuentes) #1

Hola a todos, tengo 2 formularios, uno es un maestro detalle, la parte del maestro lleva los datos generales, fecha de pago, conductor, y los totales ( que son calculados atravez de actualizaciones y formulas desde la b.d.) la parte del detalle son los viajes que se le pagaron a esa persona, por lo que pueden ser varios, generalmente les pagan por semana (2,3 o hasta 4 viajes) asi que hay boton de agregar, eliminar y editar pago de viaje… al dar agregar pago… genero una ficha en memoria y le asigno algunos datos y luego la llamo con Pedir formulario, todo bien… ya en el formulario de pagos, llenos algunos datos, me trae otros y le doy guardar ( evento validar el cual valida que no haya datos vacios, etc. etc. ) y si todo esta bien, modifico un campo y lanzo el Interfaz Aceptar y nada… no me guarda ningun dato de los que capture en pantalla, excepto la Fecha, y los ID del maestro y su id de detalle… agrege la linea guardar ficha en alta o modificacion, pero tampoco me funciona… ya ejecute el DEBUG y en el stack y la ficha en memoria aparecen los datos capturados, pero los omite a la hora de guardar…! alguien me puede ayudar

Manejador de evento: AGREGA_VIAJE

Interfaz: Ejecutar manejador de evento ( VALIDAR_CAMPOS, P_OK )
If ( P_OK )
      Interfaz: Guardar la ficha en alta o modificación
      Get campo ( ID, ID_PAGO )
      Get campo ( CHOFERES, CHOFER )
      Crear nueva ficha en memoria ( linea, DETALLE_PAGOS_CHOFERES_MEXICANOS@vAztecaDat )
            Modificar campo ( ALTA_MOD, "A" )
            Modificar campo ( PAGOS_CHOFER_MEXICANO, ID_PAGO )
            Modificar campo ( CHOFER, CHOFER )
            Alta de ficha ( linea )
                  Pedir formulario ( DETALLE_PAGO_CHOFER_MEX@vAztecaApp, P_OK )
                  If ( P_OK )
                        Interfaz: Recalcular ( LISTA_VIAJES )
                        Libre
      Libre
Libre

Manejador de evento: VALIDAR

Interfaz: Ejecutar manejador de evento ( VALIDAR_CAMPOS, P_OK )
If ( P_OK )
      Interfaz: Ejecutar manejador de evento ( VALIDA_CHOFER_VIAJE, P_OK )
      If ( P_OK )
            Modificar campo ( ALTA_MOD, "M" )
            Interfaz: Guardar la ficha en alta o modificación
            Interfaz: Aceptar
      Libre
Else
      Interfaz: Establecer foco ( ED_FECHA )
Libre

([N3] pacosatu) #2

Hola leonardo daniel velazquez fuentes.

Vigila en el código las transacciones y cuándo están abiertas.

En el subproceso del comando “Alta de ficha” la Ficha recién dada de alta es de Solo lectura, por lo tanto, no puedes usar un Pedir formulario en ese subproceso y menos usar comandos Guardar ficha. Solo podrás leer los campos, por ejemplo, guardar el ID recien creado.

Para que funcione, debes usar un Cargar lista (DETALLE_PAGOS_CHOFERES_MEXICANOS@vAztecaDat, ID, ID_LINEA) donde ID_LINEA es el ID de la Línea que has guardado en el subproceso de Alta de ficha.
Una vez cargada la Ficha nueva de DETALLE_PAGOS_CHOFERES_MEXICANOS ya puedes abrir transacción con Modificar ficha seleccionada.

En otra ocasión, usa el Depurador y el visor de transacciones del vAdmin para comprobar que los cambios de guardan en disco.

Saludos
Paco Satué


([N1] wikan) #3

Alta de ficha debe estar al mismo nivel que el crear ficha en memoria.

De todas formas esos campos que estás asignando a mano lo podrías hacer directamente desde la base de datos.

ALTA_MOD: lo pones a A en el trigger anterior a alta, lo pones a M en el trigger anterior a modificación
PAGOS_CHOFER_MEXICANO: eso te lo hace Velneo solo, se induce el valor al dar de alta de alta desde una rejilla embebida en el formulario de PAGOS
CHOFER: Ya lo tienes en la tabla de PAGOS, pero si aún lo quieres guardar en el detalle, usa como contenido inical el valor del maestros PAGOS.CHOFER