起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 831|回复: 27

【搞定】2800版本的流程窗体中的"正在提交"问题?**

[复制链接]
发表于 2007-6-15 10:30:34 | 显示全部楼层 |阅读模式
已经在
formcreate中加了
flow.FlowControlProviderTransaction := False;   
可是还是出现"正在提交"问题.

以前的版本是不会的,

搜了下解决方法:
1、升级到2617,在所用功能的主窗体的Create事件中加入下面代码flow.FlowControlProviderTransaction := False

2、不升级,在FlowBroker1AfterFlowOut事件中,更新数据时不使用datasetbroker,使用TQuery执行sql语句进行更新。

现在已经升级了,不可能使用方式2来解决,而且方式2不实际,到处可能都涉及到使用datasetbroker修改数据,提交的, 因此不可能再修改.

是还有其它原因吗?
回复

使用道具 举报

 楼主| 发表于 2007-6-15 10:38:06 | 显示全部楼层
资源包我以前有发过给你们,不过版本是低版本的,不知道需不需要再打包,代码是不变的.
资源包情况具体见这个帖:
http://bbs.justep.com/forum.php? ... A%D7%D9%C9%CF%B1%A8

bug出现的地方:
业务模型\带动办\重点建设月进度上报\进度上报
使用xh登录后,进行月进度上报,提交审批会出现"正在提交"的问题.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-15 10:44:26 | 显示全部楼层
或者是这种错误: 也是在流程提交的时候,
"invoke batch method error, error occur during invoke ApplyUpdates method, Record not found or changed by another user. "

这种bug很大,涉及到的地方太多了,希望有相对简单的解决方式. 谢谢
回复 支持 反对

使用道具 举报

发表于 2007-6-15 11:08:14 | 显示全部楼层
我看了 带动办\系统运行库\系统函数库
怎么有很多直接对 TTask  TTaskMessage 表的update语句
3楼错误应该跟这些语句有关
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-15 11:24:50 | 显示全部楼层
怎么有很多直接对 TTask  TTaskMessage 表的update语句
==
这个没办法修改,这个系统的流程有点bt,很多只能通过操作系统表来得方便.
这些语句大多是终止其它任务的,而且是通过 tquery直接操作数据表的,应该跟平台的事务没关系吧.
而"正在提交"的错误应该是对sqldataset操作而造成的,二者没关系吧.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-15 11:26:46 | 显示全部楼层
而且,都是在FlowBroker1AfterFlowOut 中才对TTask  TTaskMessage 表的update语句
而"正在提交"肯定是发生在流转的过程中吧.

三楼的错误是在这个模块中出现的:
业务模型\带动办\进度审核\发改委月进度审核\项目进度审核
回复 支持 反对

使用道具 举报

发表于 2007-6-15 12:11:03 | 显示全部楼层
我升级了你以前给我的数据库,执行2楼给的功能,出现错误
  项目信息中未填写相关审核人,不能提交!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-15 14:02:22 | 显示全部楼层
回7楼:
协同登录(帐号XH)-功能树中点击[项目信息浏览]-搜索大项目名称:abb-选择这条记录-点击上方的[月进度上报]-...

若还是错误:"项目信息中未填写相关审核人,不能提交!" ,则 在[abb这条记录]的时候点击上方的[项目基本信息]-->在协调审核人和发改委审核人这2个字段中填写一个人,即可继续上报了.
回复 支持 反对

使用道具 举报

发表于 2007-6-15 14:45:19 | 显示全部楼层
错误是报在这行的,提交dsb_YJD时候的错误
procedure TYJDSB.updateZTRefresh(aZT:integer);
begin
  //更新审核状态
  with dsb_YJD.dataset do
  begin
    edit;
    fieldByName('SHZT').asInteger:=aZT;
    //上报时间
   // fieldByName('SBSJ').asDateTime:=business.Data.SysSrv.SysService.Time;
   // fieldByName('SBR').asString:=SYSFUNCLIB.TFUNJustep.GetCurrentLoginUserID(context);
    post;
    applyUpdates(false);
  end;
  refreshMasterDs;
end;
因为之前
procedure TYJDSB.flbBeforeFlowOut(Sender: TObject; Command: TFlowOutCommand);
var lstatus:integer;
    msg:string;
begin
  Inherited;
  msg:='';
  if dsb_YJD.dataset.isEmpty then  exit;
  //若有修改,则提示先保存
  with dsb_YJD.dataset do
  begin
    try
     if (State in DB.dsEditModes)  then
       post;
    except
    on e:Exception do
     begin
      dialogs.showMessage(e.message);
      sysutils.abort;
     end;
    end;
   if updatesPending then
     case jsDialogs.QuestionBox('数据已经修改,在流转之前要保存吗?!', '询问..', 1) of
      6: //保存
           ApplyUpdates(false);
      7: //否
        begin
         CancelUpdates(false);
         edit;
         try
           post;
        except
        on e:Exception do
         begin
          dialogs.showMessage(e.message);
          sysutils.abort;
         end;
        end;
      end;
      2: //取消
         begin
              Command.accept:=false;
              exit;
         end;
      end; //case
   lStatus:=fieldByName('SHZT').asInteger;
    case lStatus of
    1,2,3,4: msg:=dsb_YJD.dataset.fieldByName('SHZT').displayText+' ,不能流转!';
    end;
  end; //with
  if msg<>'' then
  begin
       dialogs.showMessage(msg);
       command.accept:=false;
       exit;
  end;
  //设置业务参数的值????
end;
已经提交了一次
回复 支持 反对

使用道具 举报

发表于 2007-6-15 14:46:38 | 显示全部楼层
在流程流转时候,会启动事务
流程流转成功以后才会确认事务,这个中间,一个数据集只可以提交一次,如果提交两次就会提示正在提交的错误
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-6-23 05:55 , Processed in 0.041697 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表