数据库操作时出现“不能在手动或分布事务方式下创建新的连接”的异常提示
用BCB+ADO在对数据进行存储时,会出现“不能在手动或分布事务方式下创建新的连接”的异常提示!数据库服务器为SQLServer2005,SP4补丁也已经打过,客户端提交代码如下:
TADOQuery *pUpdate = dmLocal->pUpdate_gChpi2;
if(!pUpdate->Connection->InTransaction)
pUpdate->Connection->BeginTrans();
try
{
pUpdate->Active = false;
pUpdate->SQL->Clear();
//1.插入成品库主表
pUpdate->SQL->Add("INSERT INTO gChpi2 ( BoxNo,BoxNum,spNo,inDate,OutFlag,TPID,EPCID,SJMZ,SJJZ,SJTJ ) \
select xh,fxnum,'" + lblHWId->Caption.Trim() + "',getdate(),0,'" + RFIDScanBillInfor[iIndex].sTuoPanId + "',EPCID,isnull(mxjz,0),isnull(mxjz,0)+isnull(xzzl,0),isnull(xzc,0)*isnull(xzk,0)*isnull(xzg,0) from dfxxh \
where xh in (" + slstBoxNo + ")");
pUpdate->ExecSQL();
//2.插入成品库明细表
pUpdate->Active = false;
pUpdate->SQL->Clear();
pUpdate->SQL->Add("insert into gChpi2Mx (BoxNO,scMxid,scCode,sccf,color,pino,Num,poxh,po) select a.xh,a.scMXID,b.scCode,a.sccf,a.hcolor,\
a.pino,a.fxnum,b.poxh,a.po from dxfmx a inner join dfxxh b on a.xh = b.xh and a.xh in (" + slstBoxNo + ")");
pUpdate->ExecSQL();
//3./更新库位状态表
pUpdate->Active = false;
pUpdate->SQL->Clear();
pUpdate->SQL->Add("update kw set status = 1,TPH = '" + RFIDScanBillInfor[iIndex].sTuoPanId.Trim() + "' where hw = '" + lblHWId->Caption.Trim() + "'");
pUpdate->ExecSQL();
//4.更新分箱明细表中的入库标志、入库申请表
pUpdate->Active = false;
pUpdate->SQL->Clear();
pUpdate->SQL->Add("update dfxxh set rksign = 1 where xh in (" + slstBoxNo + ");update rckqr set isok = 1 where tph = '" + RFIDScanBillInfor[iIndex].sTuoPanId.Trim() + "' and bqh in (" + slstBoxNo + ") and type = '" + RFIDCheckBillInfor[iIndex].sDataType + "';");
pUpdate->ExecSQL();
pUpdate->Connection->CommitTrans();
}
}
catch(Exception &Msg)
{
pUpdate->Connection->RollbackTrans();
sEMsg = "数据保存失败,请检查后重试!" + Msg.Message;
bResult = false;
}
连接的 cursorlocation 都是默认的 clUseClient
出现异常的几率有时候一天有好几次,对客户系统的使用造成了很多不便,恳请高手支招!谢谢!