Bonjour tout le monde,

Cela fait quelque jour que je butter sur un petit problème de filtre, en effet j'ai une requête SQL avec 4 champs simples et un Calculé, le paramétrage sur les 4 se passe très bien, mais pour le 5eme tout ce que fait ne marche pas, et je me tourne vers vous pour de l'aide, et je vous en remercie d’avance.
Voici ma requête SQL :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
SQLt := 'SELECT DISTINCT f.RfDoc Référence,d.Dat Le,f.Rem Remise,'
         + '(SUM(m.Qtn * p.PxV) * (1-(f.Rem/100))) THT, f.Statu Statut '
         + 'FROM "TabEnt" e INNER JOIN "TabFac" f ON f.Cd = e.Cd '
         + '                INNER JOIN "TabDat" d ON f.Ndt = d.Ndt '
         + '                INNER JOIN "TabMvP" m ON m.RfDoc = f.RfDoc'
         + '                INNER JOIN "TabPrx" p ON p.Cp = m.Cp  '
         + PrmSQL
         + ' GROUP BY f.RfDoc,d.Dat,f.Rem,f.Statu'
ou :
TabEnt : Table des clients (Cd, nom,...ect)
TabFac : Table des factures(RfDoc,Cd,Ndt,Rem,Statu,Typ)
TabDat : Table pour les dates(Ndt,Dat)
TabMvP: Table des Mouvements de produit (RfDoc,Ndt,Cp,Qtn)
TabPrx : Table des prix de Produit(Cp,PxV)
Cd: Reference Client
RfDoc: reference Facture
Cp : eference Produit
Qtn : Quantité
Pxv : Prix de Vente
Rem : taux de remise Facture pour client
Ndt : N° Date
Dat : Date

Sur ma fiche "FORM" j'ai un TDbGrid "grFact",un TRadioGroup "rgFact", un TEdit "edFltr", un TButton "btFltr", une Tquery "grFact", une TDataSource "dsFact"

voila comment se présente ma procédure :
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 procedure TForm1.btFltrClick(Sender: TObject);
  var
   PrmSQL,SQLt: String;
  begin
   if Trim(edFltr.Text) <> '' then
    begin
     case rgFact.ItemIndex of
      -1: begin
           ShowMessage('Veuillez Choisir un critère !!!');
           PrmSQL := 'WHERE f.Statu <> "An" and f.Cd = :RefClt';
           Params[0].AsString  := RefClt.Text;
          end;
       0: begin
           PrmSQL := 'WHERE f.Statu <> "An" and f.Cd = ' + QuotedStr(RefClt.Text)
                     + ' and f.RfDoc = :RefDoc';
           Params[0].AsString  := edFltr.Text;
          end;
       1: begin
           PrmSQL := 'WHERE f.Statu <> "An" and f.Cd = ' + QuotedStr(RefClt.Text)
                     + ' and d.Dat = :Dt';
           Params[0].AsDate  := StrToDate(edFltr.Text);
          end;
       2: begin
           PrmSQL := 'WHERE f.Statu <> "An" and f.Cd = ' + QuotedStr(RefClt.Text)
                     + ' and f.Statu = :St';
           Params[0].AsString  := edFltr.Text;
          end;
       3: begin
           PrmSQL := 'WHERE f.Statu <> "An" and f.Cd = ' + QuotedStr(RefClt.Text)
                     + ' and f.Rem = :Rem';
           Params[0].AsFloat := StrToFloat(edFltr.Text);
          end;
       4: begin
           PrmSQL := 'WHERE f.Statu <> "An" and f.Cd = ' + QuotedStr(RefClt.Text)
                     + ' and (SUM(m.Qtn * p.PxV) * (1-(f.Rem/100))) = :Mnt'; //Mon Pb se pose ici
           Params[0].AsCurrency := StrToCurr(edFltr.Text);
          end;
     end;
    end
   else ShowMessage('Veuillez saisir du texte !!!');
   SQLt := 'SELECT DISTINCT f.RfDoc Référence,d.Dat Le,f.Rem Remise,'
         + '(SUM(m.Qtn * p.PxV) * (1-(f.Rem/100))) THT, f.Statu Statut '
         + 'FROM "TabEnt" e INNER JOIN "TabFac" f ON f.Cd = e.Cd '
         + '                INNER JOIN "TabDat" d ON f.Ndt = d.Ndt '
         + '                INNER JOIN "TabMvP" m ON m.RfDoc = f.RfDoc'
         + '                INNER JOIN "TabPrx" p ON p.Cp = m.Cp  '
         + PrmSQL
         + ' GROUP BY f.RfDoc,d.Dat,f.Rem,f.Statu';
   with qrFact do
    begin
     SQL.Clear;
     SQL.Text := SQLt;
     Open;
    end;
  end;
j’espère que j'ai bien expliquer mon problème