建议放弃ACCESS,用SQL SERVER、FOXPRO等数据库系统,因为ACCESS对C/S模式支持的不好。如果放弃有困难,那么你只好在本地程序打开和访问数据库,然后用Winsock将数据发给远程程序。

解决方案 »

  1.   

    我认为可能会有两种可能:一种是刷新问题,就是如果本地程序先访问,远程程序所进行的数据库修改,必须经过刷新以后,才可以看到结果!;第二种就是打开方式上,由于我对ACCESS不是很了解,但是在VFP里若想本地和远程同时对数据库进行操作,数据库必须以共享方式打开,而默认的是独占方式!
      

  2.   

    extern _ConnectionPtr g_pConnection; //数据库
    extern _RecordsetPtr g_pRecordset; //信息
    extern _RecordsetPtr g_pAlarmRecordset; //信息
    void InitDataBaseFile()
    {
    TESTHR(g_pConnection.CreateInstance(_uuidof(Connection))); TESTHR(g_pGpsRecordset.CreateInstance(_uuidof(Recordset)));
    TESTHR(g_pAlarmRecordset.CreateInstance(_uuidof(Recordset)));

    CString DbPath;
    DbPath=远程路径+"\\";
    DbPath+="nitor.mdb";
    try{
    //Open a connection using the OLE DB Provider for Microsoft Jet.
    g_pConnection->Provider = "Microsoft.Jet.OLEDB.4.0";
    g_pConnection->Open((_bstr_t)DbPath,"","",NULL); g_pRecordset->Open("Select * from Data",(IDispatch*)g_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);
    g_pAlarmRecordset->Open("Select * from AlarmRecord",(IDispatch*)g_pConnection,adOpenDynamic,adLockOptimistic,adCmdText);

    }
    catch(_com_error &e) //异常处理
    {
    if(g_pConnection) PrintProviderError(g_pConnection);
    PrintComError(e);
    }}
    这些是我打开数据库所用的代码,大家看一下,怎样做改动才可以?
      

  3.   

    真的建议放弃ACCESS,他对C/S模式简直就是不支持,我刚刚完成一个项目,由于开始不了解这一点,也碰到你这个问题,绕了很多弯路,最后是用Winsock通讯解决的,后来我做总结时,想明白了,为什么很多搞数据库的用SQL SERVER、Sybase、Oracle等,而没听说谁用ACCESS作大型数据库的,原因在于ACCESS只是一个个人PC上用的小型数据库,用它作大的数据库开发非常麻烦。