水晶报告13标准偏差与公式字段



我一直在研究别人使用StDev函数制作的报告。我认为这足够简单,但是数据可以包含每个记录的多个值,因此有if语句用于确定从每个记录获取哪个值。我已经导出了一个表到Excel,其中包含一个值每条记录(一个应该在StDev中使用),然后计算那里的SD提供检查。

报告和Excel给我的值非常不同:(

所以,我要回到报告并使用一些额外的公式字段来计算SD长手作为一种决定性的投票(祈祷它不会产生第三组值…)。

我已经解决了语法错误,但我仍然得到一个运行时错误-"除零",然后突出显示下面指示的代码部分…

我的公式字段是:

{@StDevArrayPopulate} -在详细信息部分

NumberVar Array varStDevArray;
NumberVar varStDevArrayCount;
varStDevArray [varStDevArrayCount] := {ValueToSummarise};
varStDevArrayCount := varStDevArrayCount + 1;

{@ stdevarraycompute} -在组页脚

NumberVar Array varStDevArray;
NumberVar varCounter :=1;
NumberVar varMean := 0;
NumberVar varStDev := 0;
NumberVar varStDevArrayCount;
// START OF MEAN
// Sum of all of the values in the array
for varCounter:= 1 to varStDevArrayCount step 1 do
(
    varMean := varMean + varStDevArray [varStDevArrayCount];
);
// Divide by the total number of values in the array
varMean := varMean / varStDevArrayCount;  // !! This is the line that highlights after the error message !!
// END OF MEAN
// START OF STANDARD DEVIATION
// Subtract the mean from each value in the array and square the result
for varCounter := 1 to varStDevArrayCount step 1 do
(
    varStDevArray[varStDevArrayCount] := (varStDevArray [varStDevArrayCount] - varMean) * (varStDevArray [varStDevArrayCount] - varMean);
);
// Sum of all of the values in the array
for varCounter:= 1 to varStDevArrayCount step 1 do
(
    varStDev := varStDev + varStDevArray [varStDevArrayCount];
);
// Divide by the total number of values in the array
varStDev := varStDev / varStDevArrayCount;
// Square root of mean of differences
varStDev := Sqr(varStDev)
// END OF STANDARD DEVIATION

{@ stdevarraycompute} -在组页脚

NumberVar varMean;
NumberVar varStDev;
"The mean is " & varMean & ", and the standard deviation is " & varStDev & "."

我试过使用一个总运行字段,但这是给错误,因为它需要计数的第一个记录之前填充公式字段运行。我还尝试在头中添加第四个字段,将varStDevArrayCount初始化为1。

有人有什么建议吗?

看起来没有详细记录,因此你在数组中得到零…我不认为用1初始化会有什么不同,而是像下面这样做一个小的改变,然后检查。

if varStDevArrayCount=0
then
varMean :=varMean 
else
varMean := varMean / varStDevArrayCount;

我建议你先详细检查记录,然后再调试

相关内容

  • 没有找到相关文章

最新更新