error C2440: “=”: 无法从“BSTR”转换为“long”

m0_37580103 2018-11-14 09:38:43
如图所示,这里我用ado读取access数据库,其中第一列要设置成long型自动编号,但是在MFC程序中不能转化为“BSTR”型,该怎么修改呢?求问
...全文
146 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2018-12-05
  • 打赏
  • 举报
回复
目测你的列结果是 VARIANT 类型的,那你直接取他的 long 值不就得了,为什么非要取那个 bstrVal 呢?
当然,取出 long 也不能直接赋值给 CString 的,要 format 一下。
data = CString.format(_T("%d"), (long)cmd.m_pRecordset->GetCollect("序号"));
当然,也有可能不是 ULONG 类型的。其实 VARIANT 是什么类型,可以从 vt 字段知道。


jacksonfan 2018-11-18
  • 打赏
  • 举报
回复

m_list.InsertItem(0,"");
CString data;
data=(char*)(_bstr_t)rs->GetCollect("序号");
m_list.SetItemText(0,0,data);
worldy 2018-11-16
  • 打赏
  • 举报
回复
union的成员选取错误,bstrVal改为long
smwhotjay 2018-11-15
  • 打赏
  • 举报
回复
id= atoi((char*)(_bstr_t)rs->GetCollect(colname))
对应修改下
m0_37580103 2018-11-15
  • 打赏
  • 举报
回复
引用 1 楼 smwhotjay 的回复:
id= atoi((char*)(_bstr_t)rs->GetCollect(colname))
对应修改下
这样好些不太行,老师
m0_37580103 2018-11-15
  • 打赏
  • 举报
回复
引用 2 楼 zgl7903 的回复:
data 定义 为 CString
不行啊老师,那个长整型变量data对应的是数据库里面“序号”那一列,那一列是自动编号的,对应的是长整型。好像不能直接改为CString型。
zgl7903 2018-11-15
  • 打赏
  • 举报
回复
data 定义 为 CString

schlafenhamster 2018-11-15
  • 打赏
  • 举报
回复
#if defined(WIN32) && !defined(OLE2ANSI)
typedef WCHAR OLECHAR;
#else
typedef char OLECHAR;
#endif
typedef OLECHAR* BSTR;

即 typedef char *BSTR
指针 转换为 long
(long)BSTR

4,011

社区成员

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

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