SQL2000数据库:当某个表添加一条或多条数据时,Delphi怎样编写一个程序响应它?例如:
已经用ADOConnection1 连接此数据库,ADOTable1连接好要观察的表
请问怎样当ADOTable1所连接的数据库增加数据时,弹出一个消息响应.

解决方案 »

  1.   

    注意 我不是用ADOTable1来添加数据,而是另外一个程序。
      

  2.   

    如果用ado,ado在后台时时监视着服务器数据的更新;只要一用户更改了服务器的数据,
    你本地的ado缓存中也自动更改,现在只需做的就是把本地ado缓存中的数据显示出来
    就已达到时时更新的效果:ADODataSet1控件设置如下:
    ADODataSet1.CursorLocation:=clUseClient;
    ADODataSet1.CursorType:=ctStatic;ADODataSet1.Refresh;加一时间控件:
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
    ADODataSet1.Refresh;
    end;
      

  3.   

    不好意思,上面只能看到修改、删除后的数据,如果
    ADODataSet1.CursorType:=ctDynamic就能看到其它
    用户修改、删除、增加的数据,可惜我的用不起ADODataSet1.CursorType:=ctDynamic
      

  4.   

    我觉得能用Trigger解决的问题去用一个Timer是比较差的做法
      

  5.   

    OK,我来替楼主问一下,情况假设:
        用Delphi的程序观察数据,而在SQL Query中修改数据,利用触发器,如何让Delphi的程序进行数据更新?
      

  6.   

    这个当然是用触发器了,很显然啊,
    如果是新增数据,那你就写个Insert的触发器;如果还需要检测修改数据,那就写个Update的触发器!然后让这些触发器返回值给delphi程序就可以了!
      

  7.   

    你们都忽略了一个最基本的问题,用触发器是后台数据库支持的,问题用了触发器之后怎样随时让Delphi程序知道呢?!不要告诉我用定时器哦!那样子系统开销有多大你知道吗?等到搂主来关心这个问题才说吧!
      

  8.   

    codehunter008(代码猎手008):我觉得你说得不对:
    1.该程序的生命期应该只限于运行期内,没必要注册成系统的服务,就算要在后台监视,也没必要做成服务形式,何况操作系统有可能只是win9X而非NT,其实这个问题根本没必要涉及定时器。
    2.不是有消息就通知主程序,后台数据库是无法向Delphi程序发送系统消息的,应该由Delphi程序自动获取消息,而且是非数据库连接方式,因为数据库连接本身存在延时而且消耗较多的系统资源,在一个事件频繁发生的情况下,不断地连接数据库,嘿嘿!
      

  9.   

    forget2000:好想知道你的想法,因为我现在就有这个问题
    搂住你快回来