0

我有一个关于unidac的问题uniQuery

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

环境:

  1. uniDAC:6.4, 7;
  2. 德尔福:7,xe 10.1 柏林
4

1 回答 1

0

我多次遇到同样的问题,我发现这是默认加载行为,不仅在 Uni-component 中,所有类似的数据库组件.onDataChange在加载时都会触发两次或更多次,唯一的解决方法是使用变通方法忽略第一个触发器。

您也可以在这里找到类似的问题

如果触发两次让您烦恼,请尝试我的解决方法:

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;

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

于 2017-08-30T14:01:48.203 回答