2017-08-30 88 views
0

我有一個關於unidac的uniQuery問題:當uniQuery打開時,爲什麼DataSource.onDataChange會觸發2次?

uniQuery開放,如果DataSource組件連接,該DataSource.onDataChange會觸發2次,ADOQuery觸發僅有1時,爲什麼呢?

環境:

  1. uniDAC:6.4,7;
  2. 德爾福:7,XE 10.1柏林
+0

環境: 1 uniDAC:6.4,7; 2 delphi:7,xe 10.1 berlin – d5f

+0

如果你想添加細節到你的問題,通過編輯問題來做到這一點(參見標籤下面的'edit'按鈕) –

+0

你有多少條記錄(從uniQuery返回)? –

回答

0

我面臨同樣的問題很多次,我發現這是一個缺省的裝載行爲不只是在統一分量,所有類似的數據庫組件將觸發.onDataChange兩次或加載時更多,唯一的方法是通過使用變通辦法忽略第一個觸發器。

您也可以找到類似的問題here

如果觸發兩次很討厭你,試試我的解決方法是:

var c: integer; // must be global and reset to 0 when u close your query 

procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField); 
    begin 
     if c = 2 then 
     begin 
      // do your actions 
     end 
     else 
     begin 
      inc(c); 
     end; 
    end; 

這將消除所有沒有必要的觸發器,
希望幫助。

相關問題