Buenas!
Estoy trabajando con Datasnap y tengo corriendo una aplicación cliente que le envía peticiones al servidor Datasnap. Trabajo con base de datos Interbase, Delphi XE y utilizo para las conexiones los componentes IB.
El problema con el que me encuentro es el siguiente:
Invoco al servidor Datasnap para obtener una serie de registros que cumplan con determinada condición. Para ello en el lado servidor realizo una sentencia SQL y al resultado lo paso a un DBXReader y se lo envío a la aplicación cliente. La misma, lo pasa a un ClientDataSet para mostrarlo en una grilla.
Cuando el resultado de la invocación es el DBXReader todo funciona perfectamente pero el problema aparece cuando el DBXReader se devuelve dentro de una clase, definido como un atributo más. En dicho caso el error que se obtiene es el siguiente:
Remote Error: Internal: Type tkPointer is not currently supported
No entiendo bien cual es la lógica del error ya que realizo la misma lógica en ambos casos y solo cambia el tipo de dato que devuelve la función invocada.
La instrucción que devuelve el resultado desde el Datasnap, en el caso en que anda bien es:
Código Delphi
[-] Result := TDBXDataSetReader.Create(cdsObtenerDatos, false)
)
La instrucción que devuelve el resultado desde el Datasnap, en el caso en que anda NO bien es:
Código Delphi
[-] Result := tResultObtener.Create;
Result.resultDBXReaders := TDBXDataSetReader.Create(cdsObtenerDatos, false);
La definición de la clase contenedora es la siguiente:
Código Delphi
[-]tResultObtener = class (TObject)
private
fResultGral: tResultGral;
fResultDBXReaders: TDBXReader;
published
property resultGral: tResultGral read fResultGral write fResultGral;
property resultDBXReaders: TDBXReader read fResultDBXReaders write fResultDBXReaders;
end;