actualizar rejilla


([N3] Servinfor) #1

Hola tengo un formulario de la tabla expedientes con un campo desplegable para elegir el estado de los documentos pendiente o terminado y una rejilla editable con sus documentos relacionados con un campo pendiente o terminado

Por un lado quiero que cuando pongo en el documento, estado terminado se pongan todos los expedientes en terminado, he hecho un proceso y lo hace bien

Pero si ahora uno de los expedientes de la rejilla falta añadir algo y lo pongo en pendiente quiero que su documento, la tabla maestra también se ponga pendiente el campo estado.

Para eso he creado un evento en la rejilla que al salir del campo estado si el campo estado es igual a 1 (pendiente) me ponga el valor de una variable a uno. Cuando salgo del formulario mediante un botón he puesto un evento que si el valor de la variable es uno me cambie el valor del estado del documento a pendiente

Pero no lo hace bien si salgo de la rejilla editable y pincho en cualquier campo si que me coge la variable el valor 1 pero si de la rejilla pulso directamente el botón aceptar no me coge el valor de la variable

He puesto en el evento del botón aceptar, interfax recalcular la rejilla, interfax guardar la ficha pero nada
Si de la reilla voy al botón no obedece


([N1] wikan) #2

Prueba con un trigger de la tabla documentos que controle si el estado cambia a pendiente y si lo hace, modifica su maestro a pendiente también.

Otra forma, es tener 3 campos en documentos
Número de expedientes: Número total de expedientes asignado al documento
Número de expedientes cerrados: …queda claro
Número de expedientes abierto: …no hace falta explicación.

Si bien, desde la tabla de expedientes con una actualización vas modificando esos campos números, sumando y restando según cambia de estado el expediente.

Entonces con un choose(Número de expedientes = Número de expedientes cerrados), “Documento cerrado”, “Documento abierto”)

De esa manera controlas de manera automática cuando un documento esta cerrado, cuando todos sus expedientes están cerrados. O si está abierto por que alguno de expedientes está abierto.


([N4] gontorre) #3

Buenos días,

Yo tengo un caso exactamente igual en mi sistema. Tengo una tabla de pedidos y una tabla de lineas de pedido. En las líneas tengo un campo que me indica la cantidad “pendiente”, es decir, la cantidad que no tengo en stock y no puedo servir. El pedido estará pendiente si al menos una línea está pendiente.

Lo he resuelto con un trigger en la tabla de líneas y funciona bien. Te pongo el código por si te sirve para adaptarlo.



([N1] wikan) #4

@gontorre puedes hacer lo mismo con actualizaciones desde las lineas de pedido y usando el choose como contenido inicial en el campo. Así te ahorras recorrer todas las líneas del pedido con cada cambio.


([N3] Servinfor) #5

Muchisimas gracias


([N4] gontorre) #6

Hola Wikan

Sé que con actualizaciones sería más sencillo pero el código que he pegado es un extracto de todo lo que hace realmente. El código completo es bastante más complejo y era imposible hacerlo con una actualización.

Un saludo

Gonzalo Torre