Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-09-2004
cybergerman cybergerman is offline
Miembro
 
Registrado: ago 2004
Posts: 36
Poder: 0
cybergerman Va por buen camino
Dudas con Transacciones y Actualizaciones en Caché

Estamos desarrollando un proyecto tipo TPV con manejo de Stock,clientes,etc.

Estuve leyendo sobre transacciones y Actualizaciónes en Caché, pero no se que usar y cuales son las ventajas y desventajas de cada una.

Por lo que lei, Actualizaciones en Cache utiliza internamente transacciones.

Pero no se por ejemplo si "commit" es igual a "ApplyUpdates" o "roolback" a "CancelUpdates".

Si utilizo actualizaciones en cache, debo usar tambien StartTransaction en combinación o no.

Yo probé usar la técnica de actualizaciones con DBGrids y Querys y funciona bien, pero trabajando directamente con el dbgrid; es decir editando y borrando sobre la misma.

Pero en general en este proyecto utilizo unicamente los dbgrids para consulta.
Solamente actualizo las tablas con instrucciones sql y manejo de transacciones.

Conviene utilizar el componente TUpdateSqL???
Responder Con Cita
  #2  
Antiguo 16-09-2004
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
El cache es local , la transaccion es en la BD.

Se usa cache como un "mini" sistema de transacciones para soportar actualizacion en batches. Por ejemplo, ya que hablas de grid, se activa el cache, el usuario edita, si todo va bien se manda a la BD y se confirma el cache. Es muy usado en aplicaciones Cliente/Servidor. Entonces el flujo de trabajo es:

- Activar cache
- Edicion local
- Confirmar que esta OK
- Enviar al a)Servidor b)Modulo de datos y llamar ApplyUpdates si esta conectado a un provider
- Aqui va las transacciones normales. Se hacen manualmente
- Si todo Ok: Confirmar el cache local. Llamar ApplyUpdates si se envio a un servidor remoto...

El componente TUpdateSql es solo para permitir a consultas de solo lectura, que se puedan editar (porque se les pone como es el insert, el delete y el update)

Los cache son utiles para hacer modificaciones en batch, o para enviar datos de actualizacion a un servidor remoto. De lo contrario (edicion registro a registro) es mas simple hacerlo directo.

Como veo que estas arrancando, visita mi blog que he cubierto varias cosas ya... (Por ejemplo, mala idea usar la BDE....)
__________________
El malabarista.
Responder Con Cita
  #3  
Antiguo 16-09-2004
cybergerman cybergerman is offline
Miembro
 
Registrado: ago 2004
Posts: 36
Poder: 0
cybergerman Va por buen camino
El problema que tengo, es, que por lo que leí ApplyUpdates llama a post,

y CancelUpdates llama al método cancel de la tabla o query; pero en el caso mío

que estoy usando ExecSql como se usa.

Yo lo que hago cuando grabo es esto:

EJ:
if Datamodule.db.intransaction then
datamodule.db.roolback;
try
datamdule.db.starttransaction;
datamodule.queryGeneral.sql.add('Insert....');
//Mensaje de confirmación....
datamodule.queryGeneral.execsql;
datamodule.queryGeneral.commit;
except
datamodule.db.roolback;
raise; ///Todavía no me explico que hace realmente.
end;
Responder Con Cita
  #4  
Antiguo 29-09-2004
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Siento la tradanza. El raise despues del except es para que saque el error que causo que el se cancelara la operacion. Es MUY importante porque de lo contrario no sacaria ningun mensaje y quedaria a ciegas el programa...

El codigo como lo tienes esta ok
__________________
El malabarista.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 17:55:08.


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
Copyright 1996-2007 Club Delphi