瑞克是正確的。您的Foxpro設置默認爲Foxpro會話授予對「使用」命令打開的任何表的獨佔權。
當您打開表格時,VB應用程序正在運行時,您正在彼此絆倒。
我假設你是雙擊Windows資源管理器中的DBF文件並打開它們,而不是使用Foxpro中的「使用」命令來查看錶格。如果您只想這樣做,那麼(在VFP 9中)關閉所有會話,但只有一個VFP。轉到工具 - >選項 - >數據選項卡,並取消選中「打開獨佔」。現在關閉該會話。這將保存設置。下次雙擊DBF/DBC時,它將以「共享」訪問權限打開所有表格。
否則,使用 「use」 命令從訪問中VFP的表,這樣做:
獨佔訪問:
use in 0 exclusive <table-file-path>
進行共享訪問:
use in 0 shared <table-file-path>
你可以也給它一個noupdate標誌,使其只讀。 (在安全的方式進行查詢。)
use in 0 exclusive noupdate <table-file-path>
或
use in 0 shared noupdate <table-file-path>
從我的理解是,主要的問題是用VB接管「獨家」數據庫的權限和崩潰,當你有表打開(共享或其他)
但是,它聽起來更像是一個時間問題比Foxpro一個。假設你沒有訪問權限或重寫VB應用程序的權限,唯一的另一種方法是找到一個時間,主VB應用程序沒有運行(可能是深夜),然後運行一個Foxpro查詢語句(。 PRG文件)在調度程序上。該查詢可以複製到另一個文件,如Alex建議。
運行FoxPro程序的命令很簡單:
foxpro <program-name>.prg
,可以在由通用調度運行.bat或.cmd文件去。
但是,有一個問題: 自己編譯.prg總是比較好,而不是讓VFP爲你編譯它(如果你不這樣做的話)。一個變化,不要重新編譯,VFP將使用最後編譯的版本(只是爲了貶低你)。
如果你已經知道這個東西,對於矯枉過正的對不起。
祝你好運。
如果另一個程序通過獨佔使用或FLOCK()命令對錶進行鎖定,如何分離DBF?如果該文件正在被另一個程序使用,它將不允許任何打開或分離。 – 2009-07-28 03:06:16
我不知道Foxpro是否使用諮詢鎖(您可以在CopyFile中忽略)或不可破解的鎖(您不能),但即使在後一種情況下也可能有解決方法(例如「外部」文件系統被配置爲不執行牢不可破的鎖),總是與我已經給出的警告當然。 – 2009-07-28 04:03:28