Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Datasnap no puedo actualizar con deltas (https://www.clubdelphi.com/foros/showthread.php?t=96240)

Elias011267 23-05-2023 17:31:13

Datasnap no puedo actualizar con deltas
 
Hola que tal. He comenzado en el camino de datasnap rest, Ya comence mi aplicacion, decidi trabajar en la modalidad firedac en server y client (solo app delphi) uso el componente Data.FireDACJSONReflect, para tal fin. La conexion remota lo hace correctamente y relleno mis objetos (list box y Dbgrid) perfectamente. El problema es que aun no agarro el tino cuando voy a actualizar las tablas ya que lo hago con los deltas, se supone que con unas cuantas lineas de codigo debería funcionar, pero aun no lo consigo. lo he hecho de manera automatica y de manera manual pero en ambas no funciona. Abajo les muestro el codigo para ver si alguien me dice donde esta mi falla
***********************
Código Delphi [-]
//Servidor modo manual
procedure TServerMethods1.act_movilizar(listadelta: tfdjsondeltas);
var
  LAct: IFDJSONDeltasApplyUpdates;
  taux: tfdmemtable;
  tsql: string;
begin
  lact:= tfdjsondeltasapplyupdates.Create(listadelta);
  taux:= lact.Values[0];
  taux.Filterchanges:= [rtmodified, rtinserted, rtdeleted];
  taux.First;
  try
    while not taux.Eof do
    begin
      if taux.UpdateStatus=  usmodified then
      begin
        tsql:= 'update movilizador set mov_telefono= '+
          taux.FieldByName('mov_telefono').Text +'where mov_cedula= ' +
          taux.FieldByName('mov_cedula').Text  ;
          conexion.ExecSQL(tsql);
      end;
      taux.Next;
    end;
  conexion.Commit;
  except on e:exception do
  begin
    conexion.Rollback;
    raise Exception.Create(LAct.Errors.Strings.Text);
  end;
 end;
end;

Código Delphi [-]
//Metodo Servidor Modo Automatico
procedure TServerMethods1.act_movilizador(const ADeltaList: TFDJSONDeltas);
var
  LAct: IFDJSONDeltasApplyUpdates;
begin
  LAct := TFDJSONDeltasApplyUpdates.Create(ADeltaList);
  conexion.StartTransaction;
  LAct.ApplyUpdates(0,qmovilizador.Command);
  if LAct.Errors.Count > 0 then
  begin
     raise Exception.Create(LAct.Errors.Strings.Text);
     conexion.Rollback
  end else conexion.Commit;
end;

Código Delphi [-]
//Metodo en cliente
uses ClientModuleUnit2;
procedure TForm1.act_movilizadores;
var
  lisdelta: tfdjsondeltas;
begin
  if tmoviliza.State in dseditmodes then tmoviliza.Post;
  lisdelta:= tfdjsondeltas.Create;
  tfdjsondeltaswriter.ListAdd(lisdelta, tmoviliza);
  ClientModule2.ServerMethods1Client.act_movilizador(lisdelta);
end;
/



***** Gracias

Casimiro Notevi 23-05-2023 21:48:15

Me parece que no has dicho qué problema tienes.

Elias011267 23-05-2023 21:52:34

Gracias Casimiro por responder pronto. Mi problema es que no puedo modificar, ni insertar registros en las tablas, solo consulta. No me arroja ningun error pero no actualiza las tablas

Casimiro Notevi 23-05-2023 22:00:19

Así de primeras, yo pondría un espacio antes del where
Código:

taux.FieldByName('mov_telefono').Text +'where mov_cedula= ' +
taux.FieldByName('mov_telefono').Text +' where mov_cedula= ' +


Elias011267 24-05-2023 09:49:34

Casimiro, realicé tu corrección pero no funciona. De hecho, cree otro servidor y lo usé de manera local y tampoco funciona. Es mi primera aplicación con datasnap y ya me estoy frustrando

Casimiro Notevi 24-05-2023 13:36:11

Te paso un video de un ejemplo simple, creo que te servirá.



egostar 24-05-2023 19:18:29

Si sigues este tutorial te funcionará perfectamente el asunto de los Deltas.

Using a REST DataSnap Server with an Application and FireDAC

Saludos

egostar 24-05-2023 19:24:25

Yo seguí el tutorial y funciona a la perfección.

Modifiqué LAST_NAME en el detalle del empleado utilizando la función ApplyUpdates del servidor DataSnap.



Saludos

Elias011267 24-05-2023 20:15:44

Hola Casimiro. Te cuento mi falla (Novato al fin) era que la memtable (tmoviliza) en mi aplicacion cliente tenía la propiedad cacheupdate= False, solo la cambie y funcionó. Disculpa la molestia.

Elias011267 24-05-2023 20:16:41

De todas maneras voy a estudiar el video y el tutorial para pulirme mas... Gracias


La franja horaria es GMT +2. Ahora son las 20:39:53.

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