最近在给公司做绩效考核系统,为了方便大家安装,我把所有的界面,过程都封装到一个ActiveX控件中,用ADO连接数据库。其中涉及了多个相关的表,因为发现有BUG,表内容的筛选我没有用ADO的datasource设置,而是用SQL语句配合filter属性实现。例如:ADOQuery1是主表,ADOQuery2是从表,在ADOQuery1的AfterScroll过程或者DataSource1的ondatachange过程中写:
with adoquery2 do
  begin
    adoquery2.filted:=false;
    adoquery2.filter:='过滤条件';
    adoquery2.filted:=true;
  end;
整个代码中涉及到主从同步的内容我都是这样处理的,在测试过程中,对数据库的浏览、查询、更新、删除工作都能顺利完成,但是一旦退出浏览器,就会出现异常。后来我把该ActiveX控件添加到Delphi中,在一个新建窗体中加入,也出现了类似的问题,但是我不知道如何定位问题的位置。
我第一次制作ActiveX控件,希望有经验的高手多多指点,这段时间我快急死了。