AddNew后取ID的有关问题, 总是取不到, 总是0, 这是为什么呢

AddNew后取ID的问题, 总是取不到, 总是0, 这是为什么呢?
m_cTitle.Replace(_T( " ' "),_T( " ' ' "));
m_cPic.Replace(_T( " ' "),_T( " ' ' "));
m_cMid.Replace(_T( " ' "),_T( " ' ' "));
m_cTxt.Replace(_T( " ' "),_T( " ' ' "));

txt.Empty();
txt   =   _T( "select   *   from   source ");

m_pRecordset-> Open(_bstr_t(txt),(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);
m_pRecordset-> AddNew();   //成功
m_pRecordset-> Fields-> GetItem(_variant_t(_T( "imagepath ")))-> Value   =   _bstr_t(m_cPic);     //成功
m_pRecordset-> Fields-> GetItem(_variant_t(_T( "midpath ")))-> Value   =   _bstr_t(m_cMid);         //成功
m_pRecordset-> Fields-> GetItem(_variant_t(_T( "txtpath ")))-> Value   =   _bstr_t(m_cTxt);     //成功

_variant_t   m_nNewIDValue;
m_nNewIDValue   =   m_pRecordset-> GetCollect(_variant_t(_T( "id ")));     //取不到

if(m_nNewIDValue.vt   !=   VT_NULL)
{
m_nNewIDValue.ChangeType(VT_INT);   //转不转都是0

txt.Empty();
txt.Format(_T( "insert   into   mms(mobilephone,type,sourceid,status,title)values( '%s ',1,%d,0, '%s ') "),m_cPhone,m_nNewIDValue.iVal,m_cTitle);
m_pConnection-> Execute((_bstr_t)txt,NULL,adCmdText);

m_pRecordset-> Update();   //无错误就COMMIT
}

m_pRecordset-> Close();


因为我是两个表有相关联的ID的,所以需要先插入一条记录,再拿到新记录的ID,再把这个ID插入另一个表,   我原来用过(网页中)这种方法,可行(但有并发不同步的问题,不过现在是软件所以不用考虑),   但是为什么拿不到ID呢?   请大家帮我分析一下,谢谢,这段代码执行是没有问题的,   两个表都插入了记录了,只是ID总是0.

------解决方案--------------------
AddNew后Commit,再Requery
------解决方案--------------------
(LPCTSTR)(_bstr_t)m_pRecordSet-> GetCollect( "Content ")
我之前都是这样用的..然后获得一个CString ,
string 就string ,再atoi() 转换int 就好了
(呵呵 数据库做的不多,就弄过一个access的缩略词小程序).


你手动为数据库加上记录看能不能获得ID, 看能不能缩小错误产生原因的范围.
不怎么熟悉, 帮你UP..
------解决方案--------------------
先Update再取数据。