为什么TClientDateSet更新数据库不成功??? |
尚未結案
|
plmm25
一般會員 發表:15 回覆:6 積分:4 註冊:2004-04-20 發送簡訊給我 |
上次那个存储过程的问题已经解决了,多谢大大们~现在又有新问题,我用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 發送簡訊給我 |
我刚才查看了一下其他帖子,发现有这个问题的不是一个两个,我想应该就是因为表里有Tdatatime这个列作怪吧~我也有这个项目,我改用其他表没有Tdatatime这个列,更新都是成功的,看到jieshu大大在另外的帖子里说是要把这个列截到秒,我不太懂这个怎么实现,我并未修改Tdatatime这个列,而是改了个STRING的列,一样不能成功更新,错误SHOW出来是record changed by another user,请大大说的详细点,最好有代码,不然这个表我改成存储过程试试
|
||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 我刚才查看了一下其他帖子,发现有这个问题的不是一个两个,我想应该就是因为表里有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.taconet.com.tw/jieshu/ |
||
plmm25
一般會員 發表:15 回覆:6 積分:4 註冊:2004-04-20 發送簡訊給我 |
问题是我的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 發送簡訊給我 |
引言: 问题是我的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.taconet.com.tw/jieshu/ |
||
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |