Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-06-2014
doctorhd doctorhd is offline
Miembro
NULL
 
Registrado: abr 2013
Posts: 48
Poder: 0
doctorhd Va por buen camino
Devolver DataSetProveider

Hola estimados, estoy construyendo una aplicación datasnap y tengo implementadas algunas funciones de servidor que devuelven como resultado un datasetproveider para que este sea rescatado por la aplicación cliente, el problema es que al momento de ejecutarlo la aplicación servidora genera una excepcion que indica que no son soportados retornos de datos de tipo puntero. Creo entender que este tipo de llamadas no soporta la devolución de datos complejos como lo son objetos o conjuntos de datos. Me gustaría me aclararan si es correcto lo que indico o es solo un error en la forma de devolver el objeto. Aquí va el código:
Código Delphi [-]
unit UsuarioMetodosUnit;

interface

  uses Datasnap.Provider, DataSnap.DSProviderDataModuleAdapter,
       System.Classes, ClassUsuarioDataFirebirdUnit;//Capa de datos Firebird

  type
    {$MethodInfo ON}
    TUsuario = class(TComponent)

    private { Private declarations }

    public { Public declarations }
      function SeleccionaUserByCodigo(ACodUsuario:String):TDataSetProvider;
    end;
    {$MethodInfo OFF}

implementation

Uses DeclaracionesGlobalesUnit;

  function TUsuario.SeleccionaUserByCodigo(ACodUsuario:String):TDataSetProvider;
  var FUsuario:TUsuarioDataFB;
  begin
    if vParamProveedorData.ProveedorData = tcFirebird then begin
       FUsuario:=TUsuarioDataFB.Create;
       result:=FUsuario.fbSeleccionaUsuario(ACodUsuario)
    end;
    //tcProgress:
    //tcMySql:
  end;
end.

Saludos...
Responder Con Cita
  #2  
Antiguo 16-06-2014
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Diría que no debes devolver el DataSetProvider, sino el DataSet.
El Provider es una unión entre el DataSet y otras cosas
Responder Con Cita
  #3  
Antiguo 16-06-2014
doctorhd doctorhd is offline
Miembro
NULL
 
Registrado: abr 2013
Posts: 48
Poder: 0
doctorhd Va por buen camino
Lo probare, aunque creo que el problema se debe a que cuando se asigna una clase a una variable, (en este caso como resultado de una función), lo que se hace realmente es asignar un puntero al objeto traspasado y no el objeto en si. Respecto a porque devuelvo un DataSetProveider, es porque la metodología utilizada cuando lo haces con un DataModuleServer es así. Obtienes un conjunto de datos (DataSet) el cual lo conectas a un DataSetProveider por el lado del servidor y lo recepcionas en el cliente enlazando dicho DataSetProveider con un DataSetConeccion y así accedes a los datos...

Saludos.,,
Responder Con Cita
  #4  
Antiguo 16-06-2014
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
No tengo mucha experiencia, pero creo que no es así.
Del lado del Server
DataSet --> DataSetProvider --> ClientDataSet --> [DataSnap convierte a JSON]
Del lado del cliente
[JSON] --> TSQLConnection

Es obvio que todos estos componentes en realidad son punteros que se pasan de una función a otra, pero según el tipo de dato del que se trate, la información apuntada se trata de una manera o de otra.
Responder Con Cita
  #5  
Antiguo 17-06-2014
Avatar de apicito
apicito apicito is offline
Miembro
 
Registrado: may 2003
Ubicación: Ourense
Posts: 341
Poder: 21
apicito Va por buen camino
Quizás te sea de utilidad:
http://blogs.embarcadero.com/pawelgl...4/06/04/40330/
https://www.youtube.com/watch?v=l1WlPaUUmtU
https://forums.embarcadero.com/threa...threadID=91739
http://lfgonzalez.visiblogs.com/2013...t-y-viceversa/
Saludos.
Responder Con Cita
  #6  
Antiguo 20-06-2014
doctorhd doctorhd is offline
Miembro
NULL
 
Registrado: abr 2013
Posts: 48
Poder: 0
doctorhd Va por buen camino
Muchas gracias duilioisola y apicito, efectivamente el objeto que se debía devolver era un TDataSet. Ahora mi pregunta es a quien le corresponde liberar al objeto devuelto, al cliente o al servidor...??

Saludos.
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
Devolver valores en SP GustavoCruz MS SQL Server 2 08-01-2013 03:10:52
Devolver Valor de un Caption muli OOP 2 24-04-2007 20:21:32
Devolver el foco a aplicacion Coco_jac Varios 2 13-10-2005 16:38:33
devolver una cadena jmlifi Varios 5 09-08-2005 11:47:37
Devolver rol otorgado a usuario en particular alehillebrand SQL 1 03-04-2005 23:44:39


La franja horaria es GMT +2. Ahora son las 22:20:45.


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