Hola, hay varias formas de hacerlo, yo lo manejo de la siguiente manera:
Del lado del servidor datasnap solo dejo la conexión y el dataset (Query o Table) enlazado a la conexion.
Ejemplo: Creo una funcion que se llama lista_estados que recibe de parametro una cadena con el nombre del pais sobre el cual deseo obtener el listado de los estados y el resultado lo regreso en un dataset
Código Delphi
[-]function TServerModule.lista_estados(Pais: string):TDataset;
begin
qry_estados.Close;
qry_estados.SQL.Clear;
qry_estados.SQL.Add('select clave, nombre_estado ');
qry_estados.SQL.Add('from estados ');
qry_estados.SQL.Add('where nombre_pais='+quotedstr(pais));
qry_estados.SQL.Add(' order by nombre_estado');
qry_estados.Open;
result:=qry_estados;
end;
De lado del cliente móvil agrego:
TSQLServerMethod.- lo nombro sm_estados y asocio las propiedades:
SQLConnection conexion_al_servidor_datasnap
ServerMethodName TServerModule.lista_estados
Params Nos aparecen 2 parametros: Pais (Entrada) y ReturnParameter (salida). Asociamos el tipo ftWideString al parametro Pais
TDatasetProvider.- lo nombro dsp_estados y le asocio en la propiedad Dataset el nombre de mi servermethod (sm_estados).
TClientDataSet .- lo nombro cds_estados y le asocio en la propiedad ProviderName el nombre de mi datasetprovider (dsp_estados)
Finalmente, hago mi consulta:
Código Delphi
[-]
sm_estados.close;
sm_estados.Params.ParamByName('Pais').Value:=editpais.text;
sm_estados.ExecuteMethod;
sm_estados.SQLConnection.Close;
El resultado lo tengo en cds_estados y lo visualizo donde quiera. Saludos y espero sea lo que necesitas.