遇到个奇怪的问题,同时开启本地和远程两个事务,远程事务是sql2000没问题,是sql2008的不报错,但是写不上数据
遇到个奇怪的问题,同时开启本地和远程两个事务,远程事务是sql2000没问题,是sql2008的不报错,但是写不上数据。
倒腾了4、5天,找到最终的解决办法:直接调用AdoConnection.execute(sq脚本),看来AdoQuery调用AdoConnection的还是有兼容性问题。
代码如下:
Function TDM_Base.PassMarkBill(AQuery:TAdoQuery; lTrans:Boolean=True;
sID:String=''; sMachineID:String=''; sUserName:String='';
nAddinRate:Real=1; lAllowNegative:Boolean=True; lUpdateLastDate:Boolean=True):Boolean;
Var qry, qryR:TAdoQuery;
n:Real; lT:Boolean;
sErrMsg, sSql:string;
Begin
Result:=False; qryR:=nil;
Qry:=AQuery;
if not assigned(qry) then qry:=qry_R;
qryR:=getNewAdoQuery(qry.connection); //getNewAdoQuery(qry.connection);
sErrMsg:='';
With QryR do
Try
Close;
lT:=false;
if lTrans and (not connection.inTransaction) then begin
connection.BeginTrans;
lT:=true;
end;
//**************************调用执行sql存储过程***********************//
//20160727特别说明:用AdoQuery直接执行,在连接远程的事务中,会出现莫名其妙的错误
//下面屏蔽掉了的代码,执行完了不报错,但是在Frm_SalePos.SaveData中,
//调用iBaseBiz.moveMarkBill时,然后调用这里,会导致莫名其妙的错误,
//程序不报错,但是服务器那头没数据,事务自己撤销了
//********************************************************************//
sql.text:='declare @n real ';
sql.add('exec @n=passMarkBill '+quotedStr(sID)+', '+quotedStr(sUserName)+', '+
floatToStr(nAddinRate)+', '+iif(lAllowNegative,'1','0')+', '+iif(lUpdateLastDate,'1','0')+' ');
//sql.add(' exec @n=passMarkBill :sID, :sUser, :nRate, :lAllowNegative, :lUpdateLastDate ');
sql.add('select @n as nResult ');
//parameters.ParamValues['sID']:=sID;
//parameters.ParamValues['sUser']:=sUserName;
//parameters.ParamValues['nRate']:=nAddinRate;
//parameters.ParamValues['lAllowNegative']:=lAllowNegative;
//parameters.ParamValues['lUpdateLastDate']:=lUpdateLastDate;
//open; //execSql
sSql:=sql.text;
connection.Execute(sSql); //******用最底层的连接执行没问题********//
//n:=fields[0].Value;
//if n<>0 then raise exception.Create('审核出错!返回值非零。'+floatToStr(n));
//写日志
writeSysLog(qryR, sID, sID+'审核积分单据', self.name+'.PassMarkBill');
//
if lT then connection.CommitTrans;
Result:=True;
Except
On x:Exception do begin
if lT then connection.RollbackTrans;
sErrMsg:='[PassMarkBill]审核积分单'+sID+'出错!'#13+x.message;
End;
End;
if assigned(qryR) then freeAndNil(qryR);
if sErrMsg<>'' then Raise Exception.Create(sErrMsg);
End;
遇到个奇怪的问题,同时开启本地和远程两个事务,远程事务是sql2000没问题,是sql2008的不报错,但是写不上数据的更多相关文章
- 今天遇到奇怪的事:SVN本地代码的标记突然没了,Clean up也报错
今天遇到奇怪的事:SVN本地代码的标记突然没了.Clean up也报错 脑子一想这样的情况,能够先把原来的文件夹改一个名字.又一次把代码check out下来,再合并提交更新,但这样也太LOW了吧 上 ...
- 解决Maven依赖本地仓库eclipse报错的问题
一.应用场景 有时候项目报红色的感叹号错误也是由于项目中没有导入相关jar报导致报错 为了使用maven强大的包依赖管理和项目管理功能,故在项目中使用maven2作为项目建构工具. 但是我的项目在内网 ...
- 开启本地MySql数据库远程连接
解决MySQL不允许从远程访问的方法 开启 MySQL 的远程登陆帐号有两大步: 1.确定服务器上的防火墙没有阻止 3306 端口. MySQL 默认的端口是 3306 ,需要确定防火墙没有阻止 33 ...
- 【vue】http-server开启本地服务
在写前端页面中,经常会在浏览器运行HTML页面,从本地文件夹中直接打开的一般都是file协议,当代码中存在http或https的链接时,HTML页面就无法正常打开,为了解决这种情况,需要在在本地开启一 ...
- webpack开启本地服务器与热更新
第一个webpack本地服务 webpack本地服务相关的一些操作指令与应用 一.第一个webpack本地服务 //工作区间 src//文件夹 index.js//入口文件 index.css//测试 ...
- 在vue项目中添加一个html页面,开启本地服务器
在vue项目里新增一个不需要登录的页面,那么我只能新增一个html页面了,不经过路由,直接在浏览器输入路径打开,那么就需要用到本地服务器, 1.vue里面的html页面最好放过在public文件夹里面 ...
- 本地数据库(SQL Server)远程连接服务器端服务器
本地数据库(SQL Server 2012) 连接外网服务器的数据库,外网的服务器端需要做如下配置: 1. 首先是要打开 数据的配置管理工具 2. 配置相关的客户端协议,开启TCP/IP 3. 数据库 ...
- ftp put本地文件至ubuntu服务器报错
起因:我想把本地下载的安装包上传至服务器. 由于Mac的ftp图形化客户端还没找着合适的,就想着用命令也是一样的. 但是又进坑了. 下载能够正常运行: ftp> get 2.jpg /Users ...
- kindeditor本地上传报错,只限初学者
困扰了我三天的问题,话说百度真的害死人啊,百度上有说路劲错了的,有说包没导的,有说还要改plugins里面的文件的!其实这个都不用动,也有说服务器问题的,还有说缓存的,还有说是ecplise的,反正我 ...
随机推荐
- 我的Android 4 学习系列之使用 Internet 资源
目录 连接Internet资源 分析XML资源 使用Download Manager下载文件 查询Download manager 使用Account Manager 对 Google App Eng ...
- centOS6 php 编 imap 模
php 编 c-client imap 客户.下载 http://www.washington.edu/imap/mirrors.html 第一步,编 c-client 官方文档说究竟有点坑,编译报错 ...
- .net图片快速去底(去除白色背景)
public System.Drawing.Bitmap KnockOutGzf(String path) { System.Drawing.Image image = System.Drawing. ...
- MVC 过滤器3
ASP.NET MVC 过滤器(三) ASP.NET MVC 过滤器(三) 前言 本篇讲解行为过滤器的执行过程,过滤器实现.使用方式有AOP的意思,可以通过学习了解过滤器在框架中的执行过程从而获得一些 ...
- SOA、ESB、NServiceBus、云计算
SOA.ESB.NServiceBus.云计算 总结 SOA SOA 是通过功能组件化.服务化,来实现系统集成.解决信息孤岛,这是其主要目标.而更进一步则是实现更快响应业务的变化.更快推出新的应用系统 ...
- Go语言搭建自己的博客
我是如何用Go语言搭建自己的博客的 前言: 话说,已经很久没有在博客园更新博客了,之前写的关于go语言的系列学习文章<让我们一起Go>也由于种种原因一度中断.但是,正如我之前在文章中所 ...
- WebForm和Asp.Net MVC的理解
我对WebForm和Asp.Net MVC的理解 比较WebForm和Mvc的请求处理方式 首先简单了解一下Asp.Net中怎么对页面进行请求处理的: 在管道的第7-8个事件之间,有一个MapHt ...
- 关于pydev的语法的错误提示
第三方包引入时,eclipse默认会把一些包定为错误的,错误是:“undefined variable from import...” 其实是对的,可是报错,很烦人 解决方法:window -- pr ...
- MVC 4 插件化架构简单实现实例篇
ASP.NET MVC 4 插件化架构简单实现-实例篇 先回顾一下上篇决定的做法: 1.定义程序集搜索目录(临时目录). 2.将要使用的各种程序集(插件)复制到该目录. 3.加载临时目录中的程序集 ...
- 通过google的inurl:backupdata*dede_admin获取账号密码
简要描述:很简单,通过google可找出备份路径. 详细说明:http://www.google.com.hk/search?q=inurl:backupdata*dede_admin&hl= ...