Hola comunidad la respuesta para mi pregunta, es, para enviar un DataSet en un servicio web, utilice un arreglo de una clase que hereda de de TREMOTABLE, así, todo esto en el módulo servidor del servicio web:
Código Delphi
[-]
Departamentos = class (TRemotable)
private
Fcodigo: String;
FDescricpion: String;
published
property Codigo: String read Fcodigo write Fcodigo;
property Descripcion: String read FDescricpion write FDescricpion;
end;
TDepartamentos = array of Departamentos;
function ConsultarDepartamento (): TDepartamentos; stdcall;
Todo el código anterior debe ir dentro de un módulo SOAP, en la clase INTF.CLASS
El siguiente código debe ir dentro del módulo SOAP, pero en la clase IMPL.CLASS:
Código Delphi
[-]
function TServicioWebPrueba.ConsultarDepartamento: TDepartamentos;
var
Departamento : TDepartamentos;
Indice: Integer;
begin
try
try
DataModulePrueba.IBQueryDepartamentos.Prepare;
DataModulePrueba.IBQueryDepartamentos.Open;
Indice:= 0;
while not DataModulePrueba.IBQueryDepartamentos.Eof do
begin
SetLength(Departamento, Indice + 1);
Departamento[Indice]:= Departamentos.Create;
Departamento[Indice].Descripcion:= DataModulePrueba.IBQueryDepartamentos.FieldByName('DESCRIPCION').AsString;
Departamento[Indice].Codigo:= DataModulePrueba.IBQueryDepartamentos.FieldByName('IDDEPARTAMENTO').AsString;
Indice:= Indice + 1;
DataModulePrueba.IBQueryDepartamentos.Next;
end;
finally
DataModulePrueba.IBQueryDepartamentos.Close;
end;
except
on Error: Exception do
begin
end;
end;
Result:= Departamento;
end;
Ya en el cliente en un evento de un botton ONCLICK se debe hacer lo siguiente:
Código Delphi
[-]
procedure TFormPrincipal.ButtonVerClick(Sender: TObject);
var
I: Integer;
Departamentos : TDepartamentos;
begin
Departamentos:= IServicioWebsERVIDOR1.GetIServicioWebPrueba.ConsultarDepartamento;
for I := 0 to High(Departamentos) do
begin
ListBoxPrincipal.Items.Add(Departamentos[i].Codigo + ' - ' + Departamentos[i].Descripcion)
end;
end;