我用發一個sql語句到sql server數據庫( 'UPDATE XXX SET XXX=XXX' )后﹐被更新的數據再被更改時就發生'找不到記錄或記錄已被更改'的錯誤﹐但如果用數據集更新(就是dataset.fieldbyname('xxx').asstring:=xxx)就沒問題?怪!急﹗

解决方案 »

  1.   

    你的DataSetProvider设置好没有?要设成poallowcommandtext才可以使用SQL语句的。
      

  2.   

    我是在中間層用sql語句更新一個記錄﹐完畢且無錯后﹐又客戶端用數據集更新這個數據﹐就發生錯誤﹐而且我都重起機子后﹐這個記錄被編輯更新時還會錯
      

  3.   

    数据更新后,要手工刷新客户端的数据,比如你使用了UPDATE语句后,你客户端显示的数据需要重新执行一次SELECT,这样才能不出错。
    所以你不如传SQL语句到服务器端,由服务器端执行更新,客户端就自己写语句的手工更新显示(记住,不是重新SELECT),这样的执行效率会非常高,而且安全。
      

  4.   

    肯定是你的DataSetProvider没有设置好
      

  5.   

    重新执行一次SELECT過了﹐還是出錯﹐另外SQL語句是在中間層生成的﹐從客戶端接受几個參數
      

  6.   

    将DataSetProvider的resolvetodataset设为false,不允许从客户端直接更新数据。
    从错误提示来看,你这种情况应该是select出来的数据集包含有两条完全一样的记录。应该SELECT时包含一条唯一的索引字段。
    这只是我的猜测,如果错了,我就不知道是什么原因了。我从来没遇到过这种情况。
      

  7.   

    問題基本解決﹐原因﹕在sql語句中用getdate() 給一個datetime(8)的字段賦值﹐得到
    2003-07-15 15:44:09.593 這樣一個值﹐而很可能midas重數據庫取數據時會把最后三個數截為0﹐
    2003-07-15 15:44:09.000 ﹐當要更新回數據庫時二值當然不等﹐就找不到原來記錄了﹐所以永遠無法更新。 lzf1010,你可以試試﹐有什么好辦法講講
      

  8.   

    呵呵,我不会遇到你所说的情况,因为我从来不用日期类型的字段的。日期时间我都是使用varchar类型,用formatdatetime函数将格式化后的日期存入数据库,取出来后用strtodatetime来转换回日期型,或者干脆就不做转换
      

  9.   

    'UPDATE XXX SET XXX=XXX' 执行以后,由于没有where子句所以数据的所有记录都相同,所以以后再使用SQL语句进行更新数据时,DBMS无法知道你要更改哪一条记录,所以出错,故以后,可要给数据库加主键啊!