Bonjour,

Une méthode d'un WebService renvoie le résultat d'une requête qui contiendra plusieurs lignes.

J'ai créé une classe qui hérite de TRemotable.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
  TStock = class(TRemotable)
  private
    FRegion: AnsiString;
    FGroupe: AnsiString;
    FAgence: AnsiString;
  published
    property Region: AnsiString read FRegion write FRegion;
    property Groupe: AnsiString read FGroupe write FGroupe;
    property Agence: AnsiString read FAgence write FAgence;
  end;
J'ai ensuite utilisé un TList pour créer une liste:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
function TestWS.StockMini(): TList; stdcall;
var
  session : TOraSession;
  sqlQuery : TOraQuery;
  stock : TStockIdeal;
  liste : TList;
begin
  liste := TList.Create;
  session := TOraSession.Create(nil);
  session.ConnectString := 'dev/dev@test';
  sqlQuery := TOraQuery.Create(nil);
  sqlQuery.Session := session;
  sqlQuery.SQL.Text := 'SELECT	REGION, GROUPE, AGENCE FROM STKMINI';
  sqlQuery.Open;
  if sqlQuery.Active then begin
    sqlQuery.First;
    while not sqlQuery.EOF do begin
      stock := TStockIdeal.Create;
      stock.Region := sqlQuery.Fields[0].AsString;
      stock.Groupe := sqlQuery.Fields[1].AsString;
      stock.Agence := sqlQuery.Fields[2].AsString;
      liste.Add(stock);
      sqlQuery.Next;
    end;
  end;
  sqlQuery.Close;
  sqlQuery.Free;
  Result := liste;
end;
Cela ne fonctionne évidemment pas...
Je suppose qu'il faut sérialiser cette liste pour la renvoyer. Je ne sais pas comment gérer la sérialisation et le typage en sortie du WS.

Si quelqu'un pouvait me donner un début de réponse, ce serait sympa.