ProgJ 2016-03-03 07:39 采纳率: 50%
浏览 1469
已采纳

MFC ADO OnSelchangeListaccess()报错问题

之前没用过ADO,学习过程中使用OnSelchangeListaccess()报错了,代码如下:

 BOOL CDataBaseMFCTestDlg::OnInitDialog()
{
    CDialogEx::OnInitDialog();

    // 将“关于...”菜单项添加到系统菜单中。

    // IDM_ABOUTBOX 必须在系统命令范围内。
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000);

    CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
        BOOL bNameValid;
        CString strAboutMenu;
        bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
        ASSERT(bNameValid);
        if (!strAboutMenu.IsEmpty())
        {
            pSysMenu->AppendMenu(MF_SEPARATOR);
            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
        }
    }

    // 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
    //  执行此操作
    SetIcon(m_hIcon, TRUE);         // 设置大图标
    SetIcon(m_hIcon, FALSE);        // 设置小图标

    ////////////////////////////////////////////////////////////////////////////////////////////

    // 使用ADO创建数据库记录集  
    m_pRecordset.CreateInstance(__uuidof(Recordset));
    // 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,  
    // 因为它有时会经常出现一些想不到的错误。jingzhou xu  
    try
    {
        m_pRecordset->Open("SELECT * FROM DemoTable",                // 查询DemoTable表中所有字段  
            theApp.m_pConnection.GetInterfacePtr(),  // 获取库接库的IDispatch指针  
            adOpenDynamic,
            adLockOptimistic,
            adCmdText);
    }
    catch (_com_error& e)
    {
        dump_com_error(e);
    }

    /////////////////////////////////////////////////////////////////////////////////////////////////////
    _variant_t var;
    CString strName, strAge;
    // 清空列表框  
    m_AccessList.ResetContent();
    strName = strAge = "";
    // 在ADO操作中建议语句中要常用try...catch()来捕获错误信息,  
    // 因为它有时会经常出现一些想不到的错误。jingzhou xu  
    try
    {
        if (!m_pRecordset->BOF)
            m_pRecordset->MoveFirst();
        else
        {
            AfxMessageBox("表内数据为空");
            return false;
        }
        // 读入库中各字段并加入列表框中  
        while (!m_pRecordset->adoEOF)
        {
            var = m_pRecordset->GetCollect("Name");
            if (var.vt != VT_NULL)
                strName = (LPCSTR)_bstr_t(var);
            var = m_pRecordset->GetCollect("Age");
            if (var.vt != VT_NULL)
                strAge = (LPCSTR)_bstr_t(var);
            m_AccessList.AddString(strName + " --> " + strAge);
            m_pRecordset->MoveNext();
        }
        // 默认列表指向第一项,同时移动记录指针并显示  
        m_AccessList.SetCurSel(0);
        OnSelchangeListaccess();
    }
    catch (_com_error& e)
    {
        dump_com_error(e);
    }


    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE

}

说OnSelchangeListaccess()未定义标识符,原因在哪

  • 写回答

2条回答 默认 最新

  • threenewbee 2016-03-03 07:43
    关注

    OnSelchangeListaccess()方法是否存在,大小写是否正确,是否缺少头文件。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!