我正在尝试创建一个可以使用输入的搜索功能: 1.搜索表 2.此表的列,其中将运行搜索 3.要在2
中指定的列中搜索的值该函数如下所示:
( mTbl as table, mColName as text, mColValue as text) =>
let
Source = mTbl,
FilteredTable = Table.SelectRows(Source, each ([ mColName ] = mColValue )),
Result = List.Count(FilteredTable[ mColName ])
in
Result
但它会导致错误:
Expression.Error:找不到表的列'mColName'。 细节: mColName
有什么建议吗? 非常感谢提前
答案 0 :(得分:4)
[mColName]之类的字段引用从不是动态的,因此代码将尝试使用名称为" mColName&#34 ;;的字段。它不会被参数mColName中的字符串替换。
相反,您可以使用:Table.Column(Source,mColName)
答案 1 :(得分:2)
我也有同样的需求,但是Table.Columns(Source,mColName)无法正常工作,因为这将返回一个列表。在我的问题中,我需要过滤作为表返回的列。
我解决了以下问题:
( mTbl as table, mColName as text, mColValue as text) =>
let
Source = mTbl,
Result = Table.SelectRows(Source, each (Record.Field(_, mColName) = mColValue ))
in
Result
答案 2 :(得分:0)
另一种可能的解决方案是将您的列重命名为函数内部已知的名称。因此,在SelectRows函数中将不需要动态列名称:
( mTbl as table, mColName as text, mColValue as text) =>
let
Source = mTbl,
SortColumnName = "XXXXX",
Renamed = Table.RenameColumns(Source, {{mColName , SortColumnName}}),
FilteredTable = Table.SelectRows(Renamed, each ([XXXXX] = mColValue)),
Result = List.Count(FilteredTable[SortColumnName])
in
Result