我正在尝试构建一个排除包含特定值的记录的FileMaker Pro 11布局。相关数据在表Invoice中。我想过滤,以便“发票检查分组”字段为空白的发票记录不会显示在布局上。
我在发票表中添加了一个名为“空白发票检查分组”的全局字段,以用作我的过滤条件。我已经创建了与发票表的自我加入关系,将“发票ID”加入“发票ID”并将“发票检查分组”加入“空白发票检查分组”。结果表名为“发票检查分组”。
我根据表“发票检查分组”构建的布局显示了Invoice中的所有记录 - 它不会过滤掉具有空值的那些记录。我做错了什么?
谢谢,
本
答案 0 :(得分:2)
布局显示表中的记录(或更准确地说,表格出现)并且不直接处理相关数据。正如@ pft221所述,您可以使用关系进行过滤,但仅限于通过门户网站查看数据时。
如果您始终希望特定布局基于特定查找显示数据,则可以使用脚本和脚本触发器来执行此操作。首先设置一个脚本来执行以下操作:
Enter Find Mode[]
Set Field["Invoice Check Grouping"; "*" // Find all records with any data in this field
Perform Find[]
请注意,您还可以在“执行查找”脚本步骤中嵌入查找请求,但我倾向于以上述方式编写脚本,因为更容易查看脚本中的查找请求,并且可以在查找中使用变量请求。
现在您需要设置布局,以便在加载时执行此脚本。转到布局并进入布局模式。从菜单栏中选择“布局”>“布局设置”。单击“脚本触发器”选项卡,选中“OnLayoutEnter”框,然后选择上面编写的脚本。现在,只要输入布局,该脚本就会运行并排除那个特定字段为空的记录。
答案 1 :(得分:0)
有许多方法可以过滤记录,具体取决于您尝试执行的操作以及您尝试为用户显示的内容。
您可以过滤记录的最常见和最简单的方法是通过列表视图中的简单查找。我不清楚你的问题,但我最好的猜测是你已经在使用列表视图并且误解了FileMaker的关系和表的出现(TO)是如何工作的。
使用“查找记录”方法进行过滤:
您现在应该看到“发票检查分组”字段不为空的所有发票清单。 (您可以在标题栏的“插入:操作员”下拉列表中找到其他有趣的搜索条件。)
现在你可能真的希望通过门户网站过滤相关记录,但是,鉴于你已经在Invoice表上的Invoice索引上设置了一个自联接,我的猜测是,最多只能显示0或者您在主布局中显示的每张发票记录的1条记录。
使用“门户网站过滤器”方法过滤记录:
但是,我们假设您有一个客户表,您只希望看到具有非空白“发票检查分组”值的记录。表格设置如下:
Client
Client ID
[... other client info ...]
Invoice
Invoice ID
Client ID
Invoice Check Grouping
[... other invoice info ...]
在关系图中有关系:
Client::Client ID ------< Invoice::Client ID
从那里,您将在客户端TO上设置表单布局,并创建一个显示Invoice TO记录的门户。从门户选项中,您可以选择“过滤门户记录”并使用类似于以下公式:
not IsEmpty(Invoice::Invoice Check Grouping)
最后,值得注意的是门户过滤器并不适合所有显示情况或计算。您可以通过关系图完全设置类似的过滤器(我相信您已经尝试过这样做。)这将再次用于通过门户查看记录,但不能用于布局本身显示的记录。
答案 2 :(得分:0)
上面的答案实际上并没有帮助Ben解决他的问题。他们是解决方法。
我和Ben有同样的问题,我认为现在甚至在Filemaker 12中都没有解决方案。我认为没有办法定义一个关系,它会省略匹配字段为空的相关记录
有两种选择: 在特定布局上,您可以在门户网站定义本身中进行更细粒度的控制,并可以使用它来排除记录 您现在可以使用SQL查询在Filemkaer中实现此结果。