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 :
ou :
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'
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 :
j’espère que j'ai bien expliquer mon problème
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;
Partager