全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2118
推到 Plurk!
推到 Facebook!

为什么TClientDateSet更新数据库不成功???

尚未結案
plmm25
一般會員


發表:15
回覆:6
積分:4
註冊:2004-04-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-16 02:35:57 IP:220.184.xxx.xxx 未訂閱
上次那个存储过程的问题已经解决了,多谢大大们~现在又有新问题,我用SQL2000做后台数据库,中间服务器用一个未指定SQL的TADOQuery,DataSetProvider的Option里开了poAllowCommandText,提他都是默认,然后我在TClientDateSet里设置了CommandText,比如'select * from user where ID=12345',用Label都可以显示出这个用户的信息,但我想更改比如名字密码我用: TClientDateSet.Edit; TClientDateSet['名字']:='mike'; TClientDateSet['密码']:='abc'; TClientDateSet.Post; TClientDateSet.ApplyUpdate(0); 但是很不幸福我去SQL2000里查了,总是更改不成功,存储过程和显示都可以正常运行,但更新就是不成功,奇怪死了,我也没有设置什么Readonly的属性啊?求救各位大大,可能是什么原因造成的~~~~~~~~~谢谢
plmm25
一般會員


發表:15
回覆:6
積分:4
註冊:2004-04-20

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-16 03:39:26 IP:220.184.xxx.xxx 未訂閱
我刚才查看了一下其他帖子,发现有这个问题的不是一个两个,我想应该就是因为表里有Tdatatime这个列作怪吧~我也有这个项目,我改用其他表没有Tdatatime这个列,更新都是成功的,看到jieshu大大在另外的帖子里说是要把这个列截到秒,我不太懂这个怎么实现,我并未修改Tdatatime这个列,而是改了个STRING的列,一样不能成功更新,错误SHOW出来是record changed by another user,请大大说的详细点,最好有代码,不然这个表我改成存储过程试试
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-16 08:35:51 IP:61.70.xxx.xxx 未訂閱
引言: 我刚才查看了一下其他帖子,发现有这个问题的不是一个两个,我想应该就是因为表里有Tdatatime这个列作怪吧~我也有这个项目,我改用其他表没有Tdatatime这个列,更新都是成功的,看到jieshu大大在另外的帖子里说是要把这个列截到秒,我不太懂这个怎么实现,我并未修改Tdatatime这个列,而是改了个STRING的列,一样不能成功更新,错误SHOW出来是record changed by another user,请大大说的详细点,最好有代码,不然这个表我改成存储过程试试
沒有設定的更新都是WhereAll,所以會以全部欄作比對,結果讀出比資料庫少,就會有此問題,已存入的資料要下SQL去更新,以後給日期欄位值要用如下: StrToDateTime(FormatDateTime('yyyy/mm/dd hh:nn:ss', Now)); SQL Server可用Convert轉換成字串,攫取前幾碼再用Cast轉DateTime更新。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.coss.com.tw/jieshu/
發表人 - jieshu 於 2004/05/16 08:48:36
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
plmm25
一般會員


發表:15
回覆:6
積分:4
註冊:2004-04-20

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-16 11:25:09 IP:220.184.xxx.xxx 未訂閱
问题是我的SQL 2000里那个TDATATIME是在存储过程里存入的,存放的是用户注册的时间,并不是在DELPHI里存入的,只要运行这个存储过程,就会自动把SQL 服务器的时间记录进去,SQL代码: declare @RegTime datetime @Regtime=GetDate() insert user (注册时间) values (@Regtime) 我在DELPHI里只是有个用户信息的栏目可以把这个注册时间显示出来,然后还有密码,名字等能修改的我显示在Tedit里,要修改只是修改能修改的,并没有在DELPHI里写时间进去,但为什么这么一个读出来,再写回去,并没有改写Tdatetime项目,还是不能成功啊~郁闷了,望大大指点
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-05-16 12:52:47 IP:61.70.xxx.xxx 未訂閱
引言: 问题是我的SQL 2000里那个TDATATIME是在存储过程里存入的,存放的是用户注册的时间,并不是在DELPHI里存入的,只要运行这个存储过程,就会自动把SQL 服务器的时间记录进去,SQL代码: declare @RegTime datetime @Regtime=GetDate() insert user (注册时间) values (@Regtime)
一樣意思,將GetDate()重新用Convert和Cast將微秒去掉。
引言: 我在DELPHI里只是有个用户信息的栏目可以把这个注册时间显示出来,然后还有密码,名字等能修改的我显示在Tedit里,要修改只是修改能修改的,并没有在DELPHI里写时间进去,但为什么这么一个读出来,再写回去,并没有改写Tdatetime项目,还是不能成功啊~郁闷了,望大大指点
都說過了,沒有設定的更新都是WhereAll,所以你可以將DataSetProvider.UpdateMode改成upWhereKeyOnly看看,或是DateTime的欄位的ProviderFlag的pfInUpdate設成False看看。
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.coss.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
Ktop_Robot
站務副站長


發表:0
回覆:3511
積分:0
註冊:2007-04-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-04-30 13:44:54 IP:000.000.xxx.xxx 未訂閱
提問者您好:


以上回應是否已得到滿意的答覆?


若已得到滿意的答覆,請在一週內結案,否則請在一週內回覆還有什麼未盡事宜,不然,
將由版主(尚無版主之區域將由副站長或站長)自由心證,選擇較合適之解答予以結案處理,
被選上之答題者同樣會有加分獎勵同時發問者將受到扣 1 分的處分。不便之處,請見諒。


有問有答有結案,才能有良性的互動,良好的討論環境需要大家共同維護,感謝您的配合。

------
我是機器人,我不接受簡訊.
系統時間:2024-04-20 7:18:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!