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 ...
随机推荐
- nginx+tomcat反复请求
好久不写技术文章了,越发的认为单纯的讲技术没啥意思.怪不得知乎越来越火.由于大家都喜欢看故事.不喜欢硬生生的技术文章.笔者今天就来就给大家讲故事:) 近期站点压力突然增大,把带宽都占满了,訪问网页发现 ...
- Extjs grid 某列点击弹窗
{ header : "单号", tooltip : '单号', dataIndex : 'transportCode', width : 130, sortable : true ...
- Window.open()打开一个窗体不被拦截
Window.open()打开一个窗体不被拦截 在DataGrid中建一个模板列,在模板列中放一个客户端的Button,或者直接写你要的字句,然后用<a href>连接例:< ...
- DMA(direct memory access)直接内存访问
DMA(Direct Memory Access),这里的 memory,指的是计算机的内存,自然与外存(storage)相对.这里的关键词在 Direct (直接),与传统的相对低效的,需要通过 C ...
- [SDOI 2013] 直径
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3124 [算法] 树的直径 [代码] #include<bits/stdc++. ...
- 海量数据统计topK
有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M.返回频数最高的100个词. 思路: 把这1G的数据一次性全部读入内存是不可能了,可以每次读一行,然后将该词存到 ...
- Django中关于MySQL的bug总结
bug one: You are trying to add a non-nullable field 'height' to person without a default; we can't d ...
- dubbo之静态服务
有时候希望人工管理服务提供者的上线和下线,此时需将注册中心标识为非动态管理模式 <dubbo:registry address="10.20.141.150:9090" dy ...
- 推荐几个好用的windows软件
好久没上了,= = 之前用了一段MAC,感觉好用的地方就是 spotlight和触摸板,哈哈 然后在用回windows之后就找了一下,我之前有用Launchy这个软件,但是他是用来启动程序的,当然你也 ...
- JavaOO知识点小结一
Java语言的特点是什么?简单 面向对象 跨平台 多线程 健壮性安全性 垃圾回收机制如何编译和执行java文件?产生帮助文档用什么命令?编译: javac 文件名执行: java 类名产生帮助文档 j ...