Ver Mensaje Individual
  #1  
Antiguo 06-11-2016
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 397
Reputación: 16
novato_erick Va por buen camino
Actualización de Datos a DB haciendo recorriedo a ClientDataSet

Hola Sres:

Es Gusto Saludarlos nuevamente:

eh estado experimentando un poco con DataSnap y aun con DBExpress.

eh tenido un poco de experiencia haciendo una actualización modificando un registro desde el ClientDataSet simplemente haciendo esto:

Código Delphi [-]
procedure TfrmActualizaCantidadInv.btnModificarClick(Sender: TObject);
begin
 //aqui solamente traigo el registro que quiero modificar datos ejemplo:
  
        dmConexion.cdsModArtCantidad.Params.ParamByName('pIDART').AsInteger :=
        dmConexion.cdsTempModArtCantidadID_ARTICULO.AsInteger;
        dmConexion.cdsModArtCantidad.Active := True;
        dmConexion.cdsModArtCantidad.Edit;
//ok perfecto hasta aquí se activa el dataset en edit cambio el registro en etc le doy un botonActualizar y actualiza.
end;

El punto es que ahora al intentarlo hacer con un ClientDataSet temporal con un conjunto de datos escogido de una tabla por el usuario solamente actualizar el campo determinado y no lo hace a la finales al terminar el recorrido on ClientDataSet.EoF quiere hacer un insert.
ejemplo:
Código Delphi [-]
  try
       dmConexion.cdsTempModArtCantidad.First;
      while not dmConexion.cdsTempModArtCantidad.Eof do
     begin
        dmConexion.cdsModArtCantidad.Params.ParamByName('pIDART').AsInteger :=
        dmConexion.cdsTempModArtCantidadID_ARTICULO.AsInteger;
        dmConexion.cdsModArtCantidad.Active := True;
        dmConexion.cdsModArtCantidad.Edit;
        dmConexion.cdsModArtCantidadSTOCK.AsFloat :=
        dmConexion.cdsTempModArtCantidadSTOCK.AsFloat; //este dato lo traigo desde el temporal
        dmConexion.cdsModArtCantidad.Post; // el post se lo deje en el Evento OnBeforePost del  dmConexion.cdsTempModArtCantidad
        dmConexion.cdsTempModArtCantidad.Next;
    end;

      Except
       if VariablesRisto.messageerror <> '' then
       ShowMessage(VariablesRisto.messageerror);
       dmConexion.cdsModArtCantidad.Cancel;
    end;

Bueno a la finales el resultado es ya mencionado.

a la finales talvez aya una mejor manera de actualizar conjunto de datos con clientDataSet sin embargo es como se me ocurre por mi experiencia.

Agradeciendo cualquier colaboración;

Saludos

novato_erick

Última edición por novato_erick fecha: 06-11-2016 a las 18:37:39.
Responder Con Cita