按时间先后排序后开算,可以试着设一个表示开始的B:boolean,读到开始就B:=true,读到其它就B:=false;{开始算时间差加起来等等}
至于分process,直接用集合、数组或者stringlist搞定。三个XXX为一组可以把它们用什么符号(比如*)连接起来做标识字符串放到stringlist做标识。没记错的话stringlist可以用作类似于INI的功能的。
总体来说应该不算难事,楼主要有信心。

解决方案 »

  1.   

    我目前把時間差算出來..
    但是卡在不知該如何把一樣的NUM_PS及PROCESS時間加總起來...
    請各位指導...謝謝!!while not Adoquery1.Eof do
       begin
          status:=adoquery1.fieldbyname('status').AsString;
            if (status='AA') then
              begin
                timeA:=adoquery1.fieldbyname('datetime').Asdatetime;
                chkA:=adoquery1.fieldbyname('chk').AsString;
              end;
            if ((status='BB') or (status='CC')) then
              begin
                timeBC:=adoquery1.fieldbyname('datetime').Asdatetime;
                chkB:=adoquery1.fieldbyname('chk').AsString;
                chkC:=adoquery1.fieldbyname('chk').AsString;
              end;
            if(((chkA=chkB)or(chkA=chkC))and((chkA<>'')and(chkB<>'')and(chkc<>'')))then
               begin
                 time:=(MinutesBetween(timeA,timeBC));
                 chkA:=''; chkB:=''; chkC:='';
               end;
         Adoquery1.Next;
       end;
      

  2.   

    用HashMap之类的结构就可以了。StringList中也有查找功能的,可以用它来模拟Hashmap
      

  3.   

    數據結構規劃不完善導致難以統合計算......
    在記錄數據的同時多加一個階段流水號字段(欄位)...後續就可以輕易以 SQL 做統計!