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 11-05-2018
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 22
gatosoft Va camino a la fama
Cita:
Empezado por Soa Pelaez Ver Mensaje
Con lo realizado si se me conecta a las distintas db pero al momento de que cada cliente realiza una transacción y me debe retornar un numero de transacción solo retorna la del ultimo que realiza la transacción no me respeta la sessión de cada uno.

Habría que ver un ejemplo de lo que hablas... ¿dices que ingresas a dos bases distintas, pero al hacer una transacción ambos programas retornan la misma información? (¿te refieres a ejecutar un ExceSQL, o a un startTransacction?, o a qué?).


Necesitamos código ejemplo
Responder Con Cita
  #2  
Antiguo 15-05-2018
Avatar de Soa Pelaez
Soa Pelaez Soa Pelaez is offline
Miembro
 
Registrado: nov 2015
Posts: 133
Poder: 9
Soa Pelaez Va por buen camino
Cita:
Empezado por gatosoft Ver Mensaje
Habría que ver un ejemplo de lo que hablas... ¿dices que ingresas a dos bases distintas, pero al hacer una transacción ambos programas retornan la misma información? (¿te refieres a ejecutar un ExceSQL, o a un startTransacction?, o a qué?).


Necesitamos código ejemplo
Realizó lo siguiente, luego de guardar retorno una variable con un número del registro que guardo y eso lo devuelvo al cliente, pero cuando el cliente A y el cliente B le dan guardar al mismo tiempo, uno de los
dos pierde el registro e igual no retorna el número.

Código Delphi [-]
    Conexion.StartTransaction;
    try
      iErrors := Squema.ApplyUpdates(0);
      if iErrors = 0 then
      begin
        for x := 0 to Squema.Count - 1 do
        if Squema.DataSets[x].UpdatesPending then
        begin
          Squema.DataSets[x].CommitUpdates;
          Conexion.Commit; //09/12/2015
          _ResultadoMD := 1;
        end;
      end
      else
      begin
        _ResultadoMD := 0;
        Conexion.Rollback;
      end;
    except
      on e: Exception do
      begin
        Conexion.Rollback;
       //Aqui si el número existe lo aumenta e inicia nuevamente una transacción
      end;
    end;
   //Aqui retorno el número guardado para enviarselo al cliente por medio de una función que retorna un entero.
   retNumeroDoc()
Responder Con Cita
  #3  
Antiguo 15-05-2018
Avatar de Soa Pelaez
Soa Pelaez Soa Pelaez is offline
Miembro
 
Registrado: nov 2015
Posts: 133
Poder: 9
Soa Pelaez Va por buen camino
Cita:
Empezado por Soa Pelaez Ver Mensaje
Realizó lo siguiente, luego de guardar retorno una variable con un número del registro que guardo y eso lo devuelvo al cliente, pero cuando el cliente A y el cliente B le dan guardar al mismo tiempo, uno de los
dos pierde el registro e igual no retorna el número.

Código Delphi [-]
    Conexion.StartTransaction;
    try
      iErrors := Squema.ApplyUpdates(0);
      if iErrors = 0 then
      begin
        for x := 0 to Squema.Count - 1 do
        if Squema.DataSets[x].UpdatesPending then
        begin
          Squema.DataSets[x].CommitUpdates;
          Conexion.Commit; //09/12/2015
          _ResultadoMD := 1;
        end;
      end
      else
      begin
        _ResultadoMD := 0;
        Conexion.Rollback;
      end;
    except
      on e: Exception do
      begin
        Conexion.Rollback;
       //Aqui si el número existe lo aumenta e inicia nuevamente una transacción
      end;
    end;
   //Aqui retorno el número guardado para enviarselo al cliente por medio de una función que retorna un entero.
   retNumeroDoc()
Y algo peor, me mezcla los registros que vienen del Cliente A con los del cliente B.
Responder Con Cita
  #4  
Antiguo 16-05-2018
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 22
gatosoft Va camino a la fama
Pareciera que no has solucionado tu error original. Me queda una duda:

1) A y B apuntan a bases de datos separadas (de acuerdo a un post anterior)
2) Cuando guardas A y B al mismo tiempo se pierde uno de los registros, y se mezclan los datos.

¿cuando ejecutas A y B por separado puedes verificar que los datos se guarden en BDs diferentes?

Sigo creyendo que el problema está en el lugar donde defines tus variables (Fuera del ClassMethods tal vez) por lo que puedes estar compartiendo recursos entre servidores.

¿donde defines la conexión?, en un dtm externo... está bien, pero recuerda que tu classMethods debe trabajar su propia instancia....
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
Conexion a distintas db desde un mismo servicio Soa Pelaez Varios 0 24-04-2018 16:56:08
Usuarios conectados a DataSnap mjjj Providers 0 12-11-2013 19:59:24
Actualizacion de Clientes en app. multicapa con DataSnap PacoPepe Conexión con bases de datos 3 27-12-2012 18:41:52
Como Obtener un Listado de Clientes conectados a FIREBIRD???? AGAG4 Firebird e Interbase 2 24-04-2006 20:58:43
Es Posible que 2 ó más Clientes Bloqueen 1 Registro al mismo tiempo???? AGAG4 Conexión con bases de datos 0 06-01-2006 00:28:13


La franja horaria es GMT +2. Ahora son las 15:16:38.


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