首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

VB 时间段分门别类

2013-01-23 
VB 时间段分类请问各位大哥大姐小第遇到个的棘手的问题问题如下:数据库里有一些列的数据列1(ID)--------列

VB 时间段分类
请问各位大哥大姐小第遇到个的棘手的问题


问题如下:
数据库里有一些列的数据

列1(ID)--------列2(产量)---------列3(日期)
1----------------8-----------------2012-11-24 05:50:01
2----------------9-----------------2012-11-25 08:30:01
3----------------7-----------------2012-11-26 03:00:01
4----------------7-----------------2012-11-26 05:30:01
5----------------8-----------------2012-11-27 07:39:00
6----------------6-----------------2012-11-28 09:12:00
7----------------7.9---------------2012-11-29 10:11:00
8----------------2.5---------------2012-11-30 15:30:00
9----------------8.6---------------2012-12-01 17:00:00
10---------------8-----------------2012-12-24 01:12:00
11---------------8-----------------2012-12-25 07:30:21
12---------------7-----------------2012-12-26 03:23:00
13---------------8-----------------2012-12-28 06:19:02


(因为统计时是从 上个月的26号05:30:00至下个月的26号05:30:00 )
如何用VB TREEVIEW实现下面的形式



+---------2013年
-------------+----1月
-------------+----+--------2012-12-28
+---------2012年
-------------+----12月
-------------+-----+-------2012-11-26
-------------+-------------2012-11-27
-------------+-------------2012-11-28
-------------+-------------2012-11-29
-------------+-------------2012-11-30
-------------+-------------2012-12-01
-------------+-------------2012-12-24
-------------+-------------2012-12-25
-------------+-------------2012-12-26
-------------+----11月
-------------------+-------2012-11-24
-------------+-------------2012-11-25
-------------+-------------2012-11-26


本帖追加100分

             






[解决办法]
TreeView的Add 方法(Nodes 集合)
      

在 Treeview 控件的 Nodes 集合中添加一个 Node 对象。

语法

object.Add(relative, relationship, key, text, image, selectedimage)

Add 方法的语法包含下面部分:

部分 描述 
object 必需的。对象表达式,其值是“应用于”列表中的一个对象 
relative 可选的。已存在的 Node 对象的索引号或键值。新节点与已存在的节点间的关系,可在下一个参数 relationship 中找到。 
relationship 可选的。指定的 Node 对象的相对位置,如设置值中所述。 
key 可选的。唯一的字符串,可用于用 Item 方法检索 Node。 
text 必需的。在 Node 中出现的字符串。 
image 可选的。在关联的 ImageList 控件中的图像的索引。 
selectedimage  可选的。在关联的 ImageList 控件中的图像的索引,在 Node 被选中时显示。 


设置值

relationship 的设置值是:

常数 值 描述 
tvwFirst 0 首的节点。该 Node 和在 relative 中被命名的节点位于同一层,并 位于所有同层节点之前。 
tvwLast 1 最后的节点。该 Node 和在 relative 中被命名的节点位于同一层,并 位于所有同层节点之后。任何连续地添加的节点可能位于最后添加的节点之后 
tvwNext 2 (缺省)下一个节点。该 Node 位于在 relative 中被命名的节点之后。 
tvwPrevious 3 前一个节点。该 Node 位于在 relative 中被命名的节点之前。 
tvwChild 4 (缺省)子节点。该 Node 成为在 relative 中被命名的 
节点的子节点。
 


注意 如果在 relative 中没有被命名的 Node 对象,则新节点被放在节点顶层的最后位置。

说明

Nodes 集合是一个基于 1 的集合。

在添加 Node 对象时,它被指派一个索引号,该索引号被存储在 Node 对象的 Index 属性中。这个最新成员的 Index 属性值就是 Node 集合的 Count 属性的值。

因为 Add 方法返回对新建立的 Node 对象的引用,所以使用这个引用来设置新 Node 的属性十分方便。以下例子添加几个具有相同属性的 Node 对象:

Dim nodX As Node   '声明对象变量。


Dim I as Integer   '声明计数器变量。
For I = 1 to 4
   Set nodX = TreeView1.Nodes.Add(,,,"Node " & Cstr(i))
   '使用引用来设置其它属性,如 Enabled。
   nodX.Enabled = True
   '把图像属性设置为在关联的 ImageList 中的图像 3。
   nodX.ExpandedImage = 3
Next I


[解决办法]
Node 对象和 Nodes 集合
            

Node 对象是 TreeView 控件中的一项,它包含图像和文本。


Nodes 集合包含一个或多个 Node 对象。 
语法

treeview.Nodes

treeview.Nodes.Item(index)

以上语法行,按照标准集合语法分别引用集合与集合中的单独元素。

Node 对象和 Nodes 集合的语法包含下面部分:

部分 描述 
treeview 对象表达式,其值是 TreeView 控件。 
index 整数或字符串,它唯一地标识 Nodes 集合的一个成员。整数是 Index 属性的值,字符串是 Key 属性的值。 


说明

节点可包含文本和图片。然而,要使用图片,必须用 ImageList 属性关联一个 ImageList 控件。

图片可以根据节点的状态而改变;例如,如果将 SelectedImage 属性设置为来自关联的 ImageList 的图像,则被选中的节点可拥有与未选中的节点不同的图片。

[解决办法]
TreeView 控件
            

TreeView 控件显示 Node 对象的分层列表,每个 Node 对象均由一个标签和一个可选的位图组成。TreeView 一般用于显示文档标题、索引入口、磁盘上的文件和目录、或能被有效地分层显示的其它种类信息。

语法

Treeview

说明

创建了 TreeView 控件之后,可以通过设置属性与调用方法对各 Node 对象进行操作,这些操作包括添加、删除、对齐和其它操作。可以编程展开与折回 Node 对象来显示或隐藏所有子节点。Collapse、Expand 和 NodeClick 三个事件也提供编程功能。

Node 对象使用 Root、Parent、Child、FirstSibling、Next、Previous 和 LastSibling 属性。在代码中可通过检索对 Node 对象的引用,从而在树上定位。也可以使用键盘定位。UP ARROW 键和 DOWN ARROW 键向下循环穿过所有展开的 Node 对象。从左到右、从上到下地选择 Node 对象。若在树的底部,选择便跳回树的顶部,必要时滚动窗口。RIGHT ARROW 键和 LEFT ARROW 键也穿过所有展开的 Node 对象,但是如果选择了未展开的 Node之后再按 RIGHT ARROW 键,该 Node 便展开;第二次按该键,选择将移向下一个 Node。相反,若扩展的 Node 有焦点,这时再按 LEFT ARROW 键,该 Node 便折回。如果按下 ANSI 字符集 中的键,焦点将跳转至以那个字母开头的最近的 Node。后续的按该键的动作将使选择向下循环,穿过以那个字母开头的所有展开节点。

控件的外观有八种可用的替换样式,它们是文本、位图、直线和 +/- 号的组合,Node 对象可以任一种组合出现。

TreeView 控件使用由 ImageList 属性指定的 ImageList 控件,来存储显示于 Node 对象的位图和图标。任何时刻,TreeView 控件只能使用一个 ImageList。这意味着,当 TreeView 控件的 Style 属性被设置成显示图像的样式时,TreeView 控件中每一项的旁边都有一个同样大小的图像。

发行注意 TreeView 控件是 MSCOMCTL.OCX 文件中的一组 ActiveX 控件的一部分。为了在应用程序中使用 TreeView 控件,必须将 MSCOMCTL.OCX 文件添加到工程中。在发行应用程序时,要在用户的 Microsoft Windows System 或 System32 目录中安装 MSCOMCTL.OCX 文件。

[解决办法]
你既需要按“统计月”倒序,有要求按日期正序,如果逐条记录处理就比较复杂。

一个简单的方法是,表中加一个“统计年月”字段(日期型)。写入记录时,就根据规则填入年月数据。

你填充 TreeView 时流程如下:

1 查询表中最大和最小统计年月;

2 从最大到最小统计年月循环:
2.1 写入当前统计年数值到 TreeView;
2.2 查询当前统计年月的记录(Order By 日期);
2.3 逐条记录写入到 TreeView。
[解决办法]
当然,稍复杂一点,也可以不更改表结构:

1 查询表中最大和最小日期;

2 代码分析出所有记录所属的统计月时间段;

3 从最大到最小统计月时间段循环:
2.1 写入当前统计年月数值到 TreeView;
2.2 查询当前时间段的记录(Order By 日期);
2.3 逐条记录写入到 TreeView。 


[解决办法]
rs=cn.execute("select ID,产量,日期 ,Year(日期) AS TheYear,Month(日期) AS TheMonth,Day(日期) as TheDay from 表 
")

rs.sort="TheYear,TheMonth,TheDay"
这样之后,日期已经排序,你安照你的规则创建节点就是了
如果年发生变化就创建一个根节点
如果月变化,则在年下创建一个月节点
在月节点下创建日节点

热点排行