问题描述
我目前正在制作一个电源应用程序,学生应该能够在其中输入他们的成绩。我目前正在研究显示平均值的函数,但遇到了无法在 ForAll() 中使用 Set() 的问题。我有画廊的所有平均成绩。
Set(sum,0);
Set(weight,0);
ForAll(
Gradegallery.AllItems,sum = sum + ThisRecord.Note * ThisRecord.Gewichtung;
weight = weight + ThisRecord.Gewichtung;
);
Set(average,sum / weight)
解决方法
Power Apps 的语言 (Power Fx) 是其核心,是一种声明性(函数式)语言,而不是命令式语言:虽然有一些方法可以进行命令式计算,但如果您避免使用它们,您将获得平台的最佳效果。在这种情况下,您可以使用以下表达式来计算画廊项目的平均值:
Sum(GradeGallery.AllItems,ThisRecord.Note * ThisRecord.Gewichtung) /
Sum(GradeGallery.AllItems,ThisRecord.Gewichtung)
请注意,如果图库中没有项目,这可能会导致除以零,因此您可以使用类似下面的表达式来避免这种情况:
With(
{ all: GradeGallery.AllItems },If(
CountRows(all) = 0,Sum(all,Note * Gewichtung) / Sum(all,Gewichtung)))