Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-11-2016
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 397
Poder: 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
  #2  
Antiguo 06-11-2016
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 397
Poder: 16
novato_erick Va por buen camino
Chicos lo siento el ApplyUpdate lo hago en el evento OnAfterPost del ClientDataSet Ejmplo:

Código Delphi [-]
procedure TdmConexion.cdsModArtCantidadAfterPost(DataSet: TDataSet);
begin
  if (cdsModArtCantidad.State in [dsEdit, dsInsert]) AND
    (cdsModArtCantidad.ChangeCount > 0) then
  begin
    cdsModArtCantidad.ApplyUpdates(0);
  end;
end;

Saludos nuevamente;
Responder Con Cita
  #3  
Antiguo 06-11-2016
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 397
Poder: 16
novato_erick Va por buen camino
Hola... utilizando el debug me percate que:

Código Delphi [-]
//
          dmConexion.cdsModArtCantidad.Params.ParamByName('pIDART').AsInteger :=
            dmConexion.cdsTempModArtCantidadID_ARTICULO.AsInteger;
          dmConexion.cdsModArtCantidad.Active := True; //aquì se pone en estado dsBrowse
          dmConexion.cdsModArtCantidad.Edit;//A pesar que le cambio su estado a Edición no lo esta haciendo por eso en el EventoOnAfterPost applica actualizaciones.
  if (dmConexion.cdsModArtCantidad.State in [dsBrowse]) then
  begin
   dmConexion.cdsModArtCantidad.Edit //Trate de hacer esto pero igual en el evento onAfterPost aun queda en dsBrowse
  end;



Saludos
Responder Con Cita
Respuesta


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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
adhoc actualizacion de la cache de clientdataset juniorSoft Providers 33 08-11-2012 07:15:27
Actualizacion De Datos Con Sql luxus Conexión con bases de datos 2 03-08-2006 00:20:18
Actualización de Datos Palmiro Conexión con bases de datos 3 02-02-2006 16:08:58
almacenar datos con un DBGrid haciendo Doble clik en una celda (VIH)Lestat Conexión con bases de datos 25 01-07-2005 06:10:23
Actualizacion de datos bbjb Conexión con bases de datos 7 12-07-2004 17:52:03


La franja horaria es GMT +2. Ahora son las 16:29:01.


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