如何将foxpro dbf文件提交到dbc?

时间:2014-02-27 06:34:22

标签: sql ms-access foxpro

我设法将.dbc文件中的表链接到ms访问。

问题是table1.dbf有点锁定,我无法修改它,所以我复制了整个数据并为它创建了一个表。现在,我可以自由更新表格。更新了一些行后,我将其导出到dbf文件中并替换原来的'table1.dbf'。问题是,在打开我的程序时,它显示以下内容:

Table 'table1.dbf' is not marked as belonging to the 'dbases' database. 
Would you like to create the back link to mark it?

我知道您必须先提交.dbf文件才能使用它。有没有办法在不使用foxpro的情况下提交新的'table1.dbf'?我设法使用visual studio,但找不到如何做的教程。

2 个答案:

答案 0 :(得分:0)

首先,您能否确认您是否使用Visual Foxpro来处理表和数据库容器?

根据表结构的不同,你显然陷入了一个不太好但不完全失败的状态。自由表(不属于数据库容器的那些 - .DBC),只允许列名最多10个字符。如果是.DBC的一部分,那么列名可以更长。无论如何,当一个表最初是.dbc的一部分时,单个文件头标记有.dbc引用,因此它可以在打开表时自动打开。

它的含义是,当您打开数据库容器并尝试打开文件时,它找不到标题链接并询问如何解决它。返回链接的唯一方法是单独打开文件并使用Yes显式响应,添加后退链接。

就引用Access中的表而言,当您创建连接字符串时,它应指向表所在的路径,而不是特定的表。如果您正在使用数据库容器,它应该在通过数据提供程序访问文件时自动打开。您还可以连接,但路径应包含数据库容器的.DBC引用。

希望这会有所帮助,如果您有任何后续问题,我会留意。

答案 1 :(得分:0)

你不需要在这里“提交”表 - 这与FoxPro的缓冲机制有关,并且不对你在这里遇到的错误负责。

你遇到的是FoxPro攻击旧的xBase标准以允许“数据库”的方式的怪癖。 DBC本身是一个表,列出了一组其他表的名称和字段,以及一些特定于DBC的项目,如本地视图和诸如此类的东西。要添加冗余检查,还要对每个表的标题进行编辑,以包含返回DBC的相对路径。

如果缺少该路径,FoxPro会准确显示您记下的消息。单击“是”应该让FoxPro修改您的表,以便您不再有问题。


顺便说一句,如果您没有Visual FoxPro并且您的应用程序不包含更新功能,您有两种选择。

1:对于非常简单的编辑,你可以在下降文本编辑器中打开dbf(我用NotePad ++完成)并手动进行修正。只要你生成仍然是预期宽度的行和字段,FoxPro甚至不会关心你做了更改manuall。当然,这是非常容易出错,所以在你尝试之前进行备份,不要尝试做任何非平凡的事情。

2:安装Microsoft OLE DB Provider for Visual FoxPro 并让提供程序管理您的FoxPro数据。您可以自己获得直接连接并执行大多数DDL和DML任务,而不是依赖即将被删除的Access或Excel编辑与FoxPro兼容的DBF的能力。