C
chendy095
Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TMyCoCl.UpdateData(var vData: OleVariant;
out ErrorMessage: OleVariant);
var filename:string;
begin
ErrorMessage:='';
//error 致空
//判断有无另外事务
if ADOConnection1.InTransaction then
begin
ErrorMessage:='保存错误';
exit;
end;
try
ADOConnection1.begin
Trans;
//开始事务
ADOQ_update.Recordset:=IUnKnown(vData) as _Recordset;
/////////////////////////////////////////
ADOQ_update.UpdateBatch(arAll);
//保存
///////////此句不能有效执行,不报错,但是数据没有被写入数据库,为什么?
ADOConnection1.CommitTrans;
//提交事务
except
on E: Exceptiondo
begin
ADOConnection1.RollbackTrans;
//事务回滚
if (pos('Violation of PRIMARY KEY',E.Message )<>0) or
(pos('违反了 PRIMARY KEY 约束',E.Message)<>0) then
ErrorMessage:='主键重复!'
else
if pos('changed by another user',E.Message)<>0 then
ErrorMessage:='另外用户已修改了记录,保存错误!'
else
if pos('Unique key',E.Message)<>0 then
ErrorMessage:='违反唯一性约束!'
else
ErrorMessage:=E.Message+'保存错误!';
end;
end;
ADOQ_update.close;
end;
批处理不能保存到数据库,希望大家不吝赐教啊,是不是Recordset数据集只能只读打开,不能增删改?如能该怎么写?
out ErrorMessage: OleVariant);
var filename:string;
begin
ErrorMessage:='';
//error 致空
//判断有无另外事务
if ADOConnection1.InTransaction then
begin
ErrorMessage:='保存错误';
exit;
end;
try
ADOConnection1.begin
Trans;
//开始事务
ADOQ_update.Recordset:=IUnKnown(vData) as _Recordset;
/////////////////////////////////////////
ADOQ_update.UpdateBatch(arAll);
//保存
///////////此句不能有效执行,不报错,但是数据没有被写入数据库,为什么?
ADOConnection1.CommitTrans;
//提交事务
except
on E: Exceptiondo
begin
ADOConnection1.RollbackTrans;
//事务回滚
if (pos('Violation of PRIMARY KEY',E.Message )<>0) or
(pos('违反了 PRIMARY KEY 约束',E.Message)<>0) then
ErrorMessage:='主键重复!'
else
if pos('changed by another user',E.Message)<>0 then
ErrorMessage:='另外用户已修改了记录,保存错误!'
else
if pos('Unique key',E.Message)<>0 then
ErrorMessage:='违反唯一性约束!'
else
ErrorMessage:=E.Message+'保存错误!';
end;
end;
ADOQ_update.close;
end;
批处理不能保存到数据库,希望大家不吝赐教啊,是不是Recordset数据集只能只读打开,不能增删改?如能该怎么写?