在sql2000中创建一个基于两个表的一对一的视图
然后在delphi中使用ADODataSet连接视图更新数据时
报如下错误:
    缺少更新或刷新的键列信息
请问是什么原因?

解决方案 »

  1.   

    sql2000不支持直接更新视图中的数据。
    如果你要更新数据,可直接更新基本表。
      

  2.   

    视图是肯定能够更新数据的,只不过对此类视图有些要求而已!
    我用ADOCommand直接执行update对视图也可以更新
    但用ADODataSet将该视图像表一样直接处理就报错
    请问用ADODataSet有没有好的解决方法???
      

  3.   

    这个问题很多人问过了,虽然是针对不同的数据库但是方式是类似的。
    首先,视图的修改是有条件的,不是所有的视图都能修改。其次,ADO虽然能修改一些视图,但是是非常有限的,具体我的我不知道,BDE的知道些。BDE在视图的更新方面提供了TUpdateSQL控件,这个控件理论上可以修改任何你想修改的视图。
    ADO和其后的DBX没提供这个控件,但是VCL却提供了另外的方法。ADOQuery -> DataSetProvider -> ClientDataSet利用Clientdataset来修改数据,
    DataSetProvider 提供了一个事件 BeforeUpdateRecord,你看看他的help,你可以在里面写自己的SQL来实现TUpdateSQL的功能,用它来修改视图。