Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Selección de registros mediante TTimmer (https://www.clubdelphi.com/foros/showthread.php?t=95131)

Gregorio Cíber 23-03-2021 21:38:22

Selección de registros mediante TTimmer
 
¡Hola amigos!

Desde Delphi, mediante un TTimmer, se chequea periódicamente una tabla de pedidos (FB 3.0) y se localizan los que hay que transmitir a un servidor remoto. Este proceso funciona por ahora sin problemas.

El periodo de tiempo lo estable el cliente a voluntad. Pueden ser pocos segundos, varios minutos incluso horas. Y aquí es dónde se plantea el problema.

Supongamos que el tiempo se estable en 60 segundos (para otra cantidad sería exactamente igual). Agotado este tiempo se hace una selección de los pedidos que están pendientes de enviar y se activa el proceso de envío. Esto, como ya dije antes, funciona bien.

Pero, ¿y si la selección empieza con pedidos que no están terminados? Es decir, ¿y si en uno a varios pedidos no se ha terminado de introducir todas las líneas?. Evidentemente estos pedidos serían seleccionados y enviados, sólo que con parte de las líneas de detalle que no componen, no todas.

He pensado en poner un botón para marcar el pedido una vez que se dé por terminado. Pero, ¿hay alguna otra solución más elegante? Esta me parece un poco 'cutre', no sé que pensáis vosotros.

Agradezco sugerencias. Gracias.

Casimiro Notevi 24-03-2021 09:59:03

¿Y cuando se edita algún pedido, cómo lo tratas actualmente?

Neftali [Germán.Estévez] 24-03-2021 10:04:19

Ayudaría saber cómo es la operativa y cómo estás implementando los pedidos.

Lo ideal sería que esos pedidos (que no has finalizado), no estuviesen "visibles" para el proceso que los consulta hasta que no estén acabados completamente.
Para ello puedes utilizar tablas en memoria o TClientDataset, de forma que puedes ir generando la cabecera y las líneas, pero hasta que no "guardes" el pedido no se graba todo (cabecera y líneas) a la Base de Datos.

Si eso no es posible modificarlo, sólo queda que dde alguna manera "marques" el pedido como completado (flag booleano) cuando el pedido ya está completo. Dependiendo de cómo lo estés implementando tendrás que marcar ese flag (o el usuario) cuando ya estés seguro de que ese pedido está finalizado.

Gregorio Cíber 26-03-2021 14:26:14

Gracias a ambos por responder.

A ver.
Se trata de una aplicación que lleva funcionado años, muchos. Añadirle funcionalidad que no afecte a la estructura siempre es posible y, según el caso, factible. Pero cuando hay que 'tocar' cosas que funcionan bien, ¡Uf! Así que haré todo lo posible por no tocar el proceso de confección de pedidos en lo fundamental, máxime cuando es proceso muy, muy complicado.

Por supuesto que trabajar con tablas de memoria es una buena idea, de hecho en algunos procesos dentro de esta misma aplicación, la utilizo. Pero aplicar esta técnica a este apartado concreto sería reescribir una buena parte del código y eso no es viable. Por tanto optaré por el marcado 'manual' de los pedidos porque de esta manera me aseguro que, como dice Neftalí, los pedidos no sean visibles al proceso de envío hasta que no estén terminados.

No obstante, admito sugerencias.
Gracias de nuevo.

Casimiro Notevi 26-03-2021 14:55:52

¿Y cuando se edita algún pedido, cómo lo tratas actualmente?


La franja horaria es GMT +2. Ahora son las 12:14:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi