我用Microsoft ADO Data Control 连的Access  数据库, 用 Microsoft DataGrid 显示查询的内容,现在我在外面手动更新了数据库,如何刷新dataGrid
我用了Refresh(),但没用.哪位高手给小弟一点指导?

解决方案 »

  1.   

    帮定的记录集requery()然后datagrid refresh
      

  2.   

    strSql="select * from 网吧表";//和原先一样的查询语句

    m_ado.SetRecordSource(strSql);
    m_ado.Refresh();
    m_dataGird.Refresh();为什么我重新设置RecordSource就能刷新了,没有,怎么刷都不行?
      

  3.   


    因为你绑定的记录集重新刷新了
    之前不行,因为你的记录集不变,datagrid再怎么刷新也没用
      

  4.   

    现在又有个新问题:dataGird显示的上次加的结果,不是本次的,郁闷!
    数据库里面已经有新的了,但是显示不出来
      

  5.   

    void CCoreMasterDlg::Onadd() 
    {
    CString strDriver = "MICROSOFT ACCESS DRIVER (*.mdb)";
    CString strDsn;
    CString strFile = ".\\base\\db1.mdb";
    strDsn.Format("ODBC;DRIVER={%s};UID=sa;PWD=;DBQ=%s",strDriver,strFile);

    CString strName;
    CString strID;
    CString strAddr;
    CString strbGround;
    CString strIEpage;
    CString strIP;
    CString strSql;

    try
    {

    CDatabase m_db;//加上这个定义,本来这个是一个类中的成员,暂时就放在这。
    m_db.Open(NULL,false,false,strDsn);
    CString strConnect = m_db.GetConnect();

     
    CInsertDlg dlg;//这是一个输入新数据的对话框
    if( dlg.DoModal() == IDOK )
    {
    record.iID = dlg.m_ID;
    strcpy( record.chAddr , dlg.m_addr);
    strcpy( record.chBKGround , dlg.m_bkground );
    strcpy( record.chIEpage , dlg.m_IEpage ) ;
    strcpy( record.chName , dlg.m_name) ; strSql.Format("insert into 网吧表(ID) values(\'%d\')",record.iID);
      m_db.ExecuteSQL( strSql  );
     
      strSql="select * from 网吧表";
     
    m_ado.SetRecordSource(strSql);//m_ado是CAdodc 类的变量
     
    m_ado.Refresh();
    m_dataGird.Refresh();//m_dataGird是dataGird类的变量
    }

    m_db.Close();
    }
    catch(CDBException *e)
    {
    AfxMessageBox(e->m_strError);
    }

    }这是个加入新数据的函数,加入后刷新dataGird
      

  6.   

    哦,原来在数据库m_db打开后的操作,不关闭该数据库它不自动更新,
    m_ado.SetRecordSource(strSql);//m_ado是CAdodc 类的变量 
      
    m_ado.Refresh(); 
    m_dataGird.Refresh();//m_dataGird是dataGird类的变量这几句放到m_db.Close();后就行了