我的数据库中用到一个AutoID,是16位的,超过了int的定义范围,但在long范围内,
但是使用ADO调用时,返回的ID是错误的,请问RecordSet如何才能正确的返回超长ID.
代码大致如下 pRs = new CADORecordset(CMonitorApp::g_pDb);
CString TempSql;
int i = -1;
CString temp;
temp="SELECT * FROM (SELECT t.onrampid,r.rampname \"ONRAMPNAME\",t.offrampid,r1.rampname \"OFFRAMPNAME\",t.toll,t.autoid FROM Tariff_a t,rampinfo r,rampinfo r1 where t.onrampid=r.rampid and t.offrampid=r1.rampid) fin WHERE fin.onrampid like '%"+m_OnID+"%' AND fin.offrampid like '%"+m_OffID+"%' AND fin.onrampname like '%"+m_OnName+"%' AND fin.offrampname like '%"+m_OffName+"%'"; if(pRs->Open(LPCTSTR("SELECT * FROM (SELECT t.onrampid,r.rampname \"ONRAMPNAME\",t.offrampid,r1.rampname \"OFFRAMPNAME\",t.toll,t.autoid FROM Tariff_a t,rampinfo r,rampinfo r1 where t.onrampid=r.rampid and t.offrampid=r1.rampid) fin WHERE fin.onrampid like '%"+m_OnID+"%' AND fin.offrampid like '%"+m_OffID+"%' AND fin.onrampname like '%"+m_OnName+"%' AND fin.offrampname like '%"+m_OffName+"%'")))
{
while(!pRs->IsEof())
{
pRs->GetFieldValue("ONRAMPID",TempSql);
m_listctrl_tariff.InsertItem(++i,(LPCTSTR)TempSql);

pRs->GetFieldValue("ONRAMPNAME",TempSql);
m_listctrl_tariff.SetItemText(i, 1, (LPCTSTR)TempSql); pRs->GetFieldValue("OFFRAMPID",TempSql);
m_listctrl_tariff.SetItemText(i, 2, (LPCTSTR)TempSql); pRs->GetFieldValue("OFFRAMPNAME",TempSql);
m_listctrl_tariff.SetItemText(i, 3, (LPCTSTR)TempSql); pRs->GetFieldValue("TOLL",TempSql);
m_listctrl_tariff.SetItemText(i, 4, (LPCTSTR)TempSql); pRs->GetFieldValue("AUTOID",TempSql);
m_listctrl_tariff.SetItemText(i, 5, (LPCTSTR)TempSql);
pRs->MoveNext();
}
pRs->Close();
}