用c#编写dBase III+ DBF和FPT



为了支持一个相当老的应用程序,我想用c#编写一个可以直接在遗留应用程序中使用的dBase III+文件。

要做到这一点,我必须在第一个字节中创建包含0xF5的文件,这意味着它在前三个比特中得到二进制"111"/十进制"7",表示表版本。我没有找到任何描述7是什么的规范,但我猜它一定是dBase III+的指示器。最值得注意的是,这些文件可以直接用Excel打开而没有任何错误消息,我用这种行为来测试创建的文件。

似乎我没有正确配置我的db连接。我找到了两种方法,它们都部分有效:

  1. 一个OleDbConnection的VFPOLEDB.1/FoxPro。这将创建DBF/FPT文件,但在第一个字节中它表示30,这意味着在前三个版本中仅用"1"表示位。我也没有找到一个文档告诉我1是什么意思,但我猜它的意思是"超越古代"。文件不能在Excel中正确打开,旧的应用程序可以读写,但不能追加到创建的表。

  2. 一个OleDbConnection由Microsoft.Jet.OLEDB.4.0与扩展属性=dBase III。这创建了一个可以在Excel中打开的DBF,但是一旦我添加了一个备忘录字段,就会创建一个DBT文件。第一个字节是83,因此前三位100 (bin)或4 (dec)表示"dBase Level 7"

谁能告诉我dBase III+ resp使用什么驱动程序?DBF/FPT-文件版本111 (bin)/7 (dec)?

Jens

我们所做的是:遗留软件的开发人员给出了一个空DBF和我们想要编写的表的相应FPT。然后我们通过Visual FoxPro连接到这个空文件并插入数据,将长文本的处理留给驱动程序。

最新更新