TClientDataSet.ApplyUpdates()带来的困惑

Hwin000 2003-12-17 03:36:55
我在用TClientDataSet.ApplyUpdates()更新数据时,总是更新失败!
失败原因我找到了,但不知道如何解决,请大家帮忙!
我跟踪一下它产生的SQL,发现原因出在它把日期字段格式成了
'12 17 2003 2:03PM'的形式加入
where条件中,而数据库(SQL Server 2000)中原始数据是
"2003-12-17 14:03:50.000",这样便找不到原始对应记录,以致修改数据失败!!
请大家帮忙,看看如何能够解决!有没有什么环境变量参数可以设置?谢谢!
...全文
12 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hwin000 2003-12-18
系统时间的格式我试过了可是怎么改都是一样!
回复
quansui 2003-12-17
更改一下系统时间的格式,有时也可以帮你解决这个问题。
回复
Hwin000 2003-12-17
我的意思是这样的:
这个SQL是TClientDatSet.ApplyUpdates时自动产生的!
我在更新数据时仅调用了TClientDatSet.ApplyUpdates方法!
我是看SQL Server 的profiler.exe工具跟踪出来的SQL的
跟踪到的原SQL为:
exec sp_executesql N'update tb_GG3010 set
SJMC = @P1,
JYNR = @P2
where
BH is null and
SJMC = @P3 and
JYNR = @P4 and
JYSJ = @P5 and
JLSJ is null and
JYRBH = @P6 and
JYRXM = @P7 and
JSBH = @P8 and
JSMC = @P9 and
BZXX = @P10 and
JSXZ = @P11 and
SYXZ is null
', N'@P1 varchar(500),@P2 varchar(2000),@P3 varchar(500),@P4 varchar(2000),@P5 datetime,@P6 int,@P7 varchar(30),@P8 int,@P9 varchar(30),@P10 varchar(300),@P11 int', 'XXX', 'XXX', '', '', '12 17 2003 5:27PM', 3, 'XX', 1, 'XX', '', 10

回复
bolivia54 2003-12-17
在where中加入時間條件的時候。用FormatDate把日期格式化成為2003-12-17.
比如:FormateDate('yyyy-mm-dd ',DateTime).這個是外部輸入時間進行查詢的做法。
如果你要求SQL中的時間字段,把日期用(year,month,day)拆分然後合並。具體的做法看sql
的幫助。你的問題也沒有提清楚。如果我 的解決方法不是你說的意思,那麼你把要求說清楚。

回复
发动态
发帖子
网络通信/分布式开发
创建于2007-08-02

1565

社区成员

Delphi 网络通信/分布式开发
申请成为版主
社区公告
暂无公告