起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 95|回复: 2

单独功能运行正常,在Bussiness下运行有问题**

[复制链接]
发表于 2008-9-18 16:43:40 | 显示全部楼层 |阅读模式
unit JHDCT;

interface

uses
  Business.System, Business.Model, Business.Forms, Business.Data;

type
  TJHDCT = class(FJ_1_TYLB_KPJL.TMAINFORM)
    ZRKButton: TToolButton;
    Query: TQuery;
    DataGrid1JHDH: TDataGridColumn;
    DataGrid1RQ: TDataGridColumn;
    DataGrid1JHLX: TDataGridColumn;
    DataGrid1FWDW: TDataGridColumn;
    DataGrid1SWDW: TDataGridColumn;
    DataGrid1WCQK: TDataGridColumn;
    DataGrid1BZ: TDataGridColumn;
    FuncBroker1: TFuncBroker;
    DataSetJHDC: TDataSetBroker;
    procedure ZRKButtonClick(Sender: TObject);
  private
    {private declarations}
  public
    {public declarations}
    rkdh : String;
  end;

implementation

procedure TJHDCT.ZRKButtonClick(Sender: TObject);
var
lTransactionHandle : TTransactionHandle;  //声明一个事务句柄变量
jhdh:String;
//rkdh:String;
lBizURL:TBizURL;
lParam :TBizParam;
lContextCurrent: TContextCurrent;
begin
  Inherited;

if(dsMain.DataSet.RecordCount>0) then           (设置断点。。。。。。。。。)
begin
  if(jsDialogs.MsgBox(0,'已经存在历史数据,是否重新提取数据?','询问',1)=2) then //调用对话框
    begin
       exit;
    end;
end;  
   With Query.Connection.Transaction do    (报错行。。。。。。。。)
       begin
   
       Try
           lTransactionHandle := Start(true);  //开启事务
        
         Query.CommandText := 'delete from RKDCB where rkdh='''+rkdh+'''';
         Query.Execute;
         Query.CommandText:='delete from RKDZB where rkdh='''+rkdh+'''';
         Query.Execute;
           //插入数据
         Query.CommandText:= 'insert into RKDCB select '''+rkdh+''',JH.wzbm,JH.WZMC,JH.JLDW,JH.SL,JH.DJ,JH.JE,JH.BZ from JHDCB JH where JH.jhdh='''+jhdh+'''';
         Query.Execute;
         Query.CommandText:= 'insert into RKDZB select '''+rkdh+''',jhd.jhdh,jhd.rq,jhd.fwdw,jhd.swdw,jhd.bz from JHDB jhd where jhd.jhdh='''+jhdh+'''';
         Query.Execute;
         Commit(lTransactionHandle); //提交事务

       //对异常进行捕获
       Except
           jsDialogs.ShowMsg('数据提取过程中发生错误,请重试','错误');
           Rollback(lTransactionHandle); //回滚事务
       end;
       self.Close;
      //刷新数据集
       //dsMain.DataSet.Refresh;
     end;
      end;
end.


我把断点设置在if语句行,执行到with行时就保存,弹出一个对话框,标题是“提醒”,内容看不见,机子就死掉了,只能强制将进程给关闭掉。
回复

使用道具 举报

 楼主| 发表于 2008-9-18 16:48:01 | 显示全部楼层

有什么问题?

在线等待
回复 支持 反对

使用道具 举报

发表于 2008-9-18 17:30:09 | 显示全部楼层
试试用非立即事务:
lTransactionHandle := Start(false);
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-22 06:33 , Processed in 0.038294 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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