其他分享
首页 > 其他分享> > 关于FAST Report 6 交叉报表显示带中文的StringGrid报UnicodeString 不能转换为 Double的错误解决方法

关于FAST Report 6 交叉报表显示带中文的StringGrid报UnicodeString 不能转换为 Double的错误解决方法

作者:互联网

问题原因是FastReport实例中,Cross组件的合计项未关闭,双击“frxReport1”进入如下图所示编辑界面:

编辑Cross1组件,Cell 选择  无,即可解决。

 

 

 

问题的跟踪:

通过跟踪源代码,发现报错的函数为  frxCross下的 AddFuncValues,当执行到 cfSum:时,如内容含有中文,那么  h.FFuncValues[i] := h.FFuncValues[i] + Values[i]; 这一语句中 Values[i] 做隐式转换时将报错。

procedure TfrxCrossHeader.AddFuncValues(const Values, Counts: array of Variant;
const CellFunctions: array of TfrxCrossFunction);
var
i: Integer;
h: TfrxCrossHeader;
begin
{ add aggregate values for this cell and all its parent cells }
h := Self;

while h <> nil do
begin
for i := 0 to FCellLevels - 1 do
if Values[i] <> Null then
case CellFunctions[i] of
cfNone:;

cfSum:
h.FFuncValues[i] := h.FFuncValues[i] + Values[i];

cfMin:
if (h.FFuncValues[i] = Null) or (Values[i] < h.FFuncValues[i]) then
h.FFuncValues[i] := Values[i];

cfMax:
if (h.FFuncValues[i] = Null) or (Values[i] > h.FFuncValues[i]) then
h.FFuncValues[i] := Values[i];

cfAvg:
begin
h.FFuncValues[i] := h.FFuncValues[i] + Values[i];
h.FCounts[i] := h.FCounts[i] + Counts[i];
end;

cfCount:
h.FFuncValues[i] := h.FFuncValues[i] + Values[i];// + Counts[i];
end;

h := h.Parent;
end;
end;

 

标签:begin,end,FFuncValues,Double,StringGrid,FAST,Values,Counts,Null
来源: https://www.cnblogs.com/sunshineCS/p/16244831.html