void CDBAccessDlg::AddToGrid(void)
{
OnInitADOConn();
_bstr_t bstrSQL = "select * from employees order by 编号 dese";
m_pRecordset.CreateInstance(__uuidof(Record));
m_pRecordset->Open(bstrSQL,adOpenUnspecified,adLockUnspecified); //这一句就不知道怎么写,里面的参数也不知道有几个,网上找了也不对, while (! m_pRecordset->adoEOF)
{
m_grid.InsertItem(0,"");
m_grid.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->Getcollect(_T("编号")));
m_grid.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->Getcollect(_T("姓名")));
m_grid.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->Getcollect(_T("性别")));
m_grid.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->Getcollect(_T("学历"))); m_pRecordset->MoveNext();
}
ExitConnect();}
麻烦朋友帮我看以下,一下是运行后的错误提示:1>e:\vc++_test\dbaccess\dbaccess\dbaccessdlg.cpp(197) : error C2660: “_Record::Open”: 函数不接受 3 个参数
1>e:\vc++_test\dbaccess\dbaccess\dbaccessdlg.cpp(199) : error C2039: “adoEOF”: 不是“_Record”的成员
1>        e:\vc++_test\dbaccess\dbaccess\debug\msado15.tlh(3002) : 参见“_Record”的声明
1>e:\vc++_test\dbaccess\dbaccess\dbaccessdlg.cpp(199) : fatal error C1903: 无法从以前的错误中恢复;正在停止编译
1>生成日志保存在“file://e:\vc++_test\DBAccess\DBAccess\Debug\BuildLog.htm”
1>DBAccess - 3 个错误,0 个警告
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

解决方案 »

  1.   

    1、ADO 为什么不用 RecordSet,而用Record?
    2、在Open中,竟然没有Connection对象?定义:_RecordsetPtr   pRecordSet;
    初始化:pRecordSet.CreateInstance(__uuidof(Recordset));
    使用:
    pRecordSet->Open((_variant_t)sql,pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);pConn 为 _ConnectionPtr 对象,自己解决定义和初始化,以及连接数据库
      

  2.   

    void CDBAccessDlg::AddToGrid(void)
    {
    OnInitADOConn();
    _bstr_t bstrSQL = "select * from employees order by 编号 dese";
    m_pRecordset.CreateInstance(__uuidof(Recordset));
    m_pRecordset->Open((_variant_t)bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); while (! m_pRecordset->adoEOF)
    {
    m_grid.InsertItem(0,"");
    m_grid.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->Getcollect(_T("编号")));
    m_grid.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->Getcollect(_T("姓名")));
    m_grid.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->Getcollect(_T("性别")));
    m_grid.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->Getcollect(_T("学历"))); m_pRecordset->MoveNext();
    }
    ExitConnect();}
    还是有错误提示:
    1>e:\vc++_test\dbaccess\dbaccess\dbaccessdlg.cpp(197) : error C2660: “_Record::Open”: 函数不接受 5 个参数
    1>e:\vc++_test\dbaccess\dbaccess\dbaccessdlg.cpp(199) : error C2039: “adoEOF”: 不是“_Record”的成员
    1>        e:\vc++_test\dbaccess\dbaccess\debug\msado15.tlh(3002) : 参见“_Record”的声明
    1>e:\vc++_test\dbaccess\dbaccess\dbaccessdlg.cpp(199) : fatal error C1903: 无法从以前的错误中恢复;正在停止编译
    1>生成日志保存在“file://e:\vc++_test\DBAccess\DBAccess\Debug\BuildLog.htm”
    1>DBAccess - 3 个错误,0 个警告
    ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
      

  3.   

    _ConnectionPtr m_pConnection; //指向Connection对象的指针
    _RecordPtr m_pRecordset; //指向Recordset对象的指针已经定义了,就是还有上面的错误提示。请高手帮忙!
      

  4.   

    1、有没有加入下面的代码,加到Stdafx.h中:#include <afxtempl.h>
    // TODO: 在此处引用程序需要的其他头文件
    //加载数据库类
    #include "icrsint.h"
    #import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","EndOfFile")2、那个sql 直接用CString 定义
    3、while(!pRecordSet->EndOfFile)
    {
    ...
    pRecordSet->MoveNext();
    }
     而不是while (! m_pRecordset->adoEOF)
     
      

  5.   

    如果你用的库和我的不一样,仍报函数不接受 x 个参数,在open上面点鼠标右键,选“转到定义...”,看一下你使用的库的函数定义原型是怎样
      

  6.   

    #include <afxdb.h>#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace\
    rename("EOF","adoEOF")rename("BOF","adoBOF")
    已经有啦。
    ::CoInitialize(NULL);是加在什么地方呢?好像编译后还是错误。
    本人是新手,能加你QQ再请教你吗?我的Q611695232.谢谢!