把ADO数据集的LOCKTYPE设置为:ltBatchOptimtic,
  if not (ADOQuery1.State in [dsBrowse]) then
   showmessage('数据被修改')
可是我换行后,它的状态就改为Browse了, 这是怎么回事

解决方案 »

  1.   

    currType 设为ctStatic看行不行
      

  2.   

    限定处于dsinsert,dsedit时不允许换行。
      

  3.   

    在AfterScroll里写
     if Adoquery1.UpdateStatus<>usUnmodified then
      ShowMessage('数据或修改或插入或删除');
      

  4.   

    在窗体关闭事件《好像是closequery吧》中加楼上的判断就OK了
      

  5.   

    那这样的话,我关闭窗口时怎么才能知道这个窗口中的数据是否被保存呢?
    >>>>
    if adoquery1.state in [dsinsert,dsedit] then
      adoquery1.updatebatch
      

  6.   

    可是把ADO数据集的LOCKTYPE设置为:ltBatchOptimtic,
      if not (ADOQuery1.State in [dsBrowse]) then
       showmessage('数据被修改') 可是我换行后,其实还没有被保存到数据库中,它的状态就改为Browse了,
    关闭窗口时就不会提示了"数据被修改"。这是怎么回事
      

  7.   

    加一个计数变量吧。
    就像Clientdataset组件一样。
    编辑保存时加1.
    提交保存到数据库后清0.