如何制作关于旧 DBF 的 Visual FoxPro 表单 (SCT) "forget"?

How to make a Visual FoxPro form (SCT) "forget" about an old DBF?

我从我的 VFP 项目中删除了一些 DBF,但当我尝试打开我的表单进行编辑时,其中一个仍然导致错误。我删除了代码中对 DBF 的所有引用(从 objects/methods 的形式),并且 DBF 不作为数据表包含在项目中。

如果我尝试在项目外自行打开 SCT 文件,也会出现此错误。错误:

我在文本编辑器中打开 SCT 文件并找到了已删除 DBF 的条目,但我不确定该条目实际是什么或删除它的正确方法是什么。我可以删除第 7 行和第 8 行吗?

Why/how 这是最初创建的吗?为什么它一直存在?

您应该能够通过简单地在 VFP 中打开表单来摆脱它们

然后在窗体和 select 数据环境的打开区域中的任意位置单击鼠标右键。它将列出与表单关联的任何可能的 table/view/relationship 实体。只需单击每个项目并删除它们并保存表格。那应该让你一切顺利。

此外,

在 VFP 中,表单和 classes 只不过是后缀已更改的 .DBF 文件

.SCX = .DBF
.SCT = .FPT
.VCX = .DBF
.VCT = .FPT

另外,项目和报告是一回事...

.PJX = .dbf
.PJT = .fpt
.FRX = .dbf
.FRT = .fpt

所以,现在你知道它是一个数据库文件,你可以直接在 VFP 中打开

use MyForm.scx
browse normal nowait

现在,查看行并双击 "Class" 列。您可能在第二行和第三行中有数据环境和游标引用,显示 class 内容为 "dataenvironment" 和 "cursor".

你也可以

browse normal nowait for atc( "dataenvironment", class ) > 0 OR atc( "cursor", class ) > 0

您可以删除这些记录。

表之间也可能存在 "relationship" 链接,但就其本身而言,从设计器编辑数据环境是最安全的方式。屏幕和 class 版本 .dbf 表中有很多有趣的东西。

反馈

设计表单时,您可以向表单中添加任何表和关系。这使您不必在表单加载之前手动打开表、设置索引顺序、设置关系。就我个人而言,一直到 1993 年 VFP 3 发布时,我都没有构建过这种方式。我更喜欢编码打开表。这允许自定义路径设置,例如在会计应用程序中支持多个 "company"。无论如何,可能不是你所涉及的,但很高兴它对你有用。