gpt4 book ai didi

delphi - 快速报告中的独特计数

转载 作者:行者123 更新时间:2023-12-03 18:40:06 24 4
gpt4 key购买 nike

有谁知道如何在fastreport中做出独特的计数?

我有报告:

 Name   sex
João m
João m
Maria f


在正常计数中,结果将为3,但是我想要一个仅采用不重复字段名的行数的结果。
在这种情况下,结果将为2。
谁能帮我?这只是一个例子。
我无法在SQL中进行分组,因为我有多个字段。

最佳答案

我不熟练使用FastReport,但是在FastReport的官方论坛上找到了this page

我认为您可以通过根据情况调整示例来更改示例(请注意,语法可能需要进行一些调整)。

乐队:

GroupHeader1 <Sex> 
MasterData1 [Name, Sex, ...]
GroupFooter1 [GetDistinctCount]


脚本(仅适用于按字段排序的数据集进行计数):

var 
LastValue : string;
DistinctCount : integer;

//create this event by double-clicking the event from the Object Inspector
procedure OnGroupHeader1.OnBeforePrint;
begin
if LastValue <> (<Datasetname."Sex">) then
Inc(DinstinctCount);

LastValue := <Datasetname."Sex">
end;

function GetDistinctCount: string;
begin
Result := IntToStr(DistinctCount);
end;


基本思想是,每次字段值更改时, DistinctCount变量都会增加。

脚本(也应与未排序的数据集一起使用):

var 
FoundValues : array of string;


(* !!IMPORTANT!!
You need to initialize FoundValues array before to start counting: *)
SetLength(FoundValues, 0);


function IndexOf(AArray : array of string; const AValue : string) : integer;
begin
Result := 0;
while(Result < Length(AArray)) do
begin
if(AArray[Result] = AValue) then
Exit;
Inc(Result);
end;
Result := -1;
end;

//create this event by double-clicking the event from the Object Inspector
procedure OnGroupHeader1.OnBeforePrint;
begin
if(IndexOf(FoundValues, <Datasetname."Sex">) = -1) then
begin
SetLength(FoundValues, Length(FoundValues) + 1);
FoundValues[Length(FoundValues) - 1] := <Datasetname."Sex">;
end;
end;

function GetDistinctCount: string;
begin
Result := IntToStr(Length(FoundValues));
end;


基本思想是将找到的每个不同值添加到 FoundValues数组中。

关于delphi - 快速报告中的独特计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45735181/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com