ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-05-08 09:33:52  阅读:184  来源: 互联网

标签:begin end FFuncValues Double StringGrid FAST Values Counts Null


问题原因是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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有