我的电源应用程序中有一个组合框和一个图库。我想对组合框中选定的值进行分组。 这不起作用,因为 Groupby 函数需要文本文字作为第二个参数。 GroupBy(表名;ComboBox1.Selected;"分组")
有谁知道如何解决这个问题吗?
我还没有找到将 ComboBox.Selected.Value 转换为 String 的函数。
GroupBy 不能采用任意字符串值,因为它需要知道何时写入表达式(而不是何时执行)将对哪些列进行分组,因为它将定义其结果的 schema(类型)。
例如,如果我们有这个集合:
ClearCollect(
CoffeeShops,
{ Country: "USA", StateOrProvince: "WA", City: "Seattle", NumberOfCoffeeShops: 153 },
{ Country: "USA", StateOrProvince: "WA", City: "Bellevue", NumberOfCoffeeShops: 34 },
{ Country: "USA", StateOrProvince: "WA", City: "Spokane", NumberOfCoffeeShops: 27 },
{ Country: "USA", StateOrProvince: "NY", City: "New York City", NumberOfCoffeeShops: 236 },
{ Country: "USA", StateOrProvince: "NY", City: "Albany", NumberOfCoffeeShops: 15 },
{ Country: "USA", StateOrProvince: "NY", City: "Rochester", NumberOfCoffeeShops: 30 },
{ Country: "Canada", StateOrProvince: "BC", City: "Vancouver", NumberOfCoffeeShops: 98 },
{ Country: "Canada", StateOrProvince: "BC", City: "Burnaby", NumberOfCoffeeShops: 10 },
{ Country: "Canada", StateOrProvince: "ON", City: "Toronto", NumberOfCoffeeShops: 105 },
{ Country: "Canada", StateOrProvince: "ON", City: "Windsor", NumberOfCoffeeShops: 20 })
GroupBy(CoffeeShops, "Country", "Grouped")
结果的模式是一个包含 2 列的表:“Country”(文本类型)和“Grouped”(表类型,包含“StateOrProvince”和“NumberOfCoffeeShops”列)。
与
GroupBy(CoffeeShops, "StateOrProvince", "Grouped")
结果的架构相比,是一个包含 2 列的表:“StateOrProvince”(文本类型)和“Grouped”(表类型,包含“Country”和“NumberOfCoffeeShops”列)。
这种语言的“强类型”允许应用程序使用该表达式作为图库的 Items 属性,并在第一种情况下引用
ThisItem.Country
或 Sum(ThisItem.Grouped, NumberOfCoffeeShops)
- 在第二种情况下,它将不起作用(没有 ThisItem.Country)。
如果您事先了解所有选项,则可以使用一些表整形函数将两个 GroupBy 调用的结果转换为通用模式,以便您能够使用它。例如,使用类似于以下的表达式:
Switch(
ComboBox1.Selected.Value,
"Country",
RenameColumns(
GroupBy(CoffeeShops, "Country", "Grouped"),
"Country", "GroupValue"),
"StateOrProvince",
RenameColumns(
GroupBy(CoffeeShops, "StateOrProvince", "Grouped"),
"StateOrProvince", "GroupValue"))
此表达式的结果是一个表,其中包含一个名为“GroupValue”的列和一个名为“Grouped”的列。这样我就可以使用带有两个标签的画廊:
ComboBox1.Selected.Value & ": " & ThisItem.GroupValue
"Total of coffee places: " & Sum(ThisItem.Grouped, NumberOfCoffeeShops)
看起来有点像下图:
或者选择其他选项: