如何在FileMaker表中创建新主键,然后将现有关系修改为基于新创建的键?

时间:2011-03-23 22:03:44

标签: filemaker

我有相当的要求。开发人员创建了我们的数据库,该数据库具有多个布局,关系树非常混乱。如果有另一位开发人员进来,看看它,他说解构我们的系统太费时间和痛苦,考虑现在创建一个脚本,以便你可以解决它直到它可以修复。这就是困境:我在一个页面上获得的信息应该是利用标签和门户来引用许多不同页面上的信息。但是,所有信息都链接到用户名。此用户名不是静态/序列化的,也不是您的用户名。因此,如果问题没有立即发现,可以将大量信息链接到此人的“页面”。如果名称不正确并且有人试图稍微改变用户名,则会破坏该关系并开始新的关系。这些信息并没有消失,但它基本上处于不稳定状态,直到您将名称更改回原始名称。我实际上已经尝试导出信息,更改不匹配的信息,即将名称从Jon.Smith更改为John.Smith,然后将该信息导入该人的新“页面”,但结果不成功。这让我想到了我的问题,是一个脚本能够解决这个问题吗?同样,有没有关于如何创建此脚本的建议?我道歉,但我对DataBase管理的经验很少,我不确定为什么这个项目落在我身上。任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:0)

嗯,作为一般答案,几乎任何用户可以在FileMaker中执行的操作(以及用户,我指的是非开发人员,因此排除数据库结构,编写脚本等活动)可以编写脚本。因此,如果您能够通过重置字段的值来“解决”问题,那么,是的,脚本可以做到这一点。

关于您的具体问题,脚本可能不需要导出记录,但可以重置FileMaker中字段的值。这可以通过循环遍历需要更改的记录或使用“替换字段内容”脚本步骤来完成。所以脚本可以做这样的事情:

Go to Layout[MyLayout] // Go to a layout that is attached to the table you need to search.
Perform Find[Restore] // Restore a find that will show the records you need to change.
Replace Field Contents[Table::Field; "New Value"]

提供比此更多的建议需要实际查看数据库并了解更多有关您的特定需求的信息。

答案 1 :(得分:0)

wchsTech4,你很幸运,因为你的问题很容易解决。你甚至不需要脚本。

首先备份您的文件。然后:

1)创建两个新字段:

  • id(人员表)
    • id的选项:自动输入序列号
  • person_id(与人有关的表格)

2)为人员表中的新id字段生成序列号。

  • 导航至人物布局。
  • '记录'> '显示所有记录'
  • 点击ID字段,然后选择“记录”> '替换字段内容。'
  • 选择“替换为序列号”并接受默认值。请务必选中相应的框以更新下一个序列号。

3)将刚刚生成的序列号放在相关表格中。

  • 导航至相关布局。
  • '记录'> '显示所有记录'
  • 点击person_id字段,然后选择“记录”> '替换字段内容。'
  • 选择“替换为计算结果”旁边的“指定”。
  • 在左上角的下拉菜单中,选择相关人员表。
  • 双击id字段(您的计算应为person :: id,并将人替换为您的表名称。)
  • 点击“确定”,然后点击“替换”。

4)改变关系。

  • 选择“文件”> '管理'> '数据库'。
  • 导航至关系选项卡。
  • 将关系从基于名称的关系更改为id。

5)测试一切。应该工作。

您的相关记录有可能以这样的方式创建,即您还需要修改脚本,网站或此处未提及的其他内容,以使您的修复工作继续进行。这对调查很重要。