现在首选有两个数据库 m_DAODatabase1,m_DAODatabase2
 m_DAODatabase1,连接数据库AA.mdb
 m_DAODatabase2,连接数据库BB.mdb
方法
     //连接工程数据库,AA
      try
  {
    m_DAODatabase1.Open("AA.mdb",FALSE,FALSE);
  }
   catch (CDaoException *e)
 {
    AfxMessageBox(e->m_pErrorInfo->m_strDescription);
    e->Delete();
 }//连接工程数据库,BB
      try
  {
    m_DAODatabase2.Open("BB.mdb",FALSE,FALSE);
  }
   catch (CDaoException *e)
 {
    AfxMessageBox(e->m_pErrorInfo->m_strDescription);
    e->Delete();
 } AA,BB均有 gcl表
  从BB库中增加GCL表记录到AA库的GCL表中
 现在一切都成功,
然后关闭 m_DAODatabase2
  m_DAODatabase2.Close();
 再用m_DAODatabase2连接CC.MDB//连接工程数据库,CC
      try
  {
    m_DAODatabase2.Open("CC.mdb",FALSE,FALSE);
  }
   catch (CDaoException *e)
 {
    AfxMessageBox(e->m_pErrorInfo->m_strDescription);
    e->Delete();
 }
连接成功,
 但是CC的GCL表OPEN时,里连的记录是BB库中的GCL表记录,为什么会出现这个情况怎样
才能得到CC库中的GCL记录 前提是只能利用m_DAODatabase2,因为还有几十个库的GCL表记录要增加到AA.mdb的GCL表中,不能定义很多的m_DAODatabaseXXX,只能通过m_DAODatabase2.open(....),m_DAODatabase2.Clos()来实现,但是后面连接正确的库的GCL表记录,还是BB库中的GCL表记录,怎样解决!
  请教各位大虾了,200分 

解决方案 »

  1.   

    你的记录集是否绑定在bb.mdb了
    (是不是通过classwizard create new recordset class from gcl table of bb.mdb ?)
      

  2.   

    不太可能吧?可能是别的原因
    这是MSDN上的
    CDaoDatabase::Close
    Because Close does not destroy the CDaoDatabase object, you can reuse the object by opening the same database or a different database.
      

  3.   

    classwizard  中定义了一个全局变量,通过对这个变量赋不同的值(BB.mdb ,cc.mdb,....)改变这此表对应的库//连接工程数据库时,通过改变全局变量来改变库
     entern CString strMDB;//在函数外写
    voidXXXX函数
    {
      strMDB="cc.mdb";
         try
      {
        m_DAODatabase2.Open(strMDB,FALSE,FALSE);
      }
       catch (CDaoException *e)
     {
        AfxMessageBox(e->m_pErrorInfo->m_strDescription);
        e->Delete();
     }
    }不知怎么会出错!
      

  4.   

    entern CString strMDB;//在函数外写
    应是extern CString strMDB;
    总之是用了全局变量,
    在记录集中也用相同全局变量
    BB.mdb ,cc.mdb,...都是通过改变全局变量来实现
      

  5.   

    AA.mdb 

    BB.mdb ,cc.mdb ...用的是定义不同全局变量的 不同名的记录集(GCL表)