循環我有一個代碼,一些這樣的事通過優化數據集
dxMemOrdered : TdxMemData;
while not qrySandbox2.EOF do
begin
dxMemOrdered.append;
dxMemOrderedTotal.asCurrency := qrySandbox2.FieldByName('TOTAL').asCurrency;
dxMemOrdered.post;
qrySandbox2.Next;
end;
這個代碼在一個線程中執行。當有大量記錄說「400000」時,大約需要25分鐘來解析它。有沒有什麼辦法可以通過優化循環來縮小尺寸?任何幫助,將不勝感激。
更新
基礎上的建議,我做了以下修改
dxMemOrdered : TdxMemData;
qrySandbox2.DisableControls;
while not qrySandbox2.Recordset.EOF do
begin
dxMemOrdered.append;
dxMemOrderedTotal.asCurrency := Recordset.Fields['TOTAL'].Value;
dxMemOrdered.post;
qrySandbox2.Next;
end;
qrySandbox2.EnableControls;
和我的輸出時間從15分鐘到2分鐘提高。謝謝你們
這是TdxMemData – Jeeva 2013-05-08 08:47:22
使用'try..finally'塊作爲@whosrdaddy在他的答案。我提到的前向遊標可能會幫助您改進從源數據集中讀取數據。 – TLama 2013-05-08 11:59:43