【问题标题】:Filemaker 12 -- display one value, store anotherFilemaker 12——显示一个值,存储另一个
【发布时间】:2017-02-04 23:11:57
【问题描述】:

我正在 FileMaker 12 中构建一个数据库,除其他外,该数据库将保存一份工作列表(由数字 ID 表示)以及对该工作有计费时间的员工。

给定三个表:

Employee ( empName, empID, salary, ... )
JobHours ( empID, jobID, hrsWorked, ... , refID)
JobCost  ( jobID, expenses, profit, ... , refID)

地点:

Employee 是我的人事名册,将姓名与数字员工 ID 和统计数据(工资等)匹配;

JobHours 是员工参与的列表 - 每当员工花时间在工作上时,此表都会有一行显示他们的 ID、工作 ID、工作时间和其他一些内容;

JobCost 是工作的每日记录。此表中的一个条目是指一天中单个作业的活动。此外,每个条目都会获得一个系统生成的唯一 ID(因为 jobID 和 date 都不是唯一的)与 JobHours 相关(生成在特定日期从事特定工作的人员列表)。

我有一个显示 JobCost 记录的表格。对于每条记录,我都可以在门户中看到来自 JobHours 的记录,该记录是当天从事该工作的人。

现在,问题来了。

在我的门户中,我希望从值列表中提取员工姓名的下拉列表,以在 JobHours 中创建具有以下条件的记录:

1) 我需要它是一个下拉菜单而不是一个弹出窗口,这样它才能响应键盘的自动填充。下拉菜单将在下拉时显示值列表中的辅助值(员工姓名),并将正确响应辅助值上的键盘自动完成,但是一旦您做出选择,它只会显示主要值(员工身份证)。

2) 我需要它始终显示名称,而不是 ID。弹出窗口完美地做到了这一点。但是,它似乎没有响应键盘输入自动完成。

3) 我需要存储数字 ID 而不是名称。

我知道如何同时满足其中任何两个条件,但仅此而已。否则,整个数据库运行良好。这种行为可能吗?

【问题讨论】:

  • 在我的 FMPA 12 v3 (Mac) 副本上,我发现下拉列表和弹出菜单都可以输入。也许检查您的 FileMaker 副本是最新的?
  • 刚刚验证我是最新的——FMP 12.0v4 并且在我检查时没有可用的更新。专业版和高级版有区别吗?
  • 在我看来不太可能,但有可能。也许尝试从网站上获取 Advanced 的演示,看看是否能解决问题。也可以在另一台计算机上尝试——也许您的某些设置已损坏。您使用的是 Mac 还是 Windows?
  • 我目前在 Windows 上。我确实在单独的机器上安装了我的 Advanced 副本,但行为没有明显变化。有机会我会试试 Mac。如果这是差异,我不会感到惊讶,因为这些控件通常是操作系统的一部分,而不是任何特定的应用程序。

标签: filemaker


【解决方案1】:

一种常见的技术是使用两个字段,一个直接在另一个之上。

在底部放置您的 JobHours::EmpID 字段。使用您指定的值列表将其设置为下拉列表。

在 JobHours::EmpID 字段顶部放置相关的 Employee::EmpName 字段。设置字段,使其不能在浏览或查找模式下输入。

现在您的用户将看到员工姓名,但是当他们点击该点击时,他们将穿过顶部字段并进入员工 ID 字段,他们将从值列表中选择姓名。

【讨论】:

  • 我确实尝试过这个,正如@Chuck 在下面提到的那样,它有点不雅。如果我在第二天左右没有提出任何其他建议,我可能会回到这个问题,在这种情况下,将其标记为答案。
【解决方案2】:

pft 的解决方案是我长期使用的解决方案,但我仍然觉得它不够优雅,因为用户在更改值时仍会在字段中看到现有的 id 编号。

如果提前输入很重要,我会使用弹出菜单。一旦通过 Tab 键或单击激活菜单,用户就可以从键盘键入,并且选择将根据输入的内容而改变。

【讨论】:

  • 您和@pft221 同意弹出窗口应该响应自动完成。是否有一些我可能会丢失的切换?它似乎对我不起作用。
  • 嗯,它不是完全自动完成,而是当我在 FileMaker 12 中创建一个快速测试时,带有一个静态值列表(亚利桑那州、加利福尼亚州、纽约州)和一个并列的字段将其作为弹出菜单,我可以单击该字段以调出菜单并键入“C”以选择加利福尼亚。所以它并没有完成内容,而是选择最接近的匹配。
【解决方案3】:

我来到这个线程是为了寻找同样问题的解决方案(允许用户从列表中选择,显示他们的选择,但存储一个相关的值)。例如,从下拉列表中选择一个植物物种名称,在下拉字段中显示植物物种名称,但让它存储分类序列号(TSN;这很可能多年来保持不变)。这在 MS Access 中很容易做到,但在 FMP12 中要花更多的时间来完成。

我是如何解决的: 我在表中创建了两个用于存储值的字段:Plant_TSN 和 Plant_SciName。这两个字段中的值之间必须存在关系。就我而言,我将每个 TSN 的 SciName 存储在查找表中。然后,我在布局中创建了两个字段,每个新字段一个。

对于您希望存储的值(例如 Plant_TSN): 将相应的布局字段设为下拉菜单并包含显示/隐藏箭头。编辑您将用于填充下拉列表的值列表,以显示第二个(便于阅读的)列,但存储第一列值。在布局中缩小字段以仅显示箭头。

对于您希望用户看到的字段(例如 Plant_SciName): 使另一个布局字段成为编辑框,并防止在浏览或查找模式下输入字段。但它与上一步中创建的下拉箭头相对,以使看起来像一个字段。

最后,回到第一个字段(仅箭头下拉菜单)编写一个脚本,当在下拉菜单中选择用户丑陋的 (Plant_TSN) 值时,将用户友好的数字 (Plant_SciName) 推送到编辑框。我使用了下拉格式化字段的 OnObjectSave 脚本触发器。脚本应该类似于 1)冻结窗口,2)转到相关记录(基于查找表中的关系 3)设置字段(即编辑框)和 4)GotoLayout[original] 以抵消冻结。

可能不是一个完全清楚的解释,但我敢打赌你会在第三次阅读时得到它!我会张贴截图,但我显然需要 10 个“声望点”。

干杯。

【讨论】:

  • 感谢您花时间输入此内容。时间已经过去了,我不记得我的确切解决方案了,但这听起来与我所做的大致相似。充其量是一个杂物,但效果很好,客户似乎很满意。
猜你喜欢
  • 2011-09-09
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
  • 1970-01-01
相关资源
最近更新 更多