Filter FileMaker Pro--筛选关系不起作用

Filter FileMaker Pro--筛选关系不起作用,filter,relationship,filemaker,Filter,Relationship,Filemaker,我正在尝试构建一个FileMaker Pro 11布局,它排除包含特定值的记录。相关数据见发票表。我想进行筛选,以便“发票检查分组”字段为空的发票记录不会显示在布局上 我在发票表中添加了一个名为“空白发票检查分组”的全局字段,用作我的筛选条件。我已经创建了与发票表的自联接关系,将“发票ID”联接到“发票ID”,并将“发票检查分组”联接到“空白发票检查分组”。生成的表名为“发票检查分组” 我基于表“Invoice Check Groupings”构建的布局显示Invoice中的所有记录——它不会过

我正在尝试构建一个FileMaker Pro 11布局,它排除包含特定值的记录。相关数据见发票表。我想进行筛选,以便“发票检查分组”字段为空的发票记录不会显示在布局上

我在发票表中添加了一个名为“空白发票检查分组”的全局字段,用作我的筛选条件。我已经创建了与发票表的自联接关系,将“发票ID”联接到“发票ID”,并将“发票检查分组”联接到“空白发票检查分组”。生成的表名为“发票检查分组”

我基于表“Invoice Check Groupings”构建的布局显示Invoice中的所有记录——它不会过滤掉那些具有空白值的记录。我做错了什么

谢谢,

Ben

过滤记录的方法有很多,具体取决于您要做什么以及您要向用户显示什么

过滤记录的最常见和最简单的方法是通过列表视图中的简单查找。我不清楚您的问题,但我最好的猜测是您已经在使用列表视图,并且误解了FileMaker的关系和表引用(TO)的工作方式

使用“查找记录”方法进行筛选:

  • 为发票表的任何表引用创建一个新的列表视图布局——很可能您希望使用FileMaker在创建表时为您创建的默认表引用
  • 将要显示在该布局上的字段,包括“发票检查分组”字段
  • 切换到查找模式
  • 在“发票检查分组”字段中输入“*”字符
  • 执行查找
  • 您现在应该看到“发票检查分组”字段不为空的所有发票的列表。(您可以在标题栏的“插入:运算符”下拉列表中找到其他有趣的搜索条件。)


    现在,您可能实际上希望通过门户筛选相关记录,但是,鉴于您已经在发票表的发票索引上设置了自联接,我的猜测是,对于您在主布局中显示的每个发票记录,这最多只能显示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
    


    最后,值得注意的是,门户过滤器并不适用于所有显示情况或计算。您可以完全通过关系图设置类似的过滤器(我相信您已经尝试过了)。这同样适用于通过门户查看记录,但不适用于布局本身显示的记录

    布局显示表中的记录(或者更准确地说,是表引用),而不直接处理相关数据。正如@pft221所提到的,您可以使用关系进行筛选,但仅当通过门户查看数据时

    如果您总是希望特定布局显示基于特定查找的数据,可以使用脚本和脚本触发器来实现。首先设置脚本以执行以下操作:

    Enter Find Mode[]
    Set Field["Invoice Check Grouping"; "*" // Find all records with any data in this field
    Perform Find[]
    
    请注意,您也可以将查找请求嵌入到执行查找脚本步骤中,但我倾向于以上述方式编写查找脚本,因为更容易看到脚本中的查找请求以及可以在查找请求中使用的变量


    现在,您需要设置布局,以便在加载脚本时执行该脚本。转到布局并进入布局模式。从菜单栏中选择布局>布局设置。单击脚本触发器选项卡并选中OnLayoutEnter框,然后选择上面编写的脚本。现在,无论何时输入布局,该脚本都将运行并排除特定字段为空的记录。

    上述答案实际上对Ben的问题没有帮助。它们是变通办法

    我和Ben有同样的问题,我不认为有解决办法,即使是在Filemaker 12中。我认为没有办法定义一个关系,它将忽略匹配字段为空的相关记录

    我想到两个选择: 在特定布局上,门户定义本身具有更细粒度的控制,可以使用它来排除记录 现在,您可以在Filemkaer中使用SQL查询来实现此结果

    Enter Find Mode[]
    Set Field["Invoice Check Grouping"; "*" // Find all records with any data in this field
    Perform Find[]