Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-02-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por usuario1000 Ver Mensaje
El componente en sí, no veo que tenga tal propiedad, no sé si está muy escondida por alguna subpropiedad, pero no la veo.
¿Entonces tienes un componente base de datos y tiene asignado un componente transaction?
Responder Con Cita
  #2  
Antiguo 14-02-2019
usuario1000 usuario1000 is offline
Miembro
 
Registrado: nov 2016
Posts: 86
Poder: 8
usuario1000 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Entonces tienes un componente base de datos y tiene asignado un componente transaction?

Por el lado del Servidor tengo los siguientes componentes:
- TFDConnetion, el cual tiene una propiedad "Transaction" donde tengo asignado el componente TFDTransaction
- TFDTransaction, elcula tiene una propiedad "Connection" donde tengo asignado al componente anterior (TFDConnection).
- Y distintos TFDQuery, en cada uno de ellos hay una propiedad "Transaction" que tiene asignado el TFDTransacction.



por el lado del Cliente, utilizo los siguientes componentes:
- TClientDataSet.
- TDataSetProvider.
- SQLConnection,


hay algunos más componentes, pero básicamentes son del mismo tipo.


Para las grabaciones de datos, utilizo funciones donde paso los parametros a grabar desde el cliente al servidor.



Saludos.
Responder Con Cita
  #3  
Antiguo 14-02-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Entonces, no necesitas controlar tú mismo las transacciones.
Código Delphi [-]
QExpedientes.ExecSQL;
Y nada más.


Lo que no entiendo es eso de "en el lado del servidor" y "en el lado del cliente", ¿tienes un programa cliente, que conecta a un programa servidor, que conecta a la base de datos?
No sé si esos componentes funcionan así, pero me parece extraño.
Responder Con Cita
  #4  
Antiguo 14-02-2019
usuario1000 usuario1000 is offline
Miembro
 
Registrado: nov 2016
Posts: 86
Poder: 8
usuario1000 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Entonces, no necesitas controlar tú mismo las transacciones.
Código Delphi [-]QExpedientes.ExecSQL;

Y nada más.


Lo que no entiendo es eso de "en el lado del servidor" y "en el lado del cliente", ¿tienes un programa cliente, que conecta a un programa servidor, que conecta a la base de datos?
No sé si esos componentes funcionan así, pero me parece extraño.



Perdón, no me he explicado bien. Lo que quiero decir es que tengo dos programas, uno es el servidor y otro el cliente. El cliente envia la información a grabar al servidor y el servidor está conectado a la base de datos mediante el componente TFDConnection, que por medio de TFDQuery (qExpedientes.ExecSQL) graba la información en la misma. Pero no lo hace al instante, tarda un tiempo, incluso demasiado. Es una aplicación DataSnap.



No sé si alguno de los componentes debo indicar algo para que la grabación sea inmediata, ya lo estuve revisando y no veo nada que me llame la atención.


Gracias por tu interés.
Responder Con Cita
  #5  
Antiguo 15-02-2019
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Es como si tuviera transacciones anidadas:
Código:
StartTransaction
  StartTransaction
  Commit
Commit
El "verdadero" commit es el último, pero es sólo una idea. Procura aislar el proceso en una aplicación mucho más sencilla.
Responder Con Cita
  #6  
Antiguo 15-02-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Al González Ver Mensaje
Es como si tuviera transacciones anidadas:
Código:
StartTransaction
  StartTransaction
  Commit
Commit
El "verdadero" commit es el último, pero es sólo una idea. Procura aislar el proceso en una aplicación mucho más sencilla.
Casi seguro que es algo así. Está haciendo transacciones manualmente, cuando el componente ya las tiene asociadas implícitamente.
Responder Con Cita
  #7  
Antiguo 15-02-2019
usuario1000 usuario1000 is offline
Miembro
 
Registrado: nov 2016
Posts: 86
Poder: 8
usuario1000 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Casi seguro que es algo así. Está haciendo transacciones manualmente, cuando el componente ya las tiene asociadas implícitamente.



Buenas


Como puedo averiguar si el componente las tiene asociada implicitamente. ¿Cual es la propiedad?.



Ayer por la noche quité todas las instrucciones de transacciones, para ver si se hacían de forma automática las grabaciones de manera implicita, quité el componente TFDTransaction y no funcionó. Así que lo dejé como estaba.


Lo he solucionado de forma provisional modificando el programa Cliente, cada vez que envío datos al programa Servidor, lo que hago es seguidamente desconectar y conectar al cliente del servidor, y así sí que se refleja inmediatamente la grabación. Pero como digo, no es una forma de hacerlo que me guste, aunque consigo lo que quiero. Seguiré investigando a ver que sucede.


No hago transacciones anidadas, un ejemplo es como el que sigue:
Código Delphi [-]
  transacciones.StartTransaction;
  try
    qCuentas.ExecSQL;
    Result:= 'Ok';
    transacciones.commit;
  Except
    on E: exception do
    begin
        transacciones.Rollback;
        raise;
    end;
  end;


Tan sencillo como eso y no graba cuando llega al commit.


Gracias por vuestros comentarios.
Responder Con Cita
  #8  
Antiguo 15-02-2019
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 14
Caminante Va camino a la fama
Hola



Los componentes IBX (Que son los que uso) tienen una propiedad Intransaction que indica si ya esta iniciada una transaccion.



Código Delphi [-]
if not IBTransaction1.intransaction then
  IBTransaction1.startTransaction;

Supongo que los componentes que usas deben tener una propiedad similar.
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar.
Antonio Machado
Responder Con Cita
  #9  
Antiguo 15-02-2019
engranaje engranaje is offline
Miembro
 
Registrado: may 2011
Posts: 163
Poder: 14
engranaje Va por buen camino
Por si es de ayuda, solo apuntar que una conexión (TFDConnection) también puede estar en una transacción. Estás seguro de que todas tus transacciones son sobre TFDTransaction y no tienes ninguna sobre TFDConnection?
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Grabacion macrossman Varios 2 06-04-2011 22:09:07
Duda registros valor 0 sql drykea SQL 6 13-03-2008 17:43:52
Duda sobre DFS enrique_84 Varios 2 08-06-2006 11:53:40
grabación jorodgar Windows 4 19-09-2005 11:22:42
Duda sobre busqueda de registros... hademon Varios 2 16-09-2005 19:26:17


La franja horaria es GMT +2. Ahora son las 11:15:18.


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