解决方案 »

  1.   

    实际程序里相对复杂一些.用一个函数动态的返回connection
    private function setconnection(istrPath) as adodb.connection在程序里这样用
    set  gcn = setconnection(strPath) 然后用gcn操作dbf文件似乎就出现了问题
      

  2.   

    我现在把c:\tmp目录的文件都删除了
    再用程序操作依然可以对abc表进行操作到底是怎么回事呢
      

  3.   

    没错,对数据库的操作并非直接写磁盘存储文件,而是编辑虚拟内存。这个虚拟内存是应用利用真实内存和磁盘缓存共同建立的。只有当你 Close 记录集时,数据才会更新到目标文件中。
      

  4.   

    按道理在程序退出时,相当于关闭了数据库连接,应该就会释放缓存才对.
    事实上我甚至讲机器重启,缓存还是没有更新.
    我觉得还是连接字符串里的 driver={microsft......foxpro driver }这个驱动的问题.
    昨晚我换用了oledb作为驱动(provider = vfpoledb;),就没有发生过这个情况.
    今天预备查一下foxpro driver的资料看看
      

  5.   

    即使是编辑 Binary 文件,也不是直接对磁盘进行操作,而是改写缓存。只有 Close 文件句柄时,数据才会写回磁盘。
      

  6.   

    你的 ConnectionString 好像不对,没有正确指定目录,全在某个“默认目录”下操作了吧。"Provider=MSDASQL.1;Driver=Microsoft Visual Foxpro Driver;DBQ=" & strpath & ";SourceType=DBF;""Provider=MSDASQL.1;Persist Security Info=False;Extended Properties='Driver={Microsoft FoxPro VFP Driver (*.dbf)};UID=;SourceDB=" & strpath & ";SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;'"
      

  7.   

        Dim gcn As New ADODB.Connection, rs As New ADODB.Recordset
        gcn.CommandTimeout = 10000
        gcn.CursorLocation = adUseClient
        gcn.open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & strpath & ";" & "Extended Properties=""DBASE IV;"";"
        rs.open "select * from a", gcn, 3, 3
        conn.Close