
Bonjour à tous ! Et vive la bonne humeur en ce dernier jour de la semaine !!!



Soit une table GROUPES:
ID_GROUPE (A30), ID_CLIENT (A30)
Un client pouvant faire partie de plusieurs groupes
J'ai deux client 'Pierre' et 'Paul' et je veux savoir dans quels groupes je retrouve ces deux personnes ensembles.
D'où cette fonction :
Function Find_MultiKloz(FieldRech, TblRech, DbRech, FieldKloz : string; LstValeurs : TStrings; KlozSup : string = '') : TStrings;
var
i : integer;
ChaineFin : string;
TmpResult : TStrings;
begin
TmpResult := TStringList.Create;
ChaineFin := '';
With TQuery.Create(nil) do begin
DatabaseName := DBRech;
For i := 0 to LstValeurs.Count - 1 do begin
if i > 0 then begin
SQL.Add('And ('+ FieldRech +' in (');
ChaineFin := ChaineFin + '))';
End;
SQL.Add('Select distinct '+ FieldRech);
SQL.Add('from '+ TblRech);
SQL.Add('Where '+FieldKloz +' = '+ apf(LstValeurs.Strings[i]));
if KlozSup <> ''
then SQL.Add('And ('+ KlozSup +')');
End;
SQL.Add(ChaineFin);
Prepare;
Open;
While not eof do begin
TmpResult.Add(Fields[0].AsString);
next;
end;
Free;
end;
Result.AddStrings(TmpResult);
TmpResult.Free;
end;
Quand j'appelle Find_MultiKloz('ID_CLIENT', 'GROUPES', [MonALIAS], ('Pierre', 'Paul), [clause supplémentaire]), j'ai bien ma liste... mais n'existe-t-il pas une instruction SQL directement ?
(Avec "where ... in (...), ça marche pas car c'est un "ou", et avec Where ID_Client = "Pierre" and ID_Client = "Paul" me renvoie un ensemble vide... et c'est normal)
Simon