在使用adoquery处理数据时,每当指向记录的指针发生变化时就会自动保存记录,无论adoquery处于insert还是edit状态,我的问题是如何能在记录的指针发生变化时给出提示,以便用户得知数据集现在所处的状态,经而让他们进行保存和取消操作.我试图用AfterScroll事件来控制,但是当插入一条新的记录时,也会出发该事件,从而无法判断是添加了新记录和是用户改变了记录的指针

解决方案 »

  1.   

    beforescoll
    判断state :dsbrowse无修改
                dsEdit有修改
                 dsinsert插入
      

  2.   

    beforescoll好像与AfterScroll没有多大差别
      

  3.   

    beforescoll好像与AfterScroll没有多大差别
      

  4.   

    将DataSet的Lock Type 设成ltBatchOptimistic在内存中修改,待UpdateBatch再入物理库中.当有修改过则可通过Modified来判断是否被修改过。
      

  5.   

    游标改变会触发SCROLL事件,在beforesroll中写你要处理过程
      

  6.   

    在beforescorll事件中可以取得在记录称动之前的状态
    在afterscorll这后状态都变成dsbrows了不知道之前发生什么
      

  7.   

    procedure TForm1.ADOQuery1BeforeScroll(DataSet: TDataSet);
    begin
    if ADOQuery1.State=dsinsert then
    showmessage('insert');
    if ADOQuery1.State=dsedit then
    showmessage('edit');
    end;
    这段代码中当ADOQuery1处于插入状态且记录指针移动时,会执行showmessage('insert');但
    当ADOQuery1处于编辑状态且记录指针移动时,不会执行showmessage('edit');,这是什么原因