【问题标题】:Combining rows from multiple sources in Virtual list Filemaker在虚拟列表 Filemaker 中组合来自多个源的行
【发布时间】:2020-07-21 19:19:11
【问题描述】:

我正在尝试使用虚拟列表作为数据源在 Filemaker 中制作类似 Excel 的“数据透视表”。问题是我希望能够在第一列中包含未修复的“类别”。字段名称不起作用。

我目前的想法是创建一个包含布局名称和类别字段的表,我将通过 ExecuteSQL(或其他函数)将其与其余数据结合起来。

我可以让它与两个 ExecuteSQL 语句一起工作,一个用于类别,一个用于“批量”数据,使用 eSQL 类别中的 WHERE 文本,然后我将它们组合成一个,然后我就设置好了.

我的问题是我希望能够使用get(LayoutName) 函数获取类别,从而使脚本更加灵活。每当我在 SQL 的 WHERE 行中使用 get(LayoutName) 时,我都会得到一个 ?为结果。我还尝试使用 get(LayoutName) 将布局名称放入字段中,然后像在 WHERE 语句中一样使用该字段,但这也会返回错误。

我承认我在这方面有点新手,所以问题可能出在键盘和椅子之间,有一个简单的语法错误。我尝试了很多不同的方式,有引号、无引号、单引号等。

这是我用来提取类别的内容...

替换(ExecuteSQL("SELECT Category_List FROM 分类_VL WHERE Layout_Name = Get(LayoutName)" ; "" ; "") ; ", " ; $$delim )

所有字段名称都是正确的,如果我将 LayoutName 更改为与我想要的 Layout_Name 字段匹配的文本,它可以正常工作。

如果我太罗嗦了,我深表歉意,但我认为更多信息比回答一堆问题要好,因为我忘记了一些东西!

TIA!

【问题讨论】:

    标签: filemaker execute-sql-task virtuallistview


    【解决方案1】:

    我很难理解你的问题。我希望我正在解决正确的问题。

    您不能在 SQL 查询中使用 Filemaker 函数。要查找 Layout_Name 字段等于当前布局名称的记录,您的查询应该是:

    SELECT Category_List 
    FROM Categories_VL 
    WHERE Layout_Name = ?
    

    然后您将提供当前布局的名称作为参数

    ExecuteSQL ( "SELECT Category_List FROM Categories_VL WHERE Layout_Name = ?" ; "" ; "" ; Get ( LayoutName ) ) 
    

    请注意,您可以在 ExecuteSQL() 函数本身中指定自己的字段和行分隔符,而不是替换默认分隔符,例如:

    ExecuteSQL ( "SELECT Category_List FROM Categories_VL WHERE Layout_Name = ?" ; $$delim ; "" ; Get ( LayoutName ) ) 
    

    见:https://help.claris.com/en/pro-help/#page/FMP_Help%2Fexecutesql.html%23

    【讨论】:

    • 感谢您的回答。解决了它。我不知道'?在 WHERE 语句中。我看到的大多数示例都只是将纯文本作为 WHERE 的条件。再次感谢。
    • @Mr.Ected 不客气。我觉得有必要补充一点,根据布局名称进行选择并不是一个好习惯。如果您重命名布局,它将中断。如果您希望脚本在不同的布局上表现不同,请让每个布局使用不同的脚本参数调用它。
    猜你喜欢
    • 2018-05-09
    • 2020-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多