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

mschart连接指定位置ACCESS数据显示折线图,帮顶也有分解决方法

2012-01-09 
mschart连接指定位置ACCESS数据显示折线图,帮顶也有分本人是VB的初学者,想弄个图表于在网上找到了以下代码

mschart连接指定位置ACCESS数据显示折线图,帮顶也有分
本人是VB的初学者,想弄个图表于在网上找到了以下代码,感觉很详细,但跟我的需要还有一定的差别,我的程序里用DTPicker输了时间,时间格式为2007-7-21,ACCESS数据中,一天可能有很多数据,也可能边连续好几天没有数据,我想图表统计出一年中12月份中数据。麻烦高手给帮个忙
日期     单位人员
2003-11-3       T张儒林
2003-11-3       T张儒林
2003-8-18       Q赵吉发
2003-2-18       Q王树昆
2003-8-18       Q赵吉发
2003-8-21       Q孙绪清
2003-8-21       Q陈宝超


Private   Sub   btnTuBiao_Click()
'   定义变量
Dim   i   As   Integer
Dim   rs   As   Recordset
Dim   ws   As   Workspace
Dim   db   As   Database
Dim   strDBName   As   String     '   数据库文件相对路径

'   设置数据库文件的相对路径
strDBName   =   App.Path
If   Right$(strDBName,   1)   <>   "\ "   Then   strDBName   =   strDBName   &   "\ "
strDBName   =   strDBName   &   "db\dbPinDian.mdb "

'   打开数据库.
Set   ws   =   DBEngine.Workspaces(0)
Set   db   =   ws.OpenDatabase(strDBName)
' 'Set   db   =   OpenDatabase(strDBName)
Set   rs   =   db.OpenRecordset( "select   日期,单位,人员   from   tbl_PinDian   order   by   日期 ",   dbOpenSnapshot)
' 'rs.MoveLast
' 'rs.MoveFirst
If   rs.RecordCount   =   0   Then
MsgBox   "数据库表中没有数据,请在数据库中输入数据! ",   vbCritical,   "提示 "
Exit   Sub
End   If

mscPinDian.Visible   =   True   '   设置图表不可见

With   mscPinDian
        .TitleText   =   "日期单位人员图表 "   '   设置图表标题
        .ColumnCount   =   2   '   设置数据网格的列数   为   2   如   单位   和   人员
        .RowCount   =   rs.RecordCount   '   设置数据网格的行数   既是上面查询所得的记录数
        For   i   =   1   To   rs.RecordCount
                .Row   =   i
                .RowLabel   =   rs( "日期 ")
                .Column   =   1   '   设置数据网格的第一个活动列
                .ColumnLabel   =   "单位 "   '   设置该活动列的标签
                .Data   =   rs( "单位 ")   '   .Data   =   rs.Fields( "单位 ")
                .Column   =   2   '   设置数据网格的第二个活动列
                .ColumnLabel   =   "人员 "   '设置该活动列的标签
                .Data   =   rs( "人员 ")
                rs.MoveNext
        Next   i
       
        '//   设置是否自动缩放
        '.Plot.Axis(V单位AxisIdY).ValueScale.Auto   =   False
        '//   设置最大值
        .Plot.Axis(V单位AxisIdY).ValueScale.Maximum   =   50


        '//   设置最小值
        .Plot.Axis(V单位AxisIdY).ValueScale.Minimum   =   0
        '//   设置主要间隔
        .Plot.Axis(V单位AxisIdY).ValueScale.MajorDivision   =   5
        '//   设置次要间隔
        .Plot.Axis(V单位AxisIdY).ValueScale.MinorDivision   =   1
       
        '//   标记每个点的值
        For   i   =   1   To   .Plot.SeriesCollection.Count
        .Plot.SeriesCollection(i).DataPoints(-1).DataPointLabel.LocationType   =   V单位LabelLocationTypeAbovePoint
        Next
       
End   With
rs.Close

End   Sub

麻烦各位高手了,如果你有更好的办法请给出代码和说明本人是初学者谢谢了。


[解决办法]
我觉得你首先要需要显示什么数据,是12月份每天每个单位的人员数?一共有多少个单位

你应该是2D的柱状图来显示的吧
1.你查询的时候 select isnull(count(*),0),company,date from tb where date between 30/11/2007 and 31/12/2007 group by date,company order by date (没准有小错误,你查一下)

然后rs取出,然后就开始循环了。我们假定你的单位是两个
With mscPinDian
.TitleText = "日期单位人员图表 " ' 设置图表标题
.ColumnCount = 2 ' 设置数据网格的列数 为 2 如 单位 和 人员
.RowCount = rs.RecordCount ' 设置数据网格的行数 既是上面查询所得的记录数
For i = 1 To rs.RecordCount
.Row = i
.RowLabel = rs( "日期 ")
.Column = 1 ' 设置数据网格的第一个活动列
.ColumnLabel = "单位 " ' 设置该活动列的标签
.Data = rs( "单位 ") ' .Data = rs.Fields( "单位 ")
.Column = 2 ' 设置数据网格的第二个活动列
.ColumnLabel = "人员 " '设置该活动列的标签
.Data = rs( "人员 ")
rs.MoveNext
Next i

然后就是showlengent 就好了。你试试看吧

热点排行