现象:

'select a.WOD_No, a.WOM_FileLength,a.WOM_YanBuLength as WOM_Length,  a.My_YDP,a.My_YDPL,a.My_JDMS,a.My_JDL,a.My_ZJDL,a.My_JDYY   from WorkOrder_Detail a where isnull(a.WorkOrder_SFXZKC,0)=0 and   a.WOM_YanBuDatetime between '2014-04-11 17:38:29' and '2014-04-11 17:40:29''

在客户端用上面的语句取得数据,然后修改数据,通过RO的web service提交数据失败;

'select *  from WorkOrder_Detail a where isnull(a.WorkOrder_SFXZKC,0)=0 and   a.WOM_YanBuDatetime between '-- ::' and '-- ::'‘

在客户端用上面的语句取得数据,然后修改数据,通过RO的web service提交数据成功。

下面是保存提交数据code:

  Deltas := DeltaArray.Create;
try
if cds_MasterData_calc.ChangeCount > then
begin
delta := Deltas.Add;
tmp_sql := cds_MasterData_calc.CommandText;
delta.ASQL := tmp_sql;
delta.Delta := BinaryFromVariant(cds_MasterData_calc.Delta);
end;
if Deltas.Count> then
begin
with DM.MyDM do
begin
svc := CoDBCommonService.Create(ROBinMessage,ROWinInetHTTPChannel);
if svc.ApplyUpdates(Deltas) then
begin
if cds_MasterData_calc.ChangeCount > then cds_MasterData_calc.MergeChangeLog;
ShowMessage(MSG_Saver_ok);
end
else
ShowMessage(MSG_Saver_err);
end;
end;
finally
Deltas.Free;
end;

结果说明(貌似):

与后台Tdatesetprovider的更新方式有关。这里默认的UpdateMode=upWhereAll,是最苛刻的。估计是当所选数据不能满足upwhereall是出现保存失败。事情得过且过。没精力时间去测试探究出正在原因。

如果你知道请告诉我。

==================

看跟踪就明白Tdatesetprovider是如何干的,就明白为什么会有写失败的原因:

update [WorkOrder_Detail]  set
[WOD_No] = :1,
[WOM_FileLength] = :2
where
[WOD_No] = :3 and
[WOM_No] = :4 and
[WOM_ThisBarcode] = :5 and
[WOM_JH] = :6 and
[WOM_PH] = :7 and
[WOM_FileLength] = :8 and
[WOM_Length] = :9 and
[WOM_XiaJiDatetime] = :10 and
[WOM_ParentNo] = :11 and
[WOM_SFMJ] = :12 and
[WOM_Grade] is null and
[CD_Name] is null and
[PL_Code] is null and
[PL_Name] = :13 and
[WOD_KCR] = :14 and
[WOD_PLName] = :15 and
[WOD_SFMX] is null and
[WOD_ShortMess] is null and
[WOD_ShortMessTime] is null and
[WRD_Sender] is null and
[WKR_WFXML] = :16 and
[WOM_YanBuLength] = :17 and
[WOM_YanBuDatetime] = :18 and
[CDC_workgroup] = :19 and
[WOM_HX] is null and
[WOM_JS] is null and
[WOM_WS] is null and
[WorkOrder_SFXZKC] is null and
[My_YDP] is null and
[My_YDPL] is null and
[My_JDMS] is null and
[My_JDL] is null and
[My_ZJDL] is null and
[My_JDYY] is null
:1(String[],IN)='A99CE994808B49699AAAE76F78F282BA'
:2(Float,IN)=210
:3(String[],IN)='16E565AD41FE4FDAAD9CD81DA061D791'
:4(String[],IN)='00AB736331D848FF95F296AE78560E39'
:5(String[],IN)=''
:6(String[],IN)='A919'
:7(String[],IN)=''
:8(Float,IN)=211
:9(Float,IN)=101.07
:10(DateTime,IN)=2014-02-21 13:02:29
:11(String[],IN)='-1'
:12(Boolean,IN)=True
:13(String[],IN)='5-打包'
:14(String[],IN)='余冬琴'
:15(String[],IN)='1-验布'
:16(String[],IN)='单志连'
:17(Float,IN)=101.07
:18(DateTime,IN)=2014-02-21 14:38:46
:19(String[],IN)='[ {emp_bm:'1121',name:'卞玉琴'}, {emp_bm:'1122',name:'余冬琴'}]'
 

ro多层的事务处理失败的困惑的更多相关文章

  1. Java事务处理全解析(二)——失败的案例

    在本系列的上一篇文章中,我们讲到了Java事务处理的基本问题,并且讲到了Service层和DAO层,在本篇文章中,我们将以BankService为例学习一个事务处理失败的案例. BankService ...

  2. Java事务处理全解析(四)—— 成功的案例(自己实现一个线程安全的TransactionManager)

    在本系列的上一篇文章中我们讲到,要实现在同一个事务中使用相同的Connection对象,我们可以通过传递Connection对象的方式达到共享的目的,但是这种做法是丑陋的.在本篇文章中,我们将引入另外 ...

  3. Java事务处理全解析(三)——丑陋的案例

    在本系列的上一篇文章中,我们看到了一个典型的事务处理失败的案例,其主要原因在于,service层和各个DAO所使用的Connection是不一样的,而JDBC中事务处理的作用对象正是Connectio ...

  4. Java事务处理全解析(一)——Java事务处理的基本问题

    Java中的事务处理有多简单?在使用EJB时,事务在我们几乎察觉不到的情况下发挥着作用:而在使用Spring时,也只需要配置一个TransactionManager,然后在需要事务的方法上加上Tran ...

  5. mount失败

    又一次遇到mount失败,提示文件系统类型错误.选项错误.有坏超级块等.之前是在ubuntu 14.04 lts desktop上挂载windows下共享文件夹遇到的.这次具体的环境如下:CentOS ...

  6. Spring事务处理探究

    开发环境: OS:windows XP       Web Server: jakarta-tomcat-5.0.28       DataBase Server: MS SQL Server 200 ...

  7. MYSQL 基本SQL语句

    复制表结构 CREATE TABLE 新表 SELECT * FROM 旧表 where 1=2 复制表结构和数据CREATE TABLE 新表 SELECT * FROM 旧表 查询重复数据: se ...

  8. Python 3.x 连接数据库(pymysql 方式)

    ==================pymysql=================== 由于 MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 ...

  9. 个人查阅资料-Sql语句

    SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRAN ...

随机推荐

  1. js面试题--------JS中数字和字符,布尔类型相加相减问题

    JS中数字和字符相加相减问题 <html lang="en"> <head> <meta charset="utf-8" /> ...

  2. C++对象内存布局 (二)

    在上一篇文章中讨论了C++单一一般继承的对象内存布局http://www.cnblogs.com/uangyy/p/4621561.html 接下来继续讨论第二种情况: 2.单一的虚拟继承:有成员变量 ...

  3. android recovery 主系统代码分析【转】

    本文转载自:http://blog.csdn.net/andyhuabing/article/details/9248713 阅读完上一篇文章: http://blog.csdn.net/andyhu ...

  4. Android对话框与Activity共存时的异常

    异常提示信息 01-01 18:30:38.630: E/WindowManager(14537): Activity com.jack.outstock.activity.ManageCustomA ...

  5. PCB MS SQL 将字符串分割为表变量(表值函数)

    Create FUNCTION [dbo].[SplitTable]( @s varchar(max), --待分拆的字符串 ) --数据分隔符 ),), col varchar(max)) --建立 ...

  6. 浅谈JavaScript中的cookie

    什么是cookie?简单来说,cookie就是网站服务器存放在我们计算机上的一小段(一般大小不超过4KB)用来识别和记录用户的个人信息的文本.HTTP协议是一种没有“状态”的传输协议,也就是说,服务器 ...

  7. C99C新增内容

    继上一篇复合文字之后,今天我们继续谈一谈C99C的新特性. C99标准是继C89标准之后的第二个C语言官方标准,于1999年12月1日正式发布,其中对数据类型(增加了对_Bool),关键字(增加了in ...

  8. C#接入第三方支付一些小问题

    13年第一次接入支付宝的时候,支付宝的api还不是很好用,费了些劲才完成,本月再次接入的时候发现已经很好用了,接入过程非常顺畅,只出现了一个小问题,我的金额默认是保留了4位小数,支付宝api只接受最多 ...

  9. Laravel5.1学习笔记3 HTTP中间件

    HTTP 中间件 简介 建立中间件 注册中间件 可终止中间件 简介 HTTP 中间件提供一个方便的机制来过滤进入应用程序的 HTTP 请求,例如,Laravel 默认包含了一个中间件来检验用户身份验证 ...

  10. Css打造一个简单的静态七巧板

    偶然在微博上看到用css写一个七巧板,正好也有一些源代码,于是就试着敲了敲. 主要是利用了css3的transform,实现平移,旋转,变形,直接用看到的代码敲出来之后有些问题,因为宽度上下面绿色的三 ...