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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
// event sur colonne
procedure TMain.SMDBGrid1TitleClick(Column: TColumn);
begin
with SMDBGrid1 do
begin
if Column.Field.FieldNo in [4,17,18,12,13] then
begin
case Columns[Column.Index].SortType of
SmdbGrid.stNone : Columns[Column.Index].SortType:=SmdbGrid.stAscending;
SmdbGrid.stAscending : Columns[Column.Index].SortType:=SmdbGrid.stDescending;
SmdbGrid.stDescending: Columns[Column.Index].SortType:=SmdbGrid.stNone;
end;
end;
end;
Tri;
Trier;
end;
// Clause order by
function TMain.Tri: String;
var i : Word;
begin
result:='';
With SMDBGrid1 do
for I := 0 to Columns.Count - 1 do
begin
if Columns[i].Visible
AND (Columns[i].Field.FieldNo in [4,17,18,12,13])
AND (Columns[i].SortType<>SmdbGrid.stNone)
then begin
if Length(Result)>0 then Result:=Result+',';
Result:=Result+Columns[i].FieldName;
if Columns[i].Field.FieldNo<>17 then
begin
if Columns[i].SortType=SmdbGrid.stAscending
then Result:=Result+' ASC'
else Result:=Result+' DESC';
end
else begin
if Length(Result)>0 then Result:=Result+',';
if Columns[i].SortType=SmdbGrid.stAscending
then Result:=Result+'SAISON,NUMERO,LIGNE ASC'
else Result:=Result+'SAISON,NUMERO,LIGNE DESC';
end;
end;
end;
TriBtn.Enabled:=Length(Result)>0;
end;
// repositionnement après tri
procedure TMain.Trier;
var S : String;
N,L : Integer;
begin
ZQ.DisableControls;
S:=ZQ.FieldByName('SAISON').AsString;
N:=ZQ.FieldByName('NUMERO').AsInteger;
L:=ZQ.FieldByName('LIGNE').AsInteger;
FetchLignes;
ZQ.Locate('SAISON;NUMERO;LIGNE',varArrayOf([S,N,L]),[]);
ZQ.EnableControls;
end;
// Récupération des Enregistrements
procedure TMain.FetchLignes;
var lp : TLigneProd;
us : TUsage;
sort: string;
begin
if LignesProds.TabIndex<0 then exit;
LP:= TLigneProd(LignesProds.Tabs.Objects[LignesProds.TabIndex]);
if Usages.TabIndex<0 then exit;
US:= TUsage(Usages.Tabs.Objects[Usages.TabIndex]);
ZQ.DisableControls;
ZQ.Active:=False;
ZQ.SQL.Clear;
ZQ.SQL.Add('SELECT SAISON,NUMERO,LIGNE,FOURNCHOISI,');
ZQ.SQL.Add('LIGNEPROD,USAGE,QTE,NOTE1,NOTE2,REMARQUE,LAST_MODIF,DATE_LIV,FIN_FABS,');
ZQ.SQL.Add('DATE_DEPART,COLIS,COMPLEMENT,LANCEMENT,ARTICLE,QTELIVRE,QTERELIQUAT FROM LLANCEMENT');
ZQ.SQL.Add('WHERE LIGNEPROD='+QuotedStr(LP.Code));
ZQ.SQL.Add('AND USAGE='+QuotedStr(US.Code));
if not DataModule1.USER.FieldByName('USINE').isnull then
begin
ZQ.SQL.Add('AND FOURNCHOISI='+QuotedStr(DataModule1.USER.FieldByName('USINE').asString));
end;
sort:=tri;
if Length(Sort)>0 then ZQ.SQL.Add('ORDER BY '+sort);
ZQ.Active:=True;
// FetchTotaux; calcul totaux "pied de grid"
ZQ.EnableControls;
end; |
Partager