我在FileMaker 12中构建一个数据库,除其他外,它将保留一份工作列表(由数字ID表示)和那些可以为该工作计费的员工。
给出三个表:
Employee ( empName, empID, salary, ... )
JobHours ( empID, jobID, hrsWorked, ... , refID)
JobCost ( jobID, expenses, profit, ... , refID)
其中:
员工是我的人事名册,其名称与数字员工ID和统计数据相匹配(薪水等);
JobHours是员工参与的列表 - 每当员工花时间在工作上时,此表都有一行显示他们的ID,工作ID,工作小时数以及其他一些事项;
JobCost是每日工作记录。此表中的一个条目是指一天中单个作业的活动。此外,每个条目都会获得一个系统生成的唯一ID(因为jobID和日期都不是唯一的)与JobHours相关联(导致在特定日期处理特定作业的人员列表)。
我有一个显示JobCost记录的表单。对于每条记录,我可以在门户网站上看到,显示当天从事这项工作的JobHours的记录。
现在,问题。
在我的门户网站中,我希望从值列表中提取员工姓名的下拉列表,以使用以下标准在JobHours中创建记录:
1)我需要它是一个下拉菜单而不是一个弹出窗口,所以它会响应键盘的自动填充。下拉列表会在下拉时显示值列表中的次要值(员工姓名),并且会对次要值上的键盘自动完成功能做出正确响应,但是一旦您做出选择,它只会显示主要值(员工ID)。
2)我需要它始终显示名称而不是ID。弹出窗口完美地做到了这一点。但是,它似乎没有响应键盘输入自动复合词。
3)我需要存储数字ID而不是名称。
我知道如何同时满足这两个标准中的任何一个,但这就是全部。否则整个数据库工作得很好。这种行为可能吗?
答案 0 :(得分:2)
一种常见的技术是使用两个字段,一个直接在另一个上面。
在底部,输入您的JobHours :: EmpID字段。将其设置为下拉列表,其中包含您已指定的值列表。
在JobHours :: EmpID字段的顶部放置相关的Employee :: EmpName字段。设置该字段,使其无法在浏览或查找模式下输入。
现在您的用户将看到员工姓名,但是当他们点击该点击时,将通过顶部字段进入员工ID字段,他们将从值列表中选择名称。
答案 1 :(得分:0)
pft的解决方案是我长期使用的解决方案,但我仍然认为它不够优雅,因为用户在更改值时仍会在字段中看到现有的ID号。
如果预先输入很重要,我会使用弹出菜单。一旦菜单被激活或通过点击进入菜单,用户就可以从键盘输入,选择将根据输入的内容而改变。
答案 2 :(得分:0)
我来到这个线程寻找同一问题的解决方案(允许用户从列表中选择,显示他们的选择,但存储相关的值)。例如,从下拉列表中选择植物物种名称,在下拉字段中显示植物物种名称,但是它存储分类序列号(TSN;多年来更有可能保持相同)。这在MS Access中很容易做到,但是在FMP12中做了更多的麻烦。
我是如何解决的: 我在表中创建了两个存储值的字段:Plant_TSN和Plant_SciName。这两个字段中的值之间必须存在关系。在我的例子中,我在查找表中为每个TSN存储一个SciName。然后我在布局中创建了两个字段,每个字段对应一个新字段。
对于您要存储的值(例如Plant_TSN): 将相应的布局字段设为下拉列表并包含显示/隐藏箭头。编辑您将填充下拉列表的值列表,以显示第二个(读者友好的)列,但存储第一个列值。在布局中缩小字段以仅显示箭头。
对于您希望用户看到的字段(例如Plant_SciName): 使其他布局字段成为编辑框,并在浏览或查找模式下阻止字段输入。但它与上一步中创建的下拉箭头相反,使得看起来像一个字段。
最后,回到第一个字段(仅箭头下拉列表)中,当在下拉列表中选择了用户丑陋(Plant_TSN)值时,编写一个脚本以将用户友好号码(Plant_SciName)推送到编辑框。我使用了下拉格式化字段的OnObjectSave脚本触发器。脚本应该是以下内容:1)冻结窗口,2)转到相关记录(基于查找表3中的关系)设置字段(即编辑框)和4)GotoLayout [原始]以抵消冻结。
可能不是一个完全清楚的解释,但我打赌你会在第三次阅读时得到它!我会发布截图,但我显然需要10个“声望点”。
干杯。