ro多层的事务处理失败的困惑
现象:
用
'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多层的事务处理失败的困惑的更多相关文章
- Java事务处理全解析(二)——失败的案例
在本系列的上一篇文章中,我们讲到了Java事务处理的基本问题,并且讲到了Service层和DAO层,在本篇文章中,我们将以BankService为例学习一个事务处理失败的案例. BankService ...
- Java事务处理全解析(四)—— 成功的案例(自己实现一个线程安全的TransactionManager)
在本系列的上一篇文章中我们讲到,要实现在同一个事务中使用相同的Connection对象,我们可以通过传递Connection对象的方式达到共享的目的,但是这种做法是丑陋的.在本篇文章中,我们将引入另外 ...
- Java事务处理全解析(三)——丑陋的案例
在本系列的上一篇文章中,我们看到了一个典型的事务处理失败的案例,其主要原因在于,service层和各个DAO所使用的Connection是不一样的,而JDBC中事务处理的作用对象正是Connectio ...
- Java事务处理全解析(一)——Java事务处理的基本问题
Java中的事务处理有多简单?在使用EJB时,事务在我们几乎察觉不到的情况下发挥着作用:而在使用Spring时,也只需要配置一个TransactionManager,然后在需要事务的方法上加上Tran ...
- mount失败
又一次遇到mount失败,提示文件系统类型错误.选项错误.有坏超级块等.之前是在ubuntu 14.04 lts desktop上挂载windows下共享文件夹遇到的.这次具体的环境如下:CentOS ...
- Spring事务处理探究
开发环境: OS:windows XP Web Server: jakarta-tomcat-5.0.28 DataBase Server: MS SQL Server 200 ...
- MYSQL 基本SQL语句
复制表结构 CREATE TABLE 新表 SELECT * FROM 旧表 where 1=2 复制表结构和数据CREATE TABLE 新表 SELECT * FROM 旧表 查询重复数据: se ...
- Python 3.x 连接数据库(pymysql 方式)
==================pymysql=================== 由于 MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 ...
- 个人查阅资料-Sql语句
SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRAN ...
随机推荐
- 杂项:ASP.NET Web API
ylbtech-杂项:ASP.NET Web API ASP.NET Web API 是一种框架,用于轻松构建可以访问多种客户端(包括浏览器和移动设备)的 HTTP 服务. ASP.NET Web A ...
- c++ string 解析ip
比如输入是192.168.80.12-15,解析成192.168.80.12.192.168.80.13.192.168.80.14.192.168.80.15. #include <iostr ...
- [Apple开发者帐户帮助]五、管理标识符(5)创建一个iCloud容器
您必须拥有一个或多个iCloud容器才能启用iCloud. 所需角色:帐户持有人或管理员. 在“ 证书”,“标识符和配置文件”中,从左侧的弹出菜单中选择操作系统. 在“标识符”下,选择“iCloud容 ...
- selenium3 + python - table定位
前言 在web页面中经常会遇到table表格,特别是后台操作页面比较常见.本篇详细讲解table表格如何定位. 一.认识table 1.首先看下table长什么样,如下图,这种网状表格的都是table ...
- cors解决跨越问题
转载于http://www.cnblogs.com/jiangwz/p/8142740.html Cross-Origin Resource Sharing(CORS)跨来源资源共享是一份浏览器技术的 ...
- EasyUI 编写实体类树状选择器
<%@ page contentType="text/html;charset=UTF-8"%> <%@ include file="/WEB-INF/ ...
- 构造函数中this,return的详解
function Foo(name,age){ this.name=name; this.age=age; } var foo=new Foo("Tom",14); foo.nam ...
- PANDAS 数据分析初学者教程
Pandas 初学者教程 2018-05-19 六尺巷人 对于数据科学家,无论是数据分析还是数据挖掘来说,Pandas是一个非常重要的Python包.它不仅提供了很多方法,使得数据处理非常 ...
- SecureCRT连接Ubuntu报The remote system refused the connection.解决方案
使用SecureCRT连接到远程Ubuntu,连接失败报The remote system refused the connection. 进入Ubuntu系统,终端中敲入以下命令: ps -ef|g ...
- VMWare虚拟机移动
1. 背景: 虚拟机:VM3 原安装路径:C:\Users\Administrator\Documents\Virtual Machines 移动到目标路径:D:\Virtual Machines ...