我建立了一个测试程序使用TAdoquery和Tadotable控件做不同的数据源,发现Tadoquery控件不能更新记录,而Tadotable控件却可以更新,不知道大家那样是不是那样呢?那么如果我真要以Tadoquery控件做数据源我该如何更新我想更新的东西呢?
谢谢!

解决方案 »

  1.   

    我试过了,是可以更新的,如果不行,用代码控制:Tadoquery.Refresh或者把adoquery的Active设置为false在设置为true
      

  2.   

    啊!不是吧!我测试的程序是直接在TDBGrid控件上修改更新的!没错!在程序运行的时候确实是看到TDBGrid控件里面的显示是修改了的,但是发现数据库里面的实际上是没有更新的!不知道你的测试是否在实际的数据库里面更新了的?
      

  3.   

    如果你启用了缓存,必需提交才能更新到数据库,只POST是不行了
      

  4.   

    默认的Tadoquery控件有启用缓存的吗?好像是没有的吧?今天经过了测试!一开始是可以更新的!后来使用了要做的工程再次测试能否修改的时候就不能更新了,然后再次启动测试程序!发现测试程序能更新,只要修改SQL语句使用存储过程搜索视图中的数据的时候发现又不能修改了,后来再次改SQL语句,改成普通的搜索语句,发现程序还是不能更新修改!
      

  5.   

    程序里面没有任何代码!只有开始添加的控件!SQL语句也是在属性里面直接赋值的,修改也是直接在TDBGrid控件里面进行,只要记录位置改变,修改数据就自动更新!这个没错吧?使用的都是默认的设置!就是SQL和connection还有active这些熟悉改到可以使用而已!这些属性我都清楚是什么作用吧?怎么还是错!我晕!
      

  6.   

    问题就在于LockType这里!发现使用存储过程搜索视图的时候,属性会自动调整为:ltBatchOptimistic,这个必须是批更新,普通能更新的是使用了ltOptimistic,这个允许记录单个就更新!因此使用存储过程搜索视图只能使用批更新的!谢谢大家的支持!谢谢!