C++在对应所需名称或序数的集合中,未找到项目

帝国队长 2011-03-11 05:05:57
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;
}




哪位大侠帮我看下,错在哪里呀,要怎么改呀,有没有别的方法呀。
...全文
277 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hztj2005 2011-08-19
  • 打赏
  • 举报
回复
按序号访问不能用int
只能用long,我也遇到这个问题。
这数据库是如何设计的?
zk0233 2011-03-11
  • 打赏
  • 举报
回复
“在对应所需名称或序数的集合中,未找到项目”.单从这个提示来看,是你SQL语句有问题,所以可能是:
s=s+aTable->name;
这句有问题,你调试一下看看,是不是s不是预想的字串
帝国队长 2011-03-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zyq5945 的回复:]

按序号访问不能用int
C/C++ code
for(int i = 0; i < lColumn; i++)
//-->
for(long i = 0; i < lColumn; i++)
[/Quote]
大神呀,太谢谢你了!给分
zxhx 2011-03-11
  • 打赏
  • 举报
回复
你是不是"l"写成了"1"?
帝国队长 2011-03-11
  • 打赏
  • 举报
回复
我要的是字段名呀,不是记录,所以空无所谓
zxhx 2011-03-11
  • 打赏
  • 举报
回复
=s+(CString)" where 1=0";
-------------------
你的结果集应该是空的吧?
这样从结果集里取数自然是找不到项目了~

zyq5945 2011-03-11
  • 打赏
  • 举报
回复
按序号访问不能用int
for(int i = 0; i < lColumn; i++) 
//-->
for(long i = 0; i < lColumn; i++)
帝国队长 2011-03-11
  • 打赏
  • 举报
回复
Name 是CString
异常弹出来的是
“在对应所需名称或序数的集合中,未找到项目”
toucheme 2011-03-11
  • 打赏
  • 举报
回复
捕获的异常是什么呢?
zxhx 2011-03-11
  • 打赏
  • 举报
回复
Name是string类型的么?

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧