用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
出現例外的幾率有時候一天有好幾次,對客戶系統的使用造成了很多不便,懇請高手支招!謝謝!
uj5u.com熱心網友回復:
發了幾天了,怎么還處于待審核狀態啊?轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/47580.html
標籤:數據庫及相關技術
上一篇:類之間怎么進行資料呼叫
