Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-05-2023
Elias011267 Elias011267 is offline
Miembro
 
Registrado: jul 2020
Posts: 73
Poder: 4
Elias011267 Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 23-05-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Me parece que no has dicho qué problema tienes.
Responder Con Cita
  #3  
Antiguo 23-05-2023
Elias011267 Elias011267 is offline
Miembro
 
Registrado: jul 2020
Posts: 73
Poder: 4
Elias011267 Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 23-05-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
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= ' +
Responder Con Cita
  #5  
Antiguo 24-05-2023
Elias011267 Elias011267 is offline
Miembro
 
Registrado: jul 2020
Posts: 73
Poder: 4
Elias011267 Va por buen camino
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
Responder Con Cita
  #6  
Antiguo 24-05-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Te paso un video de un ejemplo simple, creo que te servirá.


Responder Con Cita
  #7  
Antiguo 24-05-2023
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Si sigues este tutorial te funcionará perfectamente el asunto de los Deltas.

Using a REST DataSnap Server with an Application and FireDAC

Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #8  
Antiguo 24-05-2023
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
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
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #9  
Antiguo 24-05-2023
Elias011267 Elias011267 is offline
Miembro
 
Registrado: jul 2020
Posts: 73
Poder: 4
Elias011267 Va por buen camino
Smile

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.
Responder Con Cita
  #10  
Antiguo 24-05-2023
Elias011267 Elias011267 is offline
Miembro
 
Registrado: jul 2020
Posts: 73
Poder: 4
Elias011267 Va por buen camino
De todas maneras voy a estudiar el video y el tutorial para pulirme mas... Gracias
Responder Con Cita
Respuesta



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
No puedo grabar en un servidor datasnap tulio Varios 3 22-09-2015 13:15:05
Como puedo actualizar el debian desde Internet georkis Linux 4 18-08-2008 16:34:56
No puedo actualizar el Spybot mefixxto Seguridad 2 24-05-2008 20:18:24
Como puedo actualizar una tabla con procedimientos subzero Firebird e Interbase 3 29-01-2004 18:18:42
no puedo actualizar una tabla jzginez Firebird e Interbase 8 07-12-2003 02:38:12


La franja horaria es GMT +2. Ahora son las 09:49:59.


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
Copyright 1996-2007 Club Delphi