2017-08-30 87 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; 

这将消除所有没有必要的触发器,
希望帮助。

相关问题