c++-MFC ADO OnSelchangeListaccess()报错问题

问题描述

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()未定义标识符,原因在哪

解决方案

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

解决方案二:

我觉得ADO完全可以不用了,大量更好用的数据库可以选择

时间: 2024-10-27 02:19:47

c++-MFC ADO OnSelchangeListaccess()报错问题的相关文章

控件-为什么我的MFC程序加加完控制变量运行就报错

问题描述 为什么我的MFC程序加加完控制变量运行就报错 不加控制变量之前都是可以正常运行的,一旦在类向导中添加某个控件的控制变量就报错,这是什么原因? 我没有直接修改代码,只是在class wizard里面的member variables添加了控件的控制变量,程序就开始报错了,删了控制变量又能够正常运行了 解决方案 你只提供这个对话框,肯定没有人能帮上你.你至少也要提供你修改的代码吧,这样才能分析问题. 解决方案二: 你添加了什么控件变量? 解决方案三: 按F5来调试运行,看看代码蹦在了什么地

c++-ado与数据库连接时成功了,但用参数化查询时却报错unkown error 0x800A0E7D

问题描述 ado与数据库连接时成功了,但用参数化查询时却报错unkown error 0x800A0E7D 数据库用的是server 2005,但在下载时遇到了问题,,后来求助网上,完成后,程序名却叫microsoft sql server studio express,不晓得是不是数据库的问题. 希望大神指点! 以下是我的代码:我在CADOcon定义了_connectionptr指针,所以connection这一部分应该是没问题的.void AddUser::OnOK() { // TODO:

mfc控件-Edit Control控件赋值报错

问题描述 Edit Control控件赋值报错 求问大神,我从数据库取了一条记录出来,想要赋值给EditControl,代码如下: if (pRst->rsEOF) { MessageBox(_T("没有数据")); } else; {MessageBox(_T("有数据")); CString m = (LPCTSTR)_bstr_t(pRst->GetCollect("Book_ID")); AfxMessageBox(m); m

oracle-Delphi使用ADO编程时候报错,急求解释

问题描述 Delphi使用ADO编程时候报错,急求解释 1C Delphi使用ADO进行数据库编程时,执行SQL会报错,下面是详细的说明 有三种方式拼接SQL **方式1会报错**:ORA-00937: not a single-group group function adoquery.Close; adoquery.SQL.Text := 'select count(*) icount from testtable where testno = :no and testname = :nam

visual studio-关于MFC问题报错,TCHAR*类型的实参与 HWND类型的形参不兼容

问题描述 关于MFC问题报错,TCHAR*类型的实参与 HWND类型的形参不兼容 刚刚接触MFC,声明了TCHAR类型的chBuf[ ],MessageBox(chBuf)这句代码在别人的程序里是对的,我的VS就会报错,显示"TCHAR * 类型的实参与 HWND类型的形参不兼容".这是为什么啊?求大神指教~ 解决方案 const char*类型的实参与LPCTSTR类型的形参不兼容 MFC"char *"类型的实参与"LPCTSTR"类型的形参

mfc-关于MFC Recordset多次打开报错

问题描述 关于MFC Recordset多次打开报错 这两天刚接触MFC,还不太清楚,求问大神: 在第一个cpp中 Adosql mysql; pRst = mysql.Getbooks(); 取到了值,但是到了第二个cpp中写到 Adosql mysql; pRst =mysql.GetbookByID(); try{ pRst2->Open("SELECT * FROM Book_Info WHERE Book_ID= '10001'", m_pConnection.GetI

MFC多线程程序如果一个线程报错

问题描述 MFC多线程程序如果一个线程报错 MFC多线程程序如果一个线程报错,关闭这个线程,然后重新执行这个线程,不丢失数据怎么做? 解决方案 每执行一个,就把数据保存到文件中,然后恢复的时候从文件读取. 解决方案二: 没办法 线程强制结束 数据就都丢失了

mfc停靠窗口获取主框架报错

问题描述 mfc停靠窗口获取主框架报错 我的停靠窗口(就是系统自动生成的那个属性窗口)里的定时器里需要不停地获取当前文档的信息.然后我就想先获取主框架的指针,再GetActiveDocument(), 但是会报错.这个主框架指针必须得在这个属性窗口类里所有地方都能调用,所以我在头文件里声明一个 CMainFrame* pMain; 但是报错.如果我在OnTimer里这样写,也报错.怎么办? 解决方案 MFC框架中获取窗口/视图句柄MFC 窗口基本框架 解决方案二: 不应该这么做吧,想想吧,一个t

mfc dodatachange-关于DoDataExchange()报错问题

问题描述 关于DoDataExchange()报错问题 我在西安嘎母仲新建了一个窗体,里面加了一个listcontrol,副窗体中调用对象用DoMadal()打开 然后报错就定位到下面: void mybill::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_LIST3, m_bill); } 把DDX_Control(pDX, IDC_LIST3, m_bill