【问题标题】:Visual FoxPro and VS2008 do not show all DBF records. A separate build doesVisual FoxPro 和 VS2008 不显示所有 DBF 记录。单独的构建
【发布时间】:2009-11-21 18:02:14
【问题描述】:

我正在使用 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 上开发。

感谢您的帮助!

【问题讨论】:

    标签: vb.net visual-studio-2008 oledb dbf visual-foxpro


    【解决方案1】:

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

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

    【讨论】:

    • 恐怕不是这个。 FoxPro 显示标记为已删除的记录,但不显示其他一些记录。我需要的那些。只有当我运行我的应用程序或 OpenOffice Calc 的构建时,我才能看到它们。顺便说一句,OOffice 看不到 FoxPro 中标记为已删除的记录。
    • 就我所见 - 无法在 FoxPro 中看到整个表格 - 所有索引都是唯一的。这可能是原因,但为什么编译的构建会毫无问题地显示所有记录?我认为 VS 编译/调试和 VS 发布构建之间存在问题。也许一些VS设置? VS 环境中的行为与它之外的行为不同。
    • 仅供参考 OLE DB 连接字符串中有一个 DELETED 选项,用于包括/排除已删除的记录:connectionstrings.com/visual-foxpro
    【解决方案2】:

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

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

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

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

    【讨论】:

      【解决方案3】:

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

      里克·舒默 VFP MVP

      【讨论】:

      • 我认为这是可能的。它的行为就像有一个不同的连接字符串(或 DSN 设置),但它会在哪里设置呢?我没有更改任何默认的 VS 设置,也没有使用数据集设计器 - 一切都以编程方式完成。
      • 不太确定,因为我还不是 Visual Studio 开发人员。希望我能提供更多帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      • 2018-07-24
      • 1970-01-01
      • 1970-01-01
      • 2012-02-09
      • 1970-01-01
      相关资源
      最近更新 更多