我就想在数据库里添加数值
并且在list control 里显示
void CPage1::OnBnClickedButton1()
{CStuDataDlg stu1;
if(UpdateData())
if(m_name.GetLength()>0)
{  
stu1.m_pRecordset->AddNew();
         stu1.m_nCurrentSel =  stu1.m_ListCtrl.InsertItem(0xffff,"");
         stu1.vid= _variant_t(m_nid);
stu1.vname =_variant_t(m_name);
stu1.vmajor =_variant_t(m_major);
stu1.vclass = _variant_t(m_nclass);
stu1.vgrade = _variant_t(m_grade);
stu1.vkb =_variant_t(m_nkb);
                   stu1.m_pRecordset->PutCollect("学号",stu1.vid);
stu1.m_pRecordset->PutCollect("姓名",stu1.vname);
stu1.m_pRecordset->PutCollect("专业",stu1.vmajor);
stu1.m_pRecordset->PutCollect("班级",stu1.vclass);
stu1.m_pRecordset->PutCollect("成绩",stu1.vgrade);
stu1.m_pRecordset->PutCollect("课程编号",stu1.vkb);
stu1.m_pRecordset->Update();
stu1.m_ListCtrl.SetItem(m_nCurrentSel,0,LVIF_TEXT,(_bstr_t)stu1.vid,NULL,0,0,0);
stu1.m_ListCtrl.SetItem(m_nCurrentSel,1,LVIF_TEXT,(_bstr_t)stu1.vname,NULL,0,0,0);
stu1.m_ListCtrl.SetItem(m_nCurrentSel,2,LVIF_TEXT,(_bstr_t)stu1.vmajor,NULL,0,0,0);
stu1.m_ListCtrl.SetItem(m_nCurrentSel,3,LVIF_TEXT,(_bstr_t)stu1.vclass,NULL,0,0,0)
stu1.m_ListCtrl.SetItem(m_nCurrentSel,4,LVIF_TEXT,(_bstr_t)stu1.vgrade,NULL,0,0,0);    stu1.m_ListCtrl.SetItem(m_nCurrentSel,5,LVIF_TEXT,(_bstr_t)stu1.vkb,NULL,0,0,0);
怎么老是出这样的错!
- this 0x0012f134 {0x00000000} const _com_ptr_t<_com_IIID<_Recordset,&_GUID_00000556_0000_0010_8000_00aa006d2ea4> > * const
- m_pInterface 0x00000000 _Recordset *
- Recordset21 {...} Recordset21
- Recordset20 {...} Recordset20
- Recordset15 {...} Recordset15
- _ADO {...} _ADO
- IDispatch {...} IDispatch
- IUnknown {...} IUnknown
- __vfptr CXX0030: 错误: 无法计算表达式的值 *
[0] CXX0030: 错误: 无法计算表达式的值 *
[1] CXX0030: 错误: 无法计算表达式的值 *
[2] CXX0030: 错误: 无法计算表达式的值 *

解决方案 »

  1.   

    还老是这理出错  operator bool() const throw()
        { 
            return m_pInterface != NULL; 
        }    // Compare two smart pointers
        //
        template<typename _OtherIID> bool operator==(const _com_ptr_t<_OtherIID>& p) 
        {
            return _CompareUnknown(p) == 0;
        }
      

  2.   

    stu1.m_ListCtrl.SetItem(m_nCurrentSel,0,LVIF_TEXT,(_bstr_t)stu1.vid,NULL,0,0,0);
    类型转换 char*(_bstr_t)stu1.vid