1

我正在使用 Visual Studio 2008(在 vb.net 中)中的一个项目。该应用程序需要从 Visual FoxPro 数据库(dbc 文件)中导入数据。不要问为什么 FoxPro。它需要是 vfp 并且数据库每天由另一个应用程序更新;因此,我不能使用任何其他数据库格式。

我通过 OleDb FoxPro 驱动程序(最新版本)连接到数据库。一切都很好(除了速度)。我可以从我需要的所有表(dbf 文件)中导入数据。我将它加载到数据集中,然后对数据集本身进行操作,以免浪费时间重新连接(我只需要在这个阶段读取数据)。

问题是: 当我编译和运行代码时,并非所有记录都显示出来。

但是,当我从Release文件夹(在bin目录中)运行编译版本时,应用程序会显示更多记录。

更令人费解的是,当我在 Visual FoxPro 9.0 中打开同一个数据表文件时,我只能看到在 VS2008 中显示的数据(不是在 Realease 版本中)。但是,如果我在 OpenOffice Calc 中打开 dbf,它会显示所有记录 - 即与我的应用程序的发布版本相同的记录。

我的第一个想法是:如果它没有显示 VFP 9 中的所有内容,那么这些文件肯定是在不同版本的 VFP 中创建的,所以我应该更改我的连接字符串。但是,为什么编译的 Release 版本会显示所有正确的数据?连接字符串必须没问题。

我下载了DBF Viewer Plus以在另一个应用程序中查看我的 dbfs,但它也无法查看所有记录。

我不知道为什么它会这样。这很烦人,因为每次我想测试它时,我都需要构建我的应用程序。

我正在 Windows Vista 上开发。

谢谢你的帮助!

4

3 回答 3

1

几年没有使用 foxpro,但它曾经是 dbf 文件的“功能”,当您删除记录时,它实际上并不会消失,直到您“打包”文件。它只是设置一个标志,指示记录已被删除,并且文件的大多数 foxpro 视图会相应地将其过滤掉,但它仍然存在并且对 oledb 连接可见。

编辑:另一种可能性是您正在使用的索引 - 如果它指定“唯一”,它将过滤掉除特定视图中的“重复”记录之一之外的所有记录

于 2009-11-21T18:19:12.270 回答
0

开发环境是否有可能正在查看一组不同的数据?开发环境的不同连接字符串或 DSN 设置?

里克·舒默 VFP MVP

于 2009-11-28T17:45:39.040 回答
0

我可以根据经验说,我从未见过供应商这样行事。

VFP 可以设置“过滤器”,以有时不明显的方式影响您可以看到的内容。它们可能存储在 DBC 中 - 其他应用程序是否可能正在设置过滤器?

不太明白为什么数据会根据您运行应用程序的位置而有所不同,这让我觉得发生了其他事情。

如果可能的话,我建议您获取 VFP9 开发环境的副本并在其中打开 DBC - 这将为您提供更多工作。

于 2009-11-24T21:56:42.430 回答