Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #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
Poder: 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
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 19:52:27.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi