我找到一个原程序代码,是一个通过CFileDialog选择数据库文件中的表,用TreeControl展开数据库表的树形节点,同时在右边的ListControl显示表属性。我在其中带的示例表(ACCESS低版,可能是97)中能够很好演示,但对自己建的表(ACCESS2000和Accessxp)一概打不开。不知道什么原因?void CDAODBDlg::OnBrowse() 
{
// TODO: Add your control notification handler code here
int i;
HTREEITEM hi;
CFileDialog fd(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
   "Microsoft Access Database(*.mdb)|"
   "*.mdb|All Files(*.*)|*.*||" ); if(fd.DoModal()==IDOK)
{
CString fn;
fn=fd.GetPathName();
if(m_Db.IsOpen())
{
m_Db.Close();
m_Tree1.DeleteAllItems();
m_hTr=0;
}
try
{
///////AfxMessageBox(fn);
  m_Db.Open(fn);
                      ////就是上面不行,显示“不认识的数据库格式”的信息
                CString nDb;
nDb=m_Db.GetName();
....... .......
ShowDatabaseInfo();
}
catch(CDaoException* e)
{
if(m_Db.IsOpen())
{
m_Db.Close();
}
m_List1.DeleteAllItems();
while(m_List1.DeleteColumn(0));
AfxMessageBox(e->m_pErrorInfo->m_strDescription,
          MB_ICONEXCLAMATION);
e->Delete();
return;
}
}
}

解决方案 »

  1.   

    、如果你是使用 Data Control 来连結 Access 2000 的资料库时:你必須在設定 Data Control 的 Source 前先加上一行
    Set Data1.Recordset = rsDAO36 'rsDAO36 is a DAO 3.62、如果你是引用「Microsoft DAO 3.51 Object Library」来访问 Access 2000 的资料库时:請加入【工程】【部件】「Microsoft DAO 3.6 Object Library」
    如果你是使用 ADO 访问 Access 2000以往在 VB6 中利用 ADO OLEDB Provider 3.51 使用 Access 97 資料库,程序都能正常的執行。但是自从將 Access 97 升級到 Access 2000 之后,就无法順利的使用 Access 2000 資料库了,不知道您是否也曾遇到这样的情形呢?其实这种事情在 Microsoft 已经是思空見慣的事情了!任何软件只要有了新的版本,就会有和旧版本不相容的问题产生!而這一次是因为 Access2000 己经使用 Jet 4.0 Engine,所以解決方法如下:
    在您的 ADO 的 Connect String 中的 Provider 必須修改为:"PROVIDER=Microsoft,Jet.OLEDB.4.0" 
    具体见:http://expert.csdn.net/Expert/topic/1382/1382845.xml?temp=.8321039
      

  2.   

    AFX_MODULE_STATE*  pModuleState  =  AfxGetModuleState();    
    pModuleState-  >m_dwVersion  =  0x0601;//2000 
    加上这个试试
      

  3.   

    那么请问small_wei(small) ()
    对ACCESSXP该怎么办?