ACCESS数据库
我在C++控制台下能得出值来,但在MFC下就不行了lColumn能读出字段的数量,也是对的,但就是获取字段名时就出错了
代码如下m_pAccessRs->Fields->Item[i]->Name;获取字段名时就出异常 try
{
GetTableInfo(m_pAccessConn,aTable->name );
CString s;
s="select * from ";
s=s+aTable->name;
s=s+(CString)" where 1=0";
m_pAccessRs->Open((_variant_t)aTable -> name, m_pAccessConn.GetInterfacePtr(), adOpenForwardOnly, adLockOptimistic, adCmdTable);  
int lColumn = m_pAccessRs -> Fields-> Count;  
for(int i = 0; i < lColumn; i++) 

CString *FieldName = new CString();
CString tmp;
tmp = (LPCTSTR)(_bstr_t)m_pAccessRs->Fields->Item[i]->Name;
FieldName = &tmp;
aTable->Field .Add (FieldName);
}  
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
return false;
}
哪位大侠帮我看下,错在哪里呀,要怎么改呀,有没有别的方法呀。

解决方案 »

  1.   

    Name  是CString
    异常弹出来的是
    “在对应所需名称或序数的集合中,未找到项目”
      

  2.   

    按序号访问不能用int
    for(int i = 0; i < lColumn; i++) 
    //-->
    for(long i = 0; i < lColumn; i++) 
      

  3.   

    =s+(CString)" where 1=0";
    -------------------
    你的结果集应该是空的吧?
    这样从结果集里取数自然是找不到项目了~
      

  4.   

    “在对应所需名称或序数的集合中,未找到项目”.单从这个提示来看,是你SQL语句有问题,所以可能是:
    s=s+aTable->name;
    这句有问题,你调试一下看看,是不是s不是预想的字串
      

  5.   

    按序号访问不能用int
    只能用long,我也遇到这个问题。
    这数据库是如何设计的?