我一直以来都用 sql2000的,最近准备升级到 2008,在 adoQuery 查询方面,碰到了一个挺麻烦的问题一般,我都是用 adoQuery.LockType=ltBatchOptimistic,来确保本地 Post 时不会提交,
同时,由于 adoQuery 在查询时,会自动根据查询的结果判断某个字段是否可写,比如 select ClientCode,ClientName,'X'+ ClientCode as XClientCode from TClient三个字段中,XClientCode 是不可更新的在 2000 下,如果我对这个查询语句改进一下,可以避免此问题
select * from (select top 100000 ClientCode,ClientName,'X'+ ClientCode as XClientCode from TClient) as D也就是把作为子查询,并且子查询中必须使用 top 标记但是,换成 2008 数据库后,使用子查询,adoQuery 还是无法更新到类似字段,这对我的系统影响很大,因为我很多地方都是利用 adoQuery.LockType=ltBatchOptimistic 来 adoquery 当做本地数据集使用的,检索时从数据库取出一条数据插入到 adoQuery ,以实现根据需要检索并更新客户端显示数据的目的,因为有些查询比较复杂,也自然会使用到"计算"的字段很郁闷啊,求助!!!

解决方案 »

  1.   

    有两个有不解的地方:1. 按道理说 ado 控件只是都已经设置 LockType 了,难道还会受服务器端的影响么?
    2. sql2000 和 sql2008 的子查询的处理应该不太一样,难道 sql2008 的子查询效率高些么?
      

  2.   

    sql2008 相对于 2000 有什么很大改进的地方么?我在考虑是否要升级
      

  3.   

    沒有用2008,但我們因一個ERP軟件需要升級到SQL 2005.發現升級到2005後,原在2000下自己寫的使用很好的查詢或儲存過程,在2005運行的速度比原來2000時慢了很多,以至查詢都要改成用臨時表少量取數據.覺得2005不如2000.還比如原用varchar類型保存的中文,在2005的管理器導出就沒辦法解決亂碼問題,而在2000就不存在這個問題.
      

  4.   


    不管用delphi,还是VS2008,SQL2005导出的varchar類型保存都有亂碼现象,同感,转换类型吧!
      

  5.   

    不更新某个字段,可以在delphi中设置为readonly,不要在sql中搞,sql就简单的查询,某些控制可以在delphi中实现。这样你的sql就灵活了。