Ir al contenido



Foto

Uso de varios DataModules en el servidor datasnap


  • Por favor identifícate para responder
8 respuestas en este tema

#1 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 22 junio 2012 - 02:15

Buenas,

Como me comentó Wilson aquí, para poder tener más de un DataModule en el servidor, estoy usando la directiva de compilación {$METHODINFO ON}, pero soy incapaz de ver desde el cliente los DataSets puestos en él.

Lo tengo tal que así



delphi
  1.   {$MethodInfo ON}
  2.   TLTiquetDm = class(TDataModule)
  3.     qLTiquetM: TQuery;
  4.     qLTiquetD: TQuery;
  5.     dspLTiquetM: TDataSetProvider;
  6.     dspLTiquetD: TDataSetProvider;
  7.   private
  8.   public
  9.   end;
  10.   {$MethodInfo OFF}



No se si esté DataModule tiene que estar en Autocreate, o si desde el TDSServerModule hay que hacer algo para que desde el cliente se vea,....

Gracias

  • 0

#2 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 22 junio 2012 - 07:30

Efectivamente los Datasets no los puedes ver desde el cliente, si necesitas hacer algo con ellos debes crear un método (este si será visible) y pasarle los parámetros que fueren necesarios desde el cliente.

Saludos
  • 0

#3 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 22 junio 2012 - 07:54

Pero, entonces, qué gracia tiene? Es decir, si yo traslado los DataSet a otro DataModule es precisamente para ordenar las cosas. Si no puedo verlos desde el cliente (bueno, a ellos no, al provider asociado)... de qué me sirve llevarlos? No podré asociarlo a mi ClientDataSet en el cliente por lo que no podré ver los datos que contiene.

No se si me explico

Gracias de nuevo
  • 0

#4 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.018 mensajes
  • LocationMéxico

Escrito 22 junio 2012 - 08:02

Hola

Y que pasa si se hace esto.....



delphi
  1.   {$MethodInfo ON}
  2.   TLTiquetDm = class(TDataModule)
  3.   private
  4.  
  5.   public
  6.     qLTiquetM: TQuery;
  7.     qLTiquetD: TQuery;
  8.     dspLTiquetM: TDataSetProvider;
  9.     dspLTiquetD: TDataSetProvider;
  10.  
  11.   end;
  12.   {$MethodInfo OFF}



Saludos

  • 0

#5 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.018 mensajes
  • LocationMéxico

Escrito 22 junio 2012 - 08:05

También pudiera ser esto.....



delphi
  1.   {$MethodInfo ON}
  2.   TLTiquetDm = class(TDataModule)
  3.   private
  4.   FqLTiquetM: TQuery;
  5.   FqLTiquetD: TQuery;
  6.   FdspLTiquetM: TDataSetProvider;
  7.   FdspLTiquetD: TDataSetProvider;
  8.  
  9.   public
  10.  
  11.   published
  12.     qLTiquetM: TQuery;
  13.     qLTiquetD: TQuery;
  14.     dspLTiquetM: TDataSetProvider;
  15.     dspLTiquetD: TDataSetProvider;
  16.  
  17.     //Con sus respectivos read y write
  18.  
  19.   end;
  20.   {$MethodInfo OFF}



Saludos

  • 0

#6 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 22 junio 2012 - 08:36

Ahora creo entender tu problema. Lo que debes hacer en el cliente es arrastrar un TDSProviderConenction de la paleta DataSnapClient , configurar la conexión  y el SereverClassName (que es tu dataModule en el servidor), a partir de allí deberás configurar el RemoteServer de los TClientDatset para que apunten al TDSProviderConenction, solo hasta entonces serán visibles los proveedores en el cliente.

Necesitarás en el cliente un TDSProviderConenction por cada DataModule en el servidor.

Ahora bien, cada DataModule en el servidor deberá apuntar a un  TDSServerClass en el contenedor del servidor y configurar el evento OnGetClass.



delphi
  1. procedure TContenedor.DSServerClassGetClass(DSServerClass: TDSServerClass;
  2.   var PersistentClass: TPersistentClass);
  3. begin
  4.   PersistentClass := TuModuloDeDatos;
  5. end;



Saludos
  • 0

#7 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 22 junio 2012 - 10:01

De todas formas lo mas conveniente es usar TDSServerModule en vez de TDataModule para ir a la fija.

Saludos
  • 0

#8 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 22 junio 2012 - 12:17

Gracias a todos

Haré pruebas el lunes, que yo ya he empezado el finde jejejejeje

Os comentaré resultados
  • 0

#9 chaja

chaja

    Advanced Member

  • Miembros
  • PipPipPip
  • 54 mensajes

Escrito 04 abril 2015 - 01:48

Hola:

Hola Cadetill y demas compañeros.... tengo un tema similar. Yo quiero organizar mis DataModule que tengo en mi aplicacion. Estoy pasando parte del sistema de gestion a DataSnap, y no se como organizar los dataModule. Empece hacer ServerModule, y por cada uno tengo un SQLConnection ( no se si esta bien eso), Pero por causa que no se pude agregar 5 ServerModules y no me permite mas , uso XE5 Entreprise. Lo que me gustaria saber es, si tengo mas de 2 o 5, 6,....xx datamodules como los organizo?.

Si pongo en el OnCreate del ServerModule la creacon de los dataModule, todo bien, pues el cliente DataSnap cuando se conecte, este se va a crear y se destruria junto a los Datamodule, Pero si Hago varios ServerModule, que pasa????  como se comporta la destruccion y construccion de los mismos?

 

Gracias 

 

Luis Roldan

Mar del Plata

Argentina


  • 0