我在界面上放了一个DBGrid
_RecordsetPtr  m_pRecordset;
m_pRecordset = Conn1.GetRecordSet("select bmdm as 部门代码, bmmc as 部门名称 from dwdm");
m_Grid.SetRefDataSource((LPUNKNOW)m_pRecordset); ---
当执行到这一步时提示错误 找不到成员 这是为什么呢?该如何实现这个功能呢
其他的定义有
CDataGrid m_Grid
DDX_Control(pDX, IDC_DBGRID, m_Grid)
刚开始学VC好多东西都不懂

解决方案 »

  1.   

    找不到什么成员?
    我的是:
    m_pRecordset.CreateInstance("ADODB.Recordset");
    m_pRecordset->CursorLocation=adUseClient;
    m_pRecordset->Open((_variant_t)str,_variant_t(m_pConn,true),adOpenStatic,adLockOptimistic,adCmdText);
    m_grid.SetRefDataSource(NULL);
    m_grid.SetRefDataSource((LPUNKNOWN)m_pRecordset);
      

  2.   

    _ConnectionPtr m_pConn;
    m_pConn.CreateInstance("ADODB.Connection");
    try{
    m_pConn->Open((_bstr_t)m_strConnect,"","",adConnectUnspecified);
    }catch(_com_error e){
    MessageBox("连接数据库失败!");
    }
      

  3.   

    我也是这样定义的
    为什么DBGrid里面确实变成3条数据了(表里面有3条数据),但是是3条空白纪录
    我改了SQL语句,取3个字段出来,它还是两列空白的
    会是什么地方的问题呢
      

  4.   

    试试加上
    m_pRecordset->CursorLocation=adUseClient;
      

  5.   

    我的代码是这样的void CTrainingDlg::Refresh_Data()
    {
    _bstr_t vSQL;
    CString sSQL, sTmp;
    _ConnectionPtr Conn2;
    _RecordsetPtr m_pRecordset; m_pRecordset.CreateInstance("ADODB.Recordset");
    Conn2.CreateInstance("ADODB.Connection");

    UpdateData(TRUE); //将控件的值读取到成员变量中
    //设置SELECT语句
    sSQL = "SELECT bmdm as 部门代码,bmmc as 部门名称,bmjj as 部门简介 from dwbm";
    vSQL = "Provider=SQLNCLI.1;Password=jubo0204;Persist Security Info=True;User ID=sa;Initial Catalog=Training;Data Source=10.1.13.214";
    Conn2->Open(vSQL, "", "", adModeUnknown);
    m_pRecordset->CursorLocation = adUseClient;
    m_pRecordset->Open((_variant_t)sSQL, _variant_t(Conn2, true), 
    adOpenStatic, adLockOptimistic, adCmdText);
    /*
    m_pRecordset->MoveFirst();
    while (!m_pRecordset->adoEOF)
    {
    //sTmp = (LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("bmdm");
    MessageBox("ss", "test", MB_OK);
    m_pRecordset->MoveNext();
    };
    */
    m_Grid.SetRefDataSource(NULL);
    m_Grid.SetRefDataSource((LPUNKNOWN)m_pRecordset);}
      

  6.   

    用的数据库是SQL 2005 EXPRESS
      

  7.   

    是不是还需要对dbgrid做什么操作,设置它的一些属性什么的阿
      

  8.   

    记录读出来了?
    就是datagrid不显示?
      

  9.   

    恩,就是阿,
    DBGrid现在是 2列 * 3行的空白格子(表里面有3条记录的)
      

  10.   

    m_grid.Refresh()
    加上这个呢?
      

  11.   

    我的Recordset定义的是  _RecordsetPtr m_pRecordset;你的是怎么定义的?
      

  12.   

    我也没用过SQL 2005 EXPRESS,而且都是本地的
    现在看我也不知道哪错的 
      

  13.   

    m_pRecordset->CursorLocation = adUseClient;//使用客户端游标
    open之前设置这个属性
      

  14.   

    我设置了的阿m_pRecordset->CursorLocation = adUseClient;
    m_pRecordset->Open((_variant_t)sSQL, _variant_t(Conn2, true), 
    adOpenStatic, adLockOptimistic, adCmdText);
      

  15.   

    他已经设置过了
    是在recordset open之前
      

  16.   

    m_1.SetRefDataSource((LPUNKNOWN)pRecordset->GetDataSource());
    这样呢??
      

  17.   

    这一句
    sTmp = (LPCTSTR)(_bstr_t)m_pRecordset->GetCollect("bmdm");
    我想用来取值的,但是不行要出错的加了GetDataSource()后还是一样的空白的2列3行
    m_grid也是定义的 CDataGrid是不是m_Grid中没有具体的数据阿,虽然创建了3条记录但是是空的,所以出不来,去取的话就报错了
    是不是这种可能性阿
      

  18.   

    上次也有人问过这个问题,所以我试过一个实例工程,我这边是ok的我把全部代码给你看_ConnectionPtr  pConn;
    _variant_t      RecordsAffected;
    _RecordsetPtr   pRecordset = NULL; CString strSql; strSql.Format(_T("SELECT * FROM ReaderInfo ")); pRecordset.CreateInstance(_uuidof(Recordset));
    pRecordset->CursorLocation = adUseClient;pRecordset->Open(_bstr_t(strSql),       
    _variant_t((IDispatch *)pConn,true),
    adOpenDynamic,
    adLockOptimistic,
    adCmdText); m_1.SetRefDataSource((LPUNKNOWN)pRecordset->GetDataSource());这是我的代码,ok的
      

  19.   

    我把你的代码全部拷过来都不对阿,除了数据库连接
    能把你的例子发给我么?邮箱[email protected]
      

  20.   

    例子就不发给你了,因为已经被我改得不成样子了不好意思怀疑你的记录集有问题如果还不行,把你的那个pConn 也改成adUseClientpConn->CursorLocation = adUseClient;
      

  21.   

    能不能帮我整一个啊ps 你们安装完VC后  从哪儿找的CDataGrid类的定义包啊
    我的是从网上找到的,我安装完后没有在VC目录里找到
    是不是我的这个包有什么不对的阿
      

  22.   

    但是现在是你的记录都取不出来啊
    还不是显示不出来
    试试看把中文全换成英文
    用最简单的sql,不要as 了等等
      

  23.   

    现在能够显示数据了,谢谢帮忙啊
    问题是我导入 DataGrid 的时候出现了问题
    我是直接insert active control没有用project|Add to project|components and controls然后用得别人的Datagrid.h,Datagrid.cpp等文件
    我自己从头弄了就好了,不知道是不是这个原因
    :(。郁闷,疯了,倒了。
      

  24.   

    奇怪,你的出错是在取记录集的地方啊
    和datagrid还没有关系呢
    我也不知道
      

  25.   

    我提示找不到 “LPUNKNOWN”的定义, 要引用什么?