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 就好了。你试试看吧