请问各位大侠,如何在ado中实现类似BDE中的OnpdateRecord事件和UpdatesPending属性?

解决方案 »

  1.   

    在TADODataSet有一个LockType,设置为ltBatchOptimistic就和BDE的CachedUpdate:=true
    类似。TUpdateStatus用来表示状态。
      

  2.   

    对不起rockswj(石头) 你还没看懂我的意思
    问题一:
    如果我用ADO进行多表更新时,我能否象BDE中的在OnpdateRecord事件中自已写SQL语言,虽然ADO支持自动的多表更新,但是如果我只想更新其中的某一个表时就不行了,另外如果用ADO自动的多表更新,也不太灵活
    问题二:
    TUpdateStatus不能反应TADODATASET中的delete更改性质代码如下(在缓存模式下):procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
    if(ADOTable1.UpdateStatus()<>usUnmodified)then
      ShowMessage("尚未提交修改!");
    end;我是才从BDE中转入到ADO来开发数据库应用程序,在用了一段时的ADO后,可能是我的能力有问题,觉得ADO的许多功能用不上,比如在用UpdateBatch时若使用arFiltered参数就会报错,而事件
    WillChangeRecordset事件(缓存中的改变对底层表生效之前)却怎么都不执行...
    而这上述问题我在网上查了很长时间,却始终没有得到一个正确的答案,难道我真的要转回BDE吗?
    郁闷中......
      

  3.   

    ltBatchOptimistic模式我用的不多。感觉效率要差,控制上很复杂。
    还是用别的模式好。
    帮你up吧
      

  4.   

    TO: rockswj(石头) 
    不用ltBatchOptimistic,不太可能吧,难以想象
      

  5.   

    问题1, 关联2个表的话,最好是用sql语句来对指定表更新。
    问题2, 很少用ado的这些属性,全部用sql语句来实现,快而且容易调试
      

  6.   

    TO :paliang(我是好男儿,男儿当自强!!!) 
    谢谢 paliang(我是好男儿,男儿当自强!!!) 
    说得没有错,但请你仔细的看我的问题,我也想用SQL来对指定的表来进行更新,但是我不知道
    如何在ADO中使用SQL来对指定的表来进行更新,就象在BDEDATASET的OnpdateRecord事件中哪
    么方便!
      

  7.   

    adoquery中是可以在SQL里写语句的如何用ADO连接accsee数据库:
    首先放置一个ADOConnection控件ADOConnection1;
    然后双击该控件,在弹出窗口中选择build..按钮;
    在弹出的“数据连接属性”框中的“提供程序”页选择并双击:“Microsoft Jet 4.0 OLE DB Provider”到连接页;
    选择或输入数据库名称,测试一下就OK了;
    如果有密码,就在“数据连接属性”对话框选择“所有”(*特别注意:不是在“连接”页上去掉“空白”钩填密码的*)页在属性值中输入你的密码。
    LoginPrompt设为false,就不会弹出密码框了。然后放置一个ADOQuery1,将Connection 设为ADOConnection1;
    在SQL属性上点三个点的小按钮,输入:select * from 表名;再放一个DataSource1:
    Dataset属性设为ADOQuery1;再放一个DBGrid1:
    DataSource属性设为DataSource1;选择ADOQuery1,将Active设为True;DBGrid1中是不是显示了数据.更多事例见:http://www.kaer.cn/default.aspx
      

  8.   

    to:jpyc(九品御厨-进军嵌入式) 
    谢谢你给我答复,但是我并不是要怎么连接数据库,
    另外"没缓存机制,直接修改数据库内容"是什么意思难道是不用缓存机制?不太可能吧!
      

  9.   

    可以试试dbExpress,它是跨平台的。
    参考书为李维的高效数据库程序设计。
      

  10.   

    你连接了数据库,就直接写
    adoquery1.close;
    adoquery1.sql.clear;
    adoquery1.sql.add('select * from ...');
    adoquery1.sql.open;// or .execsql;
      

  11.   

    to:paliang(我是好男儿,男儿当自强!!!) 
    麻烦你看懂题再回答,不要在这里占页面!!
      

  12.   

    给你一个用dbExpress的例子:
    http://expert.csdn.net/Expert/topic/2470/2470278.xml?temp=.7433893
    ---在最后