Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Delphi 6 - ADO y Transacciones Anidadas (https://www.clubdelphi.com/foros/showthread.php?t=22942)

unoccio 01-07-2005 15:45:13

Delphi 6 - ADO y Transacciones Anidadas
 
Buenas foristas, les hago una consulta.
Estoy trabajando con Delphi 5 y me conecto a SQL Server 2000 utilizando ADO.
Quiero trabajar con transacciones anidadas desde Delphi, pero
Al hacer algo así:

ADOConnection1.BeginTrans
...
...
...
//y nuevamente volver a iniciar una transaccion
ADOConnection1.BeginTrans
Obtengo el siguiente error: No se pueden iniciar más transacciones en esta sessión.

Alguien sabe a qué se debe este Error?.

Gracias.

ContraVeneno 01-07-2005 16:24:12

Consulta la ayuda referente a ADOConnection1.CommitTrans

unoccio 04-07-2005 15:15:30

A qué te referís con que lea la ayuda con ese tema?

Lo que he leído es sobre beginTrans y dice que aumenta el contador de transacciones activas, por lo que al realizar un nuevo beginTrans cuando ya había hecho otra anteriormente (y sin hacer commit o rollback) no debería darme error sino que debería abrir una nueva transacción.

JoseAntonio 28-08-2007 04:23:34

Transacciones Anidadas
 
bueno yo tengo el siguiente codigo y tampoco funciona, alguien tiene idea de por que

Código Delphi [-]
    begin
      dm_datos.ADOConnection1.BeginTrans;
      try
      DM_Datos.ADO_TFamiliaStock.Edit;
      DM_Datos.ADO_TFamiliaStock.FieldByName('Nombre').AsString := ed_Nombre.Text;
      DM_Datos.ADO_TFamiliaStock.FieldByName('CodFamiliaStock').AsString := ed_CodFamiliaStock.Text;
      DM_Datos.ADO_TFamiliaStock.FieldByName('Descripcion').AsString := ed_Descripcion.Text;
      DM_Datos.ADO_TFamiliaStock.FieldByName('UnidadDeMedida').AsString := ed_UnidadDeMedida.Text;
      idfst:= dm_datos.Ado_TFamiliaStock.Fieldbyname('IdFamiliaStock').AsInteger;
      //DM_Datos.ADO_TFamiliaStock.FieldByName('Cantidad').AsString := ed_Cantidad.Text;
      DM_Datos.ADO_TFamiliaStock.Post;
      MessageDlg('Los datos fueron modificados para el registro: '+#13+ed_Nombre.Text,mtWarning,[mbOk],0);
      iStockActual:= dm_datos.GivmeStockActual(idfst);
      iStockDeseado:= StrToInt(ed_cantidad.text);
      bIsSerial0:= dm_datos.IsSerial0(idfst);
      if (iStockDeseado <> IStockActual) and bIsSerial0 then
       if iStockDeseado > iStockActual then
         dm_datos.CrearStock( idfst, IStockDeseado-IStockActual)
                                        else
         dm_datos.EliminarStock(idfst, IStockActual- IStockDeseado);
      //BCancelar.Click;
      BEditar.Caption := '&Editar';
      except
        on E:Exception do dm_datos.ADOConnection1.RollbackTrans;
      end;//try
    end;

pero cuando le quito la transaccion, el codigo si trabaja bien, cabe indicar que los procedimientos : dm_datos.CrearStock y dm_datos.EliminarStock, hacen uso de la misma conexion de la transaccion, pero no usan transacciones, o eso creo


La franja horaria es GMT +2. Ahora son las 17:47:32.

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