打开uniQuery时,为什么DataSource.onDataChange会触发2次?

时间:2017-08-30 04:59:55

标签: delphi ado unidac

我有关于联合国uniQuery的问题:

uniQuery打开时,如果链接了DataSource组件,DataSource.onDataChange将触发2次,ADOQuery只触发1次,为什么?

环境:

  1. uniDAC:6.4,7;
  2. delphi:7,xe 10.1 berlin

1 个答案:

答案 0 :(得分:0)

我多次遇到同样的问题,我发现它是一个默认的加载行为,不仅仅是在Uni组件中,所有类似的数据库组件在加载时都会触发.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;

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