Ver Mensaje Individual
  #3  
Antiguo 10-06-2005
Avatar de hgiacobone
hgiacobone hgiacobone is offline
Miembro
 
Registrado: may 2003
Ubicación: La Plata, Bs. As., Argentina
Posts: 165
Reputación: 24
hgiacobone Va por buen camino
Cita:
Empezado por mamcx
La cosa es simple: O lo haces en linea o en batch. No se puede mezclar.
Gracias por la info.
Justamente, como trabajo con BATCHUPDATE todas las operaciones se hacen off-line de la BD. Lo que intuyo es que con ADO en este metodo, el comando UPDATE "registrado" es el ultimo enviado y no todos los que se emitan.
Como información adicional, todos los dataset estan cargados y desvinculados de sus conexiones.
Te hago un ejemplo de forma muy escueta de lo que tengo:

Código:
//---------------------
//cCod y nStock son variables globales cargadas en distintas situaciones.
//---------------------
Procedure Vender;
begin
  cCOD:= ADODataSetPRODUCTOS.FiledByName('Codigo').AsString; //Var global
  nStock:= ADODataSetPRODUCTOS.FiledByName('Cantidad').AsInteger; //Var global

  ADODataSetDETALLEFACTURA.Insert;
  ADODataSetDETALLEFACTURA.FiledByName('Codigo').AsString:= cCOD;
  ADODataSetDETALLEFACTURA.FiledByName('Cantidad').AsInteger:= nCantPedida;
  ADODataSetDETALLEFACTURA.Post;
  
  ADOCommand1.Commantext:='UPDATE Productos SET Cantidad= :Param1 WHERE Codigo=:Param2;';
  ADOCommand1.Parametres[0]:= (nStock - nCantPedida);
  ADOCommand1.Parametres[1]:= cCod;
  ADOCommand1.Execute;
end;



Procedure Borrar:
begin
  //nStock viene con la cantidad actual resultante en Productos.
  MiCOD:= ADODataSetDETALLEFACTURA.FiledByName('Codigo').AsString;
  MiCant:= ADODataSetDETALLEFACTURA.FiledByName('Cantidad').AsInteger;
  ADODataSetDETALLEFACTURA.Delete;

  ADOCommand1.Commantext:='UPDATE Productos SET Cantidad= :Param1 WHERE Codigo=:Param2;';
  ADOCommand1.Parametres[0]:= (nStock + MiCant);
  ADOCommand1.Parametres[1]:= MiCod;
  ADOCommand1.Execute;
end;

================
Procedure Registrar;
begin

ADOConnection.ConnectionString:= MiConexion;

ADODataSetPRODUCTOS.ConnectionString:= ADOCOnnection;
ADODataSetPRODUCTOS.Active:= True;

ADODataSetDETALLEFACTURA.ConnectionString:= ADOCOnnection;
ADODataSetDETALLEFACTURA.Active:= True;

  ADOCommand1.BeginTrans;
  TRY
    ADODataSetProductos.UpdateBatch;
    ADODataSetDETALLEFACTURA.UpdateBatch;
    ADOCommand1.CommitTrans;
  EXCEPT
    ADOCommand1.RollBackTrans;
  END;
  ADOConnection.Active:= False;
end;
===============
__________________
Gracias de antemano por vuestra ayuda.
·.:*:.·Yako·.:*:.·
Responder Con Cita