关于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