比如说新增修改或保存一条记录时,State属性都发生变化,有没有这类的消息可以拦截到或者其他方法?

解决方案 »

  1.   

    没有直接的方法可以获得,有个思路供参考:重载WinProc函数,在消息处理的时候,不断的发送获得ADO组件的状态消息,再分支到其他模块进行处理。
      

  2.   

    为什么要直接获得呢
    不可以使用AfterScroll等方法吗
      

  3.   

    不过你可以在OnWillChangeRecordset事件中看看。
      

  4.   

    to: windindance(风舞轻扬) 
    我希望是实时的,没有符合要求的事件,OnWillChangeRecordset没有试过,单从这个名称看大约是记录即要改变时触发,与状态无关吧。
    我想这个问题也不会难吧 
    大家帮帮忙
      

  5.   

    看了ADODB.PAS的源码,没有相关的事件。
      

  6.   

    可能还是用OnWillChangeRecordset好一些。
    提供如下状态:
    erAddNew A new row was added.
    erDelete An existing row was deleted.
    erUpdate An existing row was modified with new values.
    erUndoUpdate An update operation was canceled.
    erUndoAddNew A row insert operation was canceled.
    erUndoDelete A row delete operation was canceled.
    erRequery The recordset was refreshed with the Requery method.
    erResynch The recordset was resynchronized with the Resynch method.
    erClose The recordset was closed.
    erMove The recordset's row pointer moved.erFirstChange Equivalent to the ADO value ad.
    erMoveFirst The recordset's row pointer moved to the first row.
    erMoveNext The recordset's row pointer moved to the next row.
    erMovePrevious The recordset's row pointer moved to the previous row.
    erMoveLast The recordset's row pointer moved to the last row.
      

  7.   

    to: windindance(风舞轻扬) 
    没有其他好的方法先按照你说的OnWillChangeRecordset事件
    可惜TClientDataSet组件没有这个事件,我自己再找个解决方法吧
    不管怎么样还是把这个帖子结了