提出问题:
1、单纯用DataGrid控件制作统计报表,不用第三方控件。
2、报表表头部分的格式多样,数据项部分基本是二维表单形式。
3、程序部分做到最大成都的共用。
4、方便的导出到Excel文档。
解决问题:
根据上面的需求我们主要从两方面进行实现:数据处理部分、报表格式化部分
我们先简单介绍一下这两方面的功能及其实现思路。
〖数据处理部分〗
负责对报表数据进行处理,然后返回处理结果提供给程序调用。
返回程序的数据主要是两个 Select 语句结果:
1、表头:我们这里先设想是一串经过我们特殊编码的字符串
2、数据体:一个二维表单
〖报表格式化部分〗
负责把数据库处理的结果邦定到DataGrid上,解析经过我们编码的表头,格式化我们的DataGrid。这一部分我们要尽可能的做到代码的通用。
下面我们根据一个具体的实例来循序渐进的实现我们的设想。
我们对系统的登录情况进行统计,涉及到两张数据表:
Accounts_Users表
UserId | UserName |
1 | administrator |
2 | admin |
6 | sam.zhang |
7 | guest |
9 | xiang.liu |
10 | wenyue.cong |
11 | samfun.zhang |
13 | jack.li |
14 | tony.shen |
15 | Terry.wang |
16 | san.zhang |
Accounts_Login_Record表
ID | UserId | Ip | LoginTime |
1 | 1 | 127.0.0.1 | 2006-7-16 19:58 |
2 | 1 | 127.0.0.1 | 2006-7-17 19:10 |
3 | 1 | 127.0.0.1 | 2006-7-17 19:13 |
4 | 1 | 127.0.0.1 | 2006-7-17 19:13 |
5 | 1 | 127.0.0.1 | 2006-7-17 19:21 |
6 | 1 | 127.0.0.1 | 2006-7-17 19:22 |
7 | 2 | 127.0.0.1 | 2006-7-17 19:28 |
8 | 8 | 127.0.0.1 | 2006-7-17 19:29 |
9 | 8 | 127.0.0.1 | 2006-7-17 19:29 |
10 | 8 | 127.0.0.1 | 2006-7-17 19:43 |
11 | 8 | 127.0.0.1 | 2006-7-17 19:48 |
12 | 8 | 127.0.0.1 | 2006-7-17 19:59 |
13 | 1 | 127.0.0.1 | 2006-7-17 20:02 |
14 | 1 | 127.0.0.1 | 2006-7-17 21:04 |
15 | 8 | 127.0.0.1 | 2006-7-17 21:14 |
16 | 8 | 127.0.0.1 | 2006-7-17 21:21 |
17 | 8 | 127.0.0.1 | 2006-7-17 21:37 |
18 | 8 | 127.0.0.1 | 2006-7-17 22:05 |
19 | 1 | 127.0.0.1 | 2006-7-17 22:06 |
20 | 1 | 127.0.0.1 | 2006-7-17 22:09 |
21 | 8 | 127.0.0.1 | 2006-7-17 22:15 |
22 | 8 | 127.0.0.1 | 2006-7-17 22:16 |
23 | 8 | 127.0.0.1 | 2006-7-17 22:22 |
24 | 1 | 127.0.0.1 | 2006-7-17 22:22 |
25 | 8 | 127.0.0.1 | 2006-7-17 22:27 |
26 | 2 | 127.0.0.1 | 2006-7-17 22:29 |
27 | 1 | 127.0.0.1 | 2006-7-17 22:37 |
28 | 8 | 127.0.0.1 | 2006-7-18 8:33 |
29 | 1 | 127.0.0.1 | 2006-7-18 8:42 |
30 | 8 | 127.0.0.1 | 2006-7-18 8:43 |
31 | 8 | 109.52.19.28 | 2006-7-18 8:48 |
32 | 1 | 127.0.0.1 | 2006-7-18 10:33 |
33 | 1 | 127.0.0.1 | 2006-7-18 10:38 |
34 | 1 | 127.0.0.1 | 2006-7-18 10:50 |
35 | 1 | 127.0.0.1 | 2006-7-18 10:55 |
36 | 1 | 127.0.0.1 | 2006-7-18 11:11 |
37 | 1 | 127.0.0.1 | 2006-7-18 11:15 |
38 | 1 | 127.0.0.1 | 2006-7-18 11:16 |
39 | 1 | 127.0.0.1 | 2006-7-18 11:25 |
40 | 1 | 127.0.0.1 | 2006-7-18 11:26 |
41 | 1 | 127.0.0.1 | 2006-7-18 16:23 |
42 | 1 | 127.0.0.1 | 2006-7-18 16:34 |
43 | 8 | 127.0.0.1 | 2006-7-18 16:36 |
44 | 8 | 127.0.0.1 | 2006-7-18 16:37 |
45 | 1 | 127.0.0.1 | 2006-7-18 16:41 |
46 | 1 | 127.0.0.1 | 2006-7-18 16:44 |
47 | 1 | 127.0.0.1 | 2006-7-18 16:45 |
48 | 2 | 127.0.0.1 | 2006-7-18 16:46 |
49 | 1 | 127.0.0.1 | 2006-7-18 16:47 |
50 | 1 | 127.0.0.1 | 2006-7-18 16:57 |
我们要实现的报表:
(1)统计所有用户的的登录次数,同时点击数量(用超链接表示)的时候可以查看到详细的登录记录。
(2)查询条件为: 日期-----日期 (暂时先不考虑条件了,偷懒了)