我在用TClientDataSet.ApplyUpdates()更新数据时,总是更新失败!
失败原因我找到了,但不知道如何解决,请大家帮忙!
我跟踪一下它产生的SQL,发现原因出在它把日期字段格式成了
'12 17 2003  2:03PM'的形式加入
where条件中,而数据库(SQL Server 2000)中原始数据是
"2003-12-17 14:03:50.000",这样便找不到原始对应记录,以致修改数据失败!!
请大家帮忙,看看如何能够解决!有没有什么环境变量参数可以设置?谢谢!

解决方案 »

  1.   

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

  2.   

    我的意思是这样的:
    这个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