Ver Mensaje Individual
  #6  
Antiguo 23-07-2021
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Reputación: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por isracdc Ver Mensaje
Mi duda es la sgte: al utilizar la app en PC1 y por ejemplo aumentar stock de un producto, el aumento no se ve reflejado en la PC2 (por ejemplo si estoy mostrando la info en un DBGrid) y tampoco viceversa, si modifico algo desde la PC2, no se refleja en la app de la PC1.
Apuesto es porque fundamentalmente no entiendes como usar un RDBMS de servidor. A diferencia de BD de archivos, NO se supone que mantengas "viva" la consultas/tablas desde que inicias la app hasta que terminas.

En CADA ocasión que vas a mostrar datos, DEBES re-consultar la BD. Es incluye si vas de un registro a otro en un flujo de edición. Asi que deberías tener un contante "Query.Open, Query.Close" cada vez que vas fluyendo.

Unicamente tiene algo de sentido mantener la CONEXION abierta, o usar un pool de conexiones y en cada query abrir de nuevo la conexión. Idealmente:

Código Delphi [-]
function query_xxx(...) -> TClientDataset
begin
     con := Db.open() //de un pool para que sea eficiente!
     query.execute(con)
     //Aqui ya no hay ni query ni con abierto
end

Un BD remota se supone que se acceda de esta forma. Recuerda que estas dentro de una BD transaccional y las transacciones deben ser CORTAS, de solo segundos de estar abiertas.

---

Y en caso de lo que dices, hacer polling no es algo que deberías preocuparte a menos que tengas CIENTOS de "escuchas" a la vez.
__________________
El malabarista.
Responder Con Cita