Décidément, je sèche avec les requêtes imbriquées
Voici le cas qui me préoccupe:
J'ai deux tables qui contiennent respectivement
Table1: QC_Res champs: Test, QC_lot, Result, Flag
Table2: QC_Val Champs: Test, QCLot, Mean, ETCalc
Tout est en VARCHAR!!!
Je souhaite mettre un Flag à "2SD" quand le Flag est vide et que le Result<Mean-(2*ETCalc)
pour le lot et le test correspondant bien sûr
Voici mon code:
Avant de voir à la ponctuation, qui peux me dire si au moins la structure est correcte?
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 Query.Active:=False; Query.SQL.Clear; Query.SQL.Add('SELECT Test, Result, QC_Lot, Flag FROM qc_res'); Query.Active:=true; Query.First; while not Query.eof do begin Query2.Active:=False; // query2 Query2.SQL.Clear; Query2.SQL.Add('UPDATE qc_res SET Flag = '+quotedStr('-2SD') +'WHERE '+(Query.FieldByName('Result').AsString) +'< Mean FROM QC_Val' ); // +'(WHERE ' +'(WHERE Test LIKE '+Query.FieldByName('Test').AsString //de query // message d'erreur de la ligne ci-dessus: Opérateur pas applcable à ce type d'opérande // j'ai aussi tenté le "=" mais pas mieux :-( +'AND' +'Lot LIKE '+Query.FieldByName('QC_Lot').AsString +')' +'- 2*ETCalc FROM QC_Val ' +'(WHERE ' +'Test = '+Query.FieldByName('Test').AsString +'AND' +'Lot = '+Query.FieldByName('QC_Lot').AsString +')' +'AND Flag FROM QC_Res = '') +')'); Query2.ExecSQL(); end; Query.Next;
Bien sûr le plaisir de la ponctuation est ensuite une autre paire de manches
pour vos lumières d'experts
Partager