ADO控件事务批处理(20分)

  • 主题发起人 主题发起人 talo520520
  • 开始时间 开始时间
T

talo520520

Unregistered / Unconfirmed
GUEST, unregistred user!
下面这段代码该怎么写?
里面有2个ADOQuery控件,只要有一个提交失败,就回滚
Try
ADOConn.BeginTrans;
for r:=1 to isum do
begin
instr01:=Trim(stringIn.Cells[0,r]);
instr11:=Trim(stringIn.Cells[1,r]);
with ADOQ do
begin
Active:=false;
SQL.Clear;
SQl.Add('insert into wljcdj(s_type,s_index,s_form,s_FormNo,s_no,i_sum,d_date,s_jbr,s_ds,s_check,s_gys,s_remark)');
SQL.Add(' values(:atype,:aindex,:aform,:aFormNo,:ano,:asum,:adate,:ajbr,:ads,:acheck,:agys,:aremark)');
with Parameters do
begin
ParamByName('atype').Value:=Trim(inComtype.Text);
ParamByName('aindex').Value:=instr01;
ParamByName('aform').Value:=Trim(inEditForm.Text);
ParamByName('aFormNo').Value:=Trim(FormNo.Text);
ParamByName('ano').Value:=Trim(InEditNo.Text);
ParamByName('asum').Value:=instr11;
ParamByName('adate').Value:=FormatDateTime('yyyy-MM-dd',InDTP.Date);
ParamByName('ajbr').Value:=Trim(InEditjbr.Text);
ParamByName('ads').Value:=Trim(InEditds.Text);
ParamByName('acheck').Value:=Trim(InEditcheck.Text);
ParamByName('agys').Value:=Trim(inComgys.Text);
ParamByName('aremark').Value:=Trim(InEditremark.Text);
end; // Parameters
//Prepared; //这个是做什么用的?
ExecSQL;
end; //ADOin

with ADOcao do
begin
Active:=false;
SQL.Clear;
SQL.Text:='Update YJTable set i_byrk=i_byrk+:ibyrk where s_index=:sindex';
Parameters.ParamByName('ibyrk').Value:=instr11;
Parameters[1].Value:=instr01;
ExecSQL;
end; //ADOcao

end; //for
ADOConn.CommitTrans;
except
ADOConn.RollbackTrans;
ADOin.Active:=false;
ADOcao.Active:=false;
showmessage('添加记录失败!');
exit;
end; //try
ADOin.Active:=false;
ADOcao.Active:=false;
ADOin.Requery();
ADOYJ.Requery();
ADOin.Last;
 
是不是分太低了呀?怎么没人帮我呀[:(]
 
ADOQ.SQL.Text := 'begin Transaction t_OtherSysDB';
ADOQ.ExecSQL;
try
///
//其他语句
////
ADOQ.Close;
ADOQ.SQL.Text := 'commit Transaction t_OtherSysDB';
ADOQ.ExecSQL;
except
on E: Exception do begin
//Memo_Return.Lines.Add(E.message);
ADOQ.Close;
ADOQ.SQL.Text := 'rollback Transaction t_OtherSysDB';
ADOQ.ExecSQL;
exit;
end;
end;///偶喜欢这样用,你可以44
 
还有,对数据库表结构的改变会直接提交上的
 
哥们最不推荐的就是用参数传递去用于查询
除非是非用不可...比如存二进制的数据等
 
后退
顶部