文档章节

TClientDataSet[10]: 简单统计

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 457
阅读 4
收藏 0
点赞 0
评论 0

//先在窗体上放置 ClientDataSet1、Button1 然后:

{ 建表 }
procedure TForm1.FormCreate(Sender: TObject);
begin
  with ClientDataSet1 do begin
    { 定义表 }
    FieldDefs.Add('班级', ftWideString, 4);
    FieldDefs.Add('姓名', ftWideString, 8);
    FieldDefs.Add('年龄', ftByte);
    FieldDefs.Add('语文成绩', ftFloat);
    FieldDefs.Add('数学成绩', ftFloat);
    { 建立表 }
    CreateDataSet;
    { 添加 18 条测试数据 }
    AppendRecord(['一班', '赵钱', 8, 81, 98]);
    AppendRecord(['一班', '孙李', 9]);         { 假如他没有成绩 }
    AppendRecord(['一班', '周吴', 8, 82, 97]);
    AppendRecord(['三班', '郑王', 9, 83, 96]);
    AppendRecord(['三班', '冯陈', 8, 84, 95]);
    AppendRecord(['三班', '诸卫', 9, 85, 94]);
    AppendRecord(['二班', '蒋沈', 8, 86, 93]);
    AppendRecord(['二班', '韩杨', 9, 87, 92]);
    AppendRecord(['二班', '朱秦', 8, 88, 91]);
    AppendRecord(['一班', '尤许', 9, 89, 90]);
    AppendRecord(['一班', '何吕', 8, 99, 89]);
    AppendRecord(['一班', '施张', 9, 98, 88]);
    AppendRecord(['三班', '孔曹', 8, 97, 87]);
    AppendRecord(['三班', '严华', 9, 96, 86]);
    AppendRecord(['三班', '金魏', 8, 95, 85]);
    AppendRecord(['二班', '陶姜', 9, 94, 84]);
    AppendRecord(['二班', '戚谢', 8, 93, 83]);
    AppendRecord(['二班', '邹喻', 9, 92, 82]);
  end;

  { 备份这些数据给后面测试用 }
  ClientDataSet1.MergeChangeLog;
  ClientDataSet1.SaveToFile('C:\Temp\Test.xml', dfXMLUTF8);
end;

{ 统计 }
procedure TForm1.Button1Click(Sender: TObject);
begin
  { (有效的)人员总数 }
  with ClientDataSet1.Aggregates.Add do begin
    Expression := 'Count(语文成绩)';
    Active := True;
  end;
  { 语文总成绩 }
  with ClientDataSet1.Aggregates.Add do begin
    Expression := 'Sum(语文成绩)';
    Active := True;
  end;
  { 语文平均成绩 }
  with ClientDataSet1.Aggregates.Add do begin
    Expression := 'Avg(语文成绩)';
    Active := True;
  end;
  { 语文最高成绩 }
  with ClientDataSet1.Aggregates.Add do begin
    Expression := 'Max(语文成绩)';
    Active := True;
  end;
  { 语文最低成绩 }
  with ClientDataSet1.Aggregates.Add do begin
    Expression := 'Min(语文成绩)';
    Active := True;
  end;
  { 语文和数学的总成绩 }
  with ClientDataSet1.Aggregates.Add do begin
    Expression := 'Sum(语文成绩) + Sum(数学成绩)';
    Active := True;
  end;

  { 执行统计 }
  ClientDataSet1.AggregatesActive := True;
  { 查看统计结果 }
  with ClientDataSet1 do begin
    ShowMessageFmt('%d',  [Integer(Aggregates[0].Value)]); { 17      }
    ShowMessageFmt('%.2f', [Double(Aggregates[1].Value)]); { 1529.00 }
    ShowMessageFmt('%.2f', [Double(Aggregates[2].Value)]); { 89.94   }
    ShowMessageFmt('%.2f', [Double(Aggregates[3].Value)]); { 99.00   }
    ShowMessageFmt('%.2f', [Double(Aggregates[4].Value)]); { 81.00   }
    ShowMessageFmt('%.2f', [Double(Aggregates[5].Value)]); { 3059.00 }
  end;
end;

 
 
 
 
 

 

 

  

设计时使用统计的过程(使用了上面的测试值):



本文转载自:http://www.cnblogs.com/del/archive/2010/01/30/1660272.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2004
码字总数 14107
作品 0
深圳
程序员
TClientDataSet使用(二)

转自:http://hi.baidu.com/zwl232/blog/item/76f011dfc9543812622798f2.html TClientDataSet    与TTable、TQuery一样,TClientDataSet也是从TDataSet继承下来的,它通常用于多层体系结构的......

天地弦 ⋅ 2007/06/01 ⋅ 0

ClientDataSet探讨(1)-介绍

KeyLife富翁笔记 作者: hongxingdl 标题: ClientDataSet探讨(1)-介绍 关键字: midas 分类: 开发经验 密级: 公开 与TTable、TQuery一样,TClientDataSet也是从TDataSet继承下来的,...

天地弦 ⋅ 2004/08/06 ⋅ 0

一个ClientDataset的Delta与XML相互转换

一个ClientDataset的Delta与XML相互转换的文章: 大家都知道TClientDataSet的Delta属性保存数据集的变化,但是Delta是OleVariant类型的属性,这样如果用Delphi写Webservice,就有需要把它转成...

vga ⋅ 2014/02/27 ⋅ 18

Android开发数据库三层应用-DataSnap

Android开发数据库三层应用-DataSnap 时间:2013-10-24 13:41:54 点击:4988   核心提示:我觉得Delphi最强大的的功能之一就是开发数据库三层应用的DataSnap,在Android上的实现,首先是完...

vga ⋅ 2014/06/01 ⋅ 0

delphi 三层创建

所谓三层: (1) 客户端 (2) 服务器端 (3) 数据库 在数据访问时,使得客户端必须通过服务器来访问数据库。提高了系统的安全性。 在Delphi中可以使用Socket或者Dcom来连接他们相互间的通讯。如...

vga ⋅ 2014/11/25 ⋅ 0

带有TClientDataSet的delphi应用程序在发布时应注意的问题

这两天,我把我做的拍卖的操作端发布给公司的同事试用,这些机器都没有安装过delphi环境,我的程序所有用到的组件及单元文件都是build在一块儿的,按理说就不需要其他什么文件来支持了。  本...

技术小胖子 ⋅ 2017/11/02 ⋅ 0

java将blob数据写入到xml中,Delphi TClientDataSet 读取blob失败

我用java把mysql数据写入到xml中,delphi TClientDataSet读取xml展示数据,数值、文本类型都能正常显示;blob类型异常 这里的原因应该是java将blob数据写入到xml中,delphi不认,请大神指点,...

liutao7514 ⋅ 2014/10/13 ⋅ 0

使用IPTABLES实现对特定IP,端口流量的精确统计

使用IPTABLES实现对特定IP,端口流量的精确统计 分类:Linux, 服务器 发表于 2014年4月27日 星期日 上午 10:06 2 条评论 相信有人会想过如何对服务器上某个特定IP出口/入口流量进行进行统计。...

jenningsloy318 ⋅ 2015/12/02 ⋅ 0

T+0 操作量化分析

做T+0操作,如何捕捉股价的日内低点买进,然后捕捉高点卖出,传统的方法需要人工盯盘,看MACD背离等等。这种方式时间和精力投入都很大。 从统计学的角度来看,我们可以统计指定某一只票最近1...

那未必 ⋅ 01/12 ⋅ 0

JSon SuperObject 研究2:数据集与JSON对象互转

JSon SuperObject 研究2:数据集与JSON对象互转 JSON不能完全替代XML,但绝对是未来的大势所趋,其优点是简单、体积小、解析更快、解析占用资源更少。在delphi中,数据集是最常用数据存取方式...

vga ⋅ 2014/12/20 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

容器之重命名镜像

使用docker tag命令来重命名镜像名称,先执行help,查看如何使用如下 mjduan@mjduandeMacBook-Pro:~/Docker % docker tag --helpUsage:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TA...

汉斯-冯-拉特 ⋅ 21分钟前 ⋅ 0

with 的高级用法

那么 上下文管理器 又是什么呢? 上下文管理器协议包含 __enter__ 和 __exit__ 两个方法。with 语句开始运行时,会在上下文管理器对象上调用 __enter__ 方法。with 语句运行结束后,会在上下...

阿豪boy ⋅ 40分钟前 ⋅ 0

使用 jsoup 模拟登录 urp 教务系统

需要的 jsoup 相关 jar包:https://www.lanzous.com/i1abckj 1、首先打开教务系统的登录页面,F12 开启浏览器调试,注意一下 Request Headers 一栏的 Cookie 选项,我们一会需要拿这个 Cook...

大灰狼时间 ⋅ 40分钟前 ⋅ 0

关于线程的创建

转自自己的笔记: http://note.youdao.com/noteshare?id=87584d4874acdeaf4aa027bdc9cb7324&sub=B49E8956E145476191C3FD1E4AB40DFA 1.创建线程的方法 Java使用Thread类代表线程,所有的线程对......

MarinJ_Shao ⋅ 51分钟前 ⋅ 0

工厂模式学习

1. 参考资料 工厂模式-伯乐在线 三种工厂-思否 深入理解工厂模式 2. 知识点理解 2.1 java三种工厂 简单工厂 工厂模式 抽象工厂 2.2 异同点 逐级复杂 简单工厂通过构造时传入的标识来生产产品...

liuyan_lc ⋅ 今天 ⋅ 0

Java NIO

1.目录 Java IO的历史 Java NIO之Channel Java NIO之Buffer Java NIO之Selector Java NIO之文件处理 Java NIO之Charset Java 可扩展IO 2.简介 “IO的历史”讲述了Java IO API从开始到现在的发...

士别三日 ⋅ 今天 ⋅ 0

[Err] ORA-24344: success with compilation error

从txt文本复制出创建function的脚本,直接执行,然后报错:[Err] ORA-24344: success with compilation error。 突然发现脚本的关键字,居然不是高亮显示。 然后我把脚本前面的空格去掉,执行...

wenzhizhon ⋅ 今天 ⋅ 0

Spring Security授权过程

前言 本文是接上一章Spring Security认证过程进一步分析Spring Security用户名密码登录授权是如何实现得; 类图 调试过程 使用debug方式启动https://github.com/longfeizheng/logback该项目,...

hutaishi ⋅ 今天 ⋅ 0

HAProxy基于KeepAlived实现Web高可用及动静分离

前言 软件负载均衡一般通过两种方式来实现: 基于操作系统的软负载实现 基于第三方应用的软负载实现 LVS是基于Linux操作系统实现的一种软负载,而HAProxy则是基于第三方应用实现的软负载。 ...

寰宇01 ⋅ 今天 ⋅ 0

微软自研处理器的小动作:已经开始移植其他平台的工具链

微软将 Windows 10 、Linux 以及工具链如 C/C++ 和 .NET Core 运行时库、Visual C++ 2017 命令行工具、RyuJIT 编辑器等移植到其自主研发的处理器架构 E2。微软还移植了广泛使用的 LLVM C/C++...

linux-tao ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部