Forum Discussion
Use a field name as a parameter
I want to have a dynamic function that uses many names as a field name.
GetRowData = (table, RowIter, ColumnName) =>
let
end = table{RowIter}[ColumnName] //This line searches for "ColumnName" as a field name. How do I make this dynamic and use the parameter?
in
end;
- Anonymous4 years ago
This works:
(tableName as table, RowIter as number, columnName as text) =>
let
end = Record.Field(tableName{RowIter}, columnName)
in
end
"table' is a protected word, so you can't use that as a parameter name. Anyway, this will result in the single value of whatever is in that field (as opposed to returning a record or a table or a list value).
--Nate
3 Replies
- AnonymousNot applicable
This works:
(tableName as table, RowIter as number, columnName as text) =>
let
end = Record.Field(tableName{RowIter}, columnName)
in
end
"table' is a protected word, so you can't use that as a parameter name. Anyway, this will result in the single value of whatever is in that field (as opposed to returning a record or a table or a list value).
--Nate
- AnonymousNot applicable
Or I guess you said you need the field name:
(tableName as table, RowIter as number, columnName as text) =>
let
end = List.Select(Record.FieldNames(tableName{RowIter}), each _ = columnName)
in
end{0}
Doing it this way though, you are probably add MissingField.Ignore somewhere in there, in case your fields aren't avaliable.
--Nate
- v-jingzhangCommunity Support
Anonymous 's solution should work. Have you tried that? If it's not what you want, can you clarify more about your requirement?
Best Regards,
Community Support Team _ Jing