リックは正しいです。Foxpro の設定はデフォルトで、Foxpro セッションに「use」コマンドで開いたすべてのテーブルに排他的な権限を与えるようになっています。
テーブルを開いているとき、VB アプリが実行されている間、お互いにつまずきます。
Windows エクスプローラーで DBF ファイルをダブルクリックして開き、Foxpro で "use" コマンドを使用してテーブルを表示していないと仮定しています。その方法だけを実行したい場合は、(VFP 9 で) VFP の 1 つを除くすべてのセッションを閉じます。[ツール] -> [オプション] -> [データ] タブに移動し、[排他を開く] のチェックを外します。そのセッションを閉じます。これで設定が保存されます。次に 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 ファイル) をスケジューラで実行します。アレックスが提案したように、クエリは別のファイルにコピーできます。
Foxpro プログラムを実行するコマンドは簡単です。
foxpro <program-name>.prg
これは、汎用スケジューラによって実行される .bat または .cmd ファイルに入れることができます。
ただし、キャッチがあります。VFP にコンパイルさせるよりも、VFP 内から .prg をコンパイルする方が常に良いです (そうしないとコンパイルされます)。再コンパイルしないと、VFP は最後にコンパイルされたバージョンを使用します (悪意があります)。
このことをすでに知っていた場合は、やり過ぎで申し訳ありません。
幸運を。