急救﹕三層數據更新問題 我用發一個sql語句到sql server數據庫( 'UPDATE XXX SET XXX=XXX' )后﹐被更新的數據再被更改時就發生'找不到記錄或記錄已被更改'的錯誤﹐但如果用數據集更新(就是dataset.fieldbyname('xxx').asstring:=xxx)就沒問題?怪!急﹗ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的DataSetProvider设置好没有?要设成poallowcommandtext才可以使用SQL语句的。 我是在中間層用sql語句更新一個記錄﹐完畢且無錯后﹐又客戶端用數據集更新這個數據﹐就發生錯誤﹐而且我都重起機子后﹐這個記錄被編輯更新時還會錯 数据更新后,要手工刷新客户端的数据,比如你使用了UPDATE语句后,你客户端显示的数据需要重新执行一次SELECT,这样才能不出错。所以你不如传SQL语句到服务器端,由服务器端执行更新,客户端就自己写语句的手工更新显示(记住,不是重新SELECT),这样的执行效率会非常高,而且安全。 肯定是你的DataSetProvider没有设置好 重新执行一次SELECT過了﹐還是出錯﹐另外SQL語句是在中間層生成的﹐從客戶端接受几個參數 将DataSetProvider的resolvetodataset设为false,不允许从客户端直接更新数据。从错误提示来看,你这种情况应该是select出来的数据集包含有两条完全一样的记录。应该SELECT时包含一条唯一的索引字段。这只是我的猜测,如果错了,我就不知道是什么原因了。我从来没遇到过这种情况。 問題基本解決﹐原因﹕在sql語句中用getdate() 給一個datetime(8)的字段賦值﹐得到2003-07-15 15:44:09.593 這樣一個值﹐而很可能midas重數據庫取數據時會把最后三個數截為0﹐2003-07-15 15:44:09.000 ﹐當要更新回數據庫時二值當然不等﹐就找不到原來記錄了﹐所以永遠無法更新。 lzf1010,你可以試試﹐有什么好辦法講講 呵呵,我不会遇到你所说的情况,因为我从来不用日期类型的字段的。日期时间我都是使用varchar类型,用formatdatetime函数将格式化后的日期存入数据库,取出来后用strtodatetime来转换回日期型,或者干脆就不做转换 'UPDATE XXX SET XXX=XXX' 执行以后,由于没有where子句所以数据的所有记录都相同,所以以后再使用SQL语句进行更新数据时,DBMS无法知道你要更改哪一条记录,所以出错,故以后,可要给数据库加主键啊! 怎么实现汉字字符串与ascll的互转操作? 关于在仓管软件里面增加扫描底单的功能. 請教一個DBedit簡單問題 帮忙看看SQL语句为什么操作数据库成功以后出现错误,在线等待 Wise打包程序,能不能让程序在安装的时候检测另一个程序是否已经安装? Timage如何实现pan功能? 宽行打印如何设置? 在D6的DesignEditors.pas文件中用到了Proxies这个库文件,但是D6的所有目录下都没有这个库文件啊! delphi里clientsocket控件的问题!急!急!急! 怎样合并重复的数据库记录? 如何在局域网内广播一个消息 一个关于文件的问题,请高手帮帮我吧。
所以你不如传SQL语句到服务器端,由服务器端执行更新,客户端就自己写语句的手工更新显示(记住,不是重新SELECT),这样的执行效率会非常高,而且安全。
从错误提示来看,你这种情况应该是select出来的数据集包含有两条完全一样的记录。应该SELECT时包含一条唯一的索引字段。
这只是我的猜测,如果错了,我就不知道是什么原因了。我从来没遇到过这种情况。
2003-07-15 15:44:09.593 這樣一個值﹐而很可能midas重數據庫取數據時會把最后三個數截為0﹐
2003-07-15 15:44:09.000 ﹐當要更新回數據庫時二值當然不等﹐就找不到原來記錄了﹐所以永遠無法更新。 lzf1010,你可以試試﹐有什么好辦法講講