各位大侠帮我看看我下面的函数为什么回造成超出打开游标的最大数的错误。
BOOL XXXX::func(CString PartCode,CString FaultCode,CString FilePath,int ImgNO)
{
CFile infile;
CString Postion[4];

Postion[0].Format("%d",m_FaultRect.left);
Postion[1].Format("%d",m_FaultRect.right);
Postion[2].Format("%d",m_FaultRect.top);
Postion[3].Format("%d",m_FaultRect.bottom);

CString strSql;
strSql.Format("insert into tf_op_fault_auto(TRAIN_SERIAL,VEHICLE_SERIAL,FAULT_NUMBER,FAULT_PLACE,FAULT_ID, \
DETECTOR, DETECT_TIME, FOUND_MODE,PONDERANCE, POSITION_LEFT, POSITION_RIGHT, POSITION_TOP,POSITION_BOTTOM,IMG_LENGTH,IMG_INDEX) \
values('%s','%s','%d','%s','%s','%s',to_date('%s','yyyy-mm-dd hh24:mi:ss'),'%s','%s','%s','%s','%s','%s','%d','%d')",
g_pDlg->m_RecongData[0].TrainSerial,
g_pDlg->m_RecongData[0].VehicleSerial,
1001,
PartCode,
FaultCode,
"计算机",
g_pDlg->m_RecongData[0].PassTime,
"1",
"0",
Postion[0],
Postion[1],
Postion[2],
Postion[3],
nSize,
ImgNO);

// 创建记录集
CADORecordset* pRs = new CADORecordset(g_DB.m_pDB); // TRACE(strSql + "\n");
if (!pRs->Open((LPCTSTR)strSql))
{
// 关闭记录集,释放空间
pRs->Close();
delete pRs;
pRs = NULL; WriteTFDSLog("在数据库中插入故障记录失败!");
WriteTFDSLog(strSql);
return FALSE;
} pRs->Close();

strSql = "select IMG_DATA from tf_op_fault_auto  \
where TRAIN_SERIAL = '" + g_pDlg->m_RecongData[0].TrainSerial
+ "' and VEHICLE_SERIAL = '" + g_pDlg->m_RecongData[0].VehicleSerial + "' and FAULT_ID = '"+FaultCode+"'" ; if (!pRs->Open((LPCTSTR)strSql))
{
WriteTFDSLog("在数据库中插入故障图片数据失败!");
WriteTFDSLog(strSql);
pRs->Close();
delete pRs;
pRs = NULL;
return FALSE;
}
else
{
infile.Open(FilePath,CFile::modeRead|CFile::typeBinary);
long nSize = infile.GetLength(); //按文件的大小在堆上申请内存块
BYTE * pBuffer = new BYTE [nSize];

//把jpg文件读到pBuffer
if (infile.Read(pBuffer, nSize) > 0 )
{
pRs->AppendChunk("IMG_DATA",pBuffer,nSize);
pRs->Update();
}
else
{
WriteTFDSLog("读取故障图片失败!");

//删掉堆上申请的内存
if (pBuffer!=NULL)
{
delete [] pBuffer;
pBuffer = NULL;
}

infile.Close();

pRs->Close();
delete pRs;
pRs = NULL;
return FALSE;
}

//删掉堆上申请的内存
if (pBuffer!=NULL)
{
delete [] pBuffer;
pBuffer = NULL;
}

infile.Close();
}

// 关闭记录集,释放空间
pRs->Close();
delete pRs;
pRs = NULL; return TRUE;
}