首页 文章

FileMaker Pro - 过滤关系不起作用

提问于
浏览
0

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

我在发票表中添加了一个名为“空白发票检查分组”的全局字段,以用作我的过滤条件 . 我已经创建了与发票表的自我加入关系,将“发票ID”加入“发票ID”并将“发票检查分组”加入“空白发票检查分组” . 结果表名为“发票检查分组” .

我根据表“发票检查分组”构建的布局显示了发票中的所有记录 - 它不会过滤掉具有空白值的那些记录 . 我做错了什么?

谢谢,

3 回答

  • 0

    布局显示表中的记录(或更准确地说,表格出现)并且不直接处理相关数据 . 正如@ pft221所述,您可以使用关系进行过滤,但仅限于通过门户网站查看数据时 .

    如果您始终希望特定布局基于特定查找显示数据,则可以使用脚本和脚本触发器来执行此操作 . 首先设置一个脚本来执行以下操作:

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

    请注意,您还可以在“执行查找”脚本步骤中嵌入查找请求,但我倾向于以上述方式编写脚本,因为更容易查看脚本中的查找请求,并且可以在查找请求中使用变量 .

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

  • 2

    有许多方法可以过滤记录,具体取决于您尝试执行的操作以及您尝试为用户显示的内容 .

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

    To Filter with the "Find Records" method:

    • 为您的发票表的任何表出现创建新的列表视图布局 - 您很可能希望使用FileMaker在创建表时为您创建的默认表出现 .

    • 放置要在该布局上显示的字段,包括"Invoice Check Grouping"字段 .

    • 切换到查找模式

    • 将'*'字符放入"Invoice Check Grouping"字段

    • 执行查找

    您现在应该看到“发票检查分组”字段不为空的所有发票的列表 . (您可以在 Headers 栏的“插入:操作员”下拉列表中找到其他有趣的搜索条件 . )


    现在你实际上可能正在寻找通过门户网站过滤相关记录但是,鉴于你已经在Invoice表上的Invoice索引上设置了一个自联接,我的猜测是,最好,这将显示0或1条记录对于您在主布局中显示的每个发票记录 .

    To Filter Records with the "Portal Filter" method:

    但是,我们假设您有一个Client表,您只希望看到具有非空白“Invoice Check Grouping”值的记录 . 表格设置如下:

    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)
    

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

  • 0

    上面的答案实际上并没有帮助Ben解决他的问题 . 他们是解决方法 .

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

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

相关问题