Table des matières
按段分组报表
固定次序分组报表
多层固定次序分组报表
Maison base de données tutoriel mysql 润乾报表实现预置分组报表及改进

润乾报表实现预置分组报表及改进

Jun 07, 2016 pm 03:59 PM
分组 实现 开发 报表 改进

预置分组报表在报表开发中比较常见而且比较棘手。所谓预置分组报表是指分组没有规律,可能是分组范围没有规律,也可能分组顺序没有规律,需要报表开发人员事先预置(固定)分组的报表。常见的预置分组报表一般有如下三类:按段分组报表、固定次序分组报表、

预置分组报表在报表开发中比较常见而且比较棘手。所谓预置分组报表是指分组没有规律,可能是分组范围没有规律,也可能分组顺序没有规律,需要报表开发人员事先预置(固定)分组的报表。常见的预置分组报表一般有如下三类:按段分组报表、固定次序分组报表、多层固定次序分组报表。下面分别看一下这几类报表的特点,以及润乾报表的实现方法。

按段分组报表

这类报表的特点是分段的区间并未在数据库中存储需要根据相应字段(如年龄、日期)计算,并且每个分段可能会发生变化(如每年节假日所在日期可能不同),经常由用户随意指定。如:统计20-30岁,30-40岁,40-50岁各年龄段的用户数量;每年节假日(春节、端午节、国庆节)期间公路铁路承载的旅客统计。

下面通过实例说明,报表样式如下:

\

该报表是根据订单表统计各(预置)时间段内,各地区的订单数量、订单金额汇总。其中各时间段范围为:

【1996年圣诞前:date

1996年圣诞--1997年国庆:1996-12-25

1997年国庆--1998年五一:1997-10-1

1998年五一以后:date>1998-5-1】

实现

润乾报表实现该类按段分组报表主要使用ds.plot()函数,计算一个值在一个完全划分中的位置。报表模板及其表达式如下:

\

其中,参数arg1为日期组,默认值为:1996-12-25,1997-10-1,1998-5-1。

设置B1显示值表达式:map(to(0,count(arg1)+1),arg2),其中参数arg2为字符串组,默认值为:1996年圣诞前,1996年圣诞--1997年国庆,1997年国庆--1998年五一,1998年五一以后。

使用ds.plot()函数可以非常方便地实现上述报表,而且可以通过该函数的参数控制是否包含边界,对于分组较少并且边界包含规律的分组报表尤其适用。不过,当段界包含不规律时则无法使用ds.plot()实现,比如上例中如果时间范围变成:

【1996年圣诞前:date

1996年圣诞--1997年国庆:1996-12-25

1997年国庆--1998年五一:1997-10-1

1998年五一以后:date>1998-5-1】

起始和结束两段不包含段界日期,而中间的各个分段则包含,ds.plot()函数则存在限制,难以实现这类问题。

固定次序分组报表

这类报表的特点是用户要求分组次序固定,而数据库中并未存储相应的分组字段。如:要统计长三角地区、珠三角地区以及环首都经济圈内客户的订单情况。数据库客户表中只有城市(如:北京、上海、石家庄)和地区(如:华北、东北、华南)字段,如果单纯为该报表在数据库里增加另外一个地区字段显然是不值得的,所以任务自然落到报表端了。

下面通过一个实例来说明使用润乾报表实现这类报表的过程,报表样式如下:

\

要求:

1、 根据源数据中的城市分区分组汇总,其中:

环首都经济圈包括:[北京,天津,张家口,承德,保定,廊坊,唐山,秦皇岛,衡水,沧州,石家庄]

长三角地区包括:[上海,南京,苏州,无锡,常州,镇江,南通,扬州,泰州,杭州,宁波,湖州,嘉兴,绍兴,舟山,台州]

珠三角地区包括:[广州,深圳,珠海,佛山,江门,东莞,中山,惠州,肇庆]

其他城市列为其他地区;

2、报表显示的地区顺序固定,即上图所示顺序显示,这里显然无法通过按字母顺序升降来排序。

实现

该类分组报表主要使用润乾报表的ds.overlap()函数实现,报表模板及其表达式如下:

\

其中,A2的表达式为:

=ds1.overlap(true,城市 in list("北京","天津","张家口","承德","保定","廊坊","唐山","秦皇岛","衡水","沧州","石家庄"),"环首都经济圈",城市 in list("上海","南京","苏州","无锡","常州","镇江","南通","扬州","泰州","杭州","宁波","湖州","嘉兴","绍兴","舟山","台州"),"金三角",城市 in list("广州","深圳","珠海","佛山","江门","东莞","中山","惠州","肇庆"),"珠三角","其他")

可以看到ds.overlap()函数的强大,对于固定的分组以及分组下成员较少的情况尤其适用。但当分组或分组成员过多时,继续使用该函数的可读性就太差了,难于维护;此外,本例中看到的是一层分组,如果要实现多层固定次序分组报表,ds.overlap()函数则无法直接实现。下面看一个例子。

多层固定次序分组报表

再修改一下上例的报表需求,要求按地区和城市分组,且地区和城市的展现顺序固定,如下顺序(没有则不显示):

环首都经济圈包括:[北京,天津,张家口,承德,保定,廊坊,唐山,秦皇岛,衡水,沧州,石家庄]

长三角地区包括:[上海,南京,苏州,无锡,常州,镇江,南通,扬州,泰州,杭州,宁波,湖州,嘉兴,绍兴,舟山,台州]

珠三角地区包括:[广州,深圳,珠海,佛山,江门,东莞,中山,惠州,肇庆]

报表样式如下:

\

该报表由于存在两层固定次序分组(地区、城市),所以无法使用ds.overlap()直接实现,需要先将地区在报表中列出,继而通过ds.overlap()实现,报表模板及其表达式如下:

\

其中,B2、B3、B4表达式分别为:

B2:=ds1.overlap(true,城市=="北京","北京",城市=="天津","天津",城市=="张家口","张家口",城市=="承德","承德",城市=="保定","保定",城市=="廊坊","廊坊",城市=="唐山","唐山",城市=="秦皇岛","秦皇岛",城市=="衡水","衡水",城市=="沧州","沧州",城市=="石家庄","石家庄")

B3:=ds1.overlap(true,城市=="上海","上海",城市=="南京","南京",城市=="苏州","苏州",城市=="无锡","无锡",城市=="常州","常州",城市=="镇江","镇江",城市=="南通","南通",城市=="扬州","扬州",城市=="泰州","泰州",城市=="杭州","杭州",城市=="宁波","宁波",城市=="湖州","湖州",城市=="嘉兴","嘉兴",城市=="绍兴","绍兴",城市=="舟山","舟山",城市=="台州","台州")

B4:=ds1.overlap(true,城市=="广州","广州",城市=="深圳","深圳",城市=="珠海","珠海",城市=="佛山","佛山",城市=="江门","江门",城市=="东莞","东莞",城市=="中山","中山",城市=="惠州","惠州",城市=="肇庆","肇庆")

可以看到,对于多层固定次序分组报表润乾报表也是可以实现的,只是表达式相对复杂,当(地区)分组较多的时候,这种实现的代价会相对较高。

对于上述三类预置分组报表,润乾报表均可以实现,有些做起来也很简单,这也是润乾报表的强大之处(其它报表工具将会更为困难)。但对于一些更复杂的情况,无论是边界包含无规律、表达式过于复杂,还是多层预置分组难于实现,使用润乾报表解决起来就都不那么轻松了。究其原因,是因为报表工具把数据源准备和呈现混在一起导致(需要在报表模板中编写大量复杂计算逻辑),如果能将这两部分分开,则会使报表制作变得清晰、简单。

为解决这些问题,润乾公司对润乾报表进行了完善,推出润乾集算报表5.0版,在保留了润乾报表已有优势后,还在其中内置了独立的计算引擎:集算器,用于解决数据源准备问题。在集算报表中可以将复杂的数据计算(数据源准备)工作交由集算器完成,可将其视为报表的计算层;而报表本身只负责接收计算结果后进行展现(有时包括一些简单计算),从而将数据源准备和报表呈现分开,使得报表制作更为清晰。

下面用集算报表再实现上述三个例子:

按段分组报表

与润乾报表实现时不同之处在于,这里考虑边界无规律的情况,即:

【1996年圣诞前:date

1996年圣诞--1997年国庆:1996-12-25

1997年国庆--1998年五一:1997-10-1

1998年五一以后:date>1998-5-1】

起始和结束两段不包含段界日期,而中间的各个分段则包含。

编写计算脚本

首先使用集算器编写计算脚本,完成分组并返回分组汇总结果:

\

A2:按照arg1指定的分段进行分组A1:取出订单明细表数据

A3:再按照地区分组,并进行分组汇总计算订单数量和订单金额

A5:为结果集增加时间段字段,即每个分段的显示名称,如:“1996年圣诞前”、“1998年五一以后”

A6:为报表返回的ResultSet

报表调用

使用集算报表设计器,新建报表,使用“集算器”数据集类型,选择上面编辑好的集算脚本(按段分组.dfx):

\

 其中,arg1、arg2为集算脚本参数,param1和param2为报表参数。

设置报表模板及其表达式如下:

\

 在报表中只进行简单的分组汇总,即可完成报表的制作。

使用集算报表实现的最大好处是灵活,无论段界包含与否,均可以使用P.enum()函数实现。所以这里看到,在集算报表中将数据准备(集算脚本)和报表呈现(报表模板)分开带来的好处,在计算层通过集算器完备的计算体系完成数据源准备的工作,在展现层通过报表模板专司展现,层次清晰、实现简单。

下面给出剩余两类报表的实现方法,其他不再赘述。

固定次序分组报表

编写集算脚本

\ A8:按照预置地区顺序对位分组,保证地区顺序满足要求A6:增加地区字段,并在A9中根据城市判断并填充地区信息

A9:计算各组汇总值

A10:为报表返回结果集

报表调用

\

设置报表模板及表达式

\

相对润乾报表的实现,在集算报表中可以逐步(分步编写代码)实现,从而避免过于冗长的表达式带来的编写和维护问题;而且集算器对集合运算的有效支持使得实现更加简单,如这里通过P.align()函数对订单数据按照固定顺序的地区集合进行对位分组,继而完成汇总的代码就体现了对集合运算支持的有效性和简单性。无论对于开发实现,还是后期报表维护都非常容易。

多层固定次序分组报表

编写计算脚本

\ 在A8中按照指定的城市顺序排序(此时地区也已有序),最后通过A9将排序后的结果集(明细数据)返回给报表。

报表调用

\

设置报表模板及表达式

\

本例则进一步体现了集算报表中内置的集算器的强大计算能力,对于无法直接在报表工具中完成的多层固定顺序的分组计算,在集算器中通过前面提到的灵活、分步以及本例中完备的计算能力等特点,使实现变得非常简单。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Grow A Garden - Guide de mutation complet
4 Il y a quelques semaines By DDD
<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Système de fusion, expliqué
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1677
14
Tutoriel PHP
1280
29
Tutoriel C#
1257
24
Quatre outils de programmation assistés par IA recommandés Quatre outils de programmation assistés par IA recommandés Apr 22, 2024 pm 05:34 PM

Cet outil de programmation assistée par l'IA a mis au jour un grand nombre d'outils de programmation assistée par l'IA utiles à cette étape de développement rapide de l'IA. Les outils de programmation assistés par l'IA peuvent améliorer l'efficacité du développement, améliorer la qualité du code et réduire les taux de bogues. Ils constituent des assistants importants dans le processus de développement logiciel moderne. Aujourd'hui, Dayao partagera avec vous 4 outils de programmation assistés par l'IA (et tous prennent en charge le langage C#). J'espère que cela sera utile à tout le monde. https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot est un assistant de codage IA qui vous aide à écrire du code plus rapidement et avec moins d'effort, afin que vous puissiez vous concentrer davantage sur la résolution de problèmes et la collaboration. Git

Comment mettre en œuvre la double connexion WeChat sur les téléphones mobiles Huawei ? Comment mettre en œuvre la double connexion WeChat sur les téléphones mobiles Huawei ? Mar 24, 2024 am 11:27 AM

Comment mettre en œuvre la double connexion WeChat sur les téléphones mobiles Huawei ? Avec l’essor des réseaux sociaux, WeChat est devenu l’un des outils de communication indispensables dans la vie quotidienne des gens. Cependant, de nombreuses personnes peuvent rencontrer un problème : se connecter à plusieurs comptes WeChat en même temps sur le même téléphone mobile. Pour les utilisateurs de téléphones mobiles Huawei, il n'est pas difficile d'obtenir une double connexion WeChat. Cet article explique comment obtenir une double connexion WeChat sur les téléphones mobiles Huawei. Tout d'abord, le système EMUI fourni avec les téléphones mobiles Huawei offre une fonction très pratique : l'ouverture d'une double application. Grâce à la fonction de double ouverture de l'application, les utilisateurs peuvent simultanément

Guide de programmation PHP : méthodes pour implémenter la séquence de Fibonacci Guide de programmation PHP : méthodes pour implémenter la séquence de Fibonacci Mar 20, 2024 pm 04:54 PM

Le langage de programmation PHP est un outil puissant pour le développement Web, capable de prendre en charge une variété de logiques et d'algorithmes de programmation différents. Parmi eux, l’implémentation de la séquence de Fibonacci est un problème de programmation courant et classique. Dans cet article, nous présenterons comment utiliser le langage de programmation PHP pour implémenter la séquence de Fibonacci et joindrons des exemples de code spécifiques. La suite de Fibonacci est une suite mathématique définie comme suit : le premier et le deuxième élément de la suite valent 1, et à partir du troisième élément, la valeur de chaque élément est égale à la somme des deux éléments précédents. Les premiers éléments de la séquence

Quel programmeur IA est le meilleur ? Explorez le potentiel de Devin, Tongyi Lingma et de l'agent SWE Quel programmeur IA est le meilleur ? Explorez le potentiel de Devin, Tongyi Lingma et de l'agent SWE Apr 07, 2024 am 09:10 AM

Le 3 mars 2022, moins d'un mois après la naissance de Devin, le premier programmeur d'IA au monde, l'équipe NLP de l'Université de Princeton a développé un agent SWE pour programmeur d'IA open source. Il exploite le modèle GPT-4 pour résoudre automatiquement les problèmes dans les référentiels GitHub. Les performances de l'agent SWE sur l'ensemble de tests du banc SWE sont similaires à celles de Devin, prenant en moyenne 93 secondes et résolvant 12,29 % des problèmes. En interagissant avec un terminal dédié, SWE-agent peut ouvrir et rechercher le contenu des fichiers, utiliser la vérification automatique de la syntaxe, modifier des lignes spécifiques et écrire et exécuter des tests. (Remarque : le contenu ci-dessus est un léger ajustement du contenu original, mais les informations clés du texte original sont conservées et ne dépassent pas la limite de mots spécifiée.) SWE-A

Apprenez à développer des applications mobiles en utilisant le langage Go Apprenez à développer des applications mobiles en utilisant le langage Go Mar 28, 2024 pm 10:00 PM

Didacticiel d'application mobile de développement du langage Go Alors que le marché des applications mobiles continue de croître, de plus en plus de développeurs commencent à explorer comment utiliser le langage Go pour développer des applications mobiles. En tant que langage de programmation simple et efficace, le langage Go a également montré un fort potentiel dans le développement d'applications mobiles. Cet article présentera en détail comment utiliser le langage Go pour développer des applications mobiles et joindra des exemples de code spécifiques pour aider les lecteurs à démarrer rapidement et à commencer à développer leurs propres applications mobiles. 1. Préparation Avant de commencer, nous devons préparer l'environnement et les outils de développement. tête

Comment implémenter la fonction de clonage WeChat sur les téléphones mobiles Huawei Comment implémenter la fonction de clonage WeChat sur les téléphones mobiles Huawei Mar 24, 2024 pm 06:03 PM

Comment mettre en œuvre la fonction de clonage WeChat sur les téléphones mobiles Huawei Avec la popularité des logiciels sociaux et l'importance croissante accordée à la confidentialité et à la sécurité, la fonction de clonage WeChat est progressivement devenue le centre d'attention. La fonction de clonage WeChat peut aider les utilisateurs à se connecter simultanément à plusieurs comptes WeChat sur le même téléphone mobile, ce qui facilite la gestion et l'utilisation. Il n'est pas difficile de mettre en œuvre la fonction de clonage WeChat sur les téléphones mobiles Huawei. Il vous suffit de suivre les étapes suivantes. Étape 1 : Assurez-vous que la version du système de téléphonie mobile et la version de WeChat répondent aux exigences. Tout d'abord, assurez-vous que la version de votre système de téléphonie mobile Huawei a été mise à jour vers la dernière version, ainsi que l'application WeChat.

Découvrez comment Golang offre des possibilités de développement de jeux Découvrez comment Golang offre des possibilités de développement de jeux Mar 16, 2024 pm 12:57 PM

Dans le domaine actuel du développement logiciel, Golang (langage Go), en tant que langage de programmation efficace, concis et hautement simultané, est de plus en plus favorisé par les développeurs. Sa riche bibliothèque de normes et ses fonctionnalités de concurrence efficaces en font un choix de premier plan dans le domaine du développement de jeux. Cet article explorera comment utiliser Golang pour le développement de jeux et démontrera ses puissantes possibilités à travers des exemples de code spécifiques. 1. Avantages de Golang dans le développement de jeux. En tant que langage typé statiquement, Golang est utilisé dans la construction de systèmes de jeux à grande échelle.

Guide de mise en œuvre des exigences du jeu PHP Guide de mise en œuvre des exigences du jeu PHP Mar 11, 2024 am 08:45 AM

Guide d'implémentation des exigences du jeu PHP Avec la popularité et le développement d'Internet, le marché des jeux Web devient de plus en plus populaire. De nombreux développeurs espèrent utiliser le langage PHP pour développer leurs propres jeux Web, et la mise en œuvre des exigences du jeu constitue une étape clé. Cet article explique comment utiliser le langage PHP pour implémenter les exigences courantes du jeu et fournit des exemples de code spécifiques. 1. Créer des personnages de jeu Dans les jeux Web, les personnages de jeu sont un élément très important. Nous devons définir les attributs du personnage du jeu, tels que le nom, le niveau, la valeur de l'expérience, etc., et fournir des méthodes pour les exploiter.

See all articles