瑞克是正确的。您的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