为什么我连接上数据库后
创建CDaoRecordSet 对象后,
不能操纵指定表中的字段,
系统提示我“请选择数据源”我很笨,请大家多多指教

解决方案 »

  1.   

    给你一段代码CDaoDatabase * pDaoDB;
    CDaoRecordset * pDaoRec;pDaoDB = new CDaoDatabase;
    pDaoRec = new CDaoRecordset(pDaoDB);pDaoDB->Open("d:\\WinPros2003_2K.mdb",FALSE,TRUE);//打开数据库WinPros2003_2K.mdb
    pDaoRec->Open(dbOpenDynaset,"SELECT * FROM PURE10A");//打开该数据库中的表PURE10A......//对数据库中该表的操作.你若不给定数据库名程序怎么知道要打开什么样的数据库呢?相应的其它的类你可能还会用到CDaoFieldInfo  CDaoTableDef 等.去看看MSDN里的内容吧!
      

  2.   

    哎呀,怎么还用DAO,都快被淘汰了。况且这玩意难用的很。
    楼主,还是用ODBC或ADO吧。
      

  3.   

    to:qly2010(晨曦)
    谢谢你给我的那段代码,那些我都作了,而且我是动态选取数据库并打开之,数据库名和表名都是未知的,要动态读取。
    我已找到问题所在,虽然还没有完全解决,但是非常感谢你!
      

  4.   

    CString szFilter="Microsoft Access Files(*.mdb)|*.mdb|All Files (*.*)|*.*||"; CFileDialog dlg (TRUE,"*.mdb",TEXT""),
           OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);if(dlg.DoModal()!=IDOK)
    return;CString strFilePathName;
    strFilePathName=dlg.GetPathName();
    //取出数据库文件名。CDaoTableDefInfo TableInfo;//用这个类可以读出数据库中表的信息。
    int nTables=pOpenDB->GetTableDefCount();
    while(index<nTables)
    {
       //获得表信息
       pOpenDB->GetTableDefInfo(index,TableInfo,AFX_DAO_ALL_INFO);
       // 如果不是系统表或是隐藏表则将表名添加到组合框中,以备后用
       if (!(TableInfo.m_lAttributes & dbSystemObject)
       && !(TableInfo.m_lAttributes & dbHiddenObject))

                   tableName.AddString(TableInfo.m_strName);//下拉列表框中的内容

        index += 1;
    }
    tableName.SetCurSel(0);
    }
    pOpenDB->Close();