求助!MSCHART控件设计饼图的问题!在线等!

alian1007 2005-09-07 07:52:52
在项目的统计部分要求把统计结果用图的形式表示出来,线状和柱状都能实现,但是在做饼图的时候遇到问题,请高手帮忙

统计结果

项目类型预算
医疗500000
教育 500000
畜牧 1000000
农业1500000
经济发展600000
领袖发展 200000
调查 800000
基建发展 1000000
水利发展 5000000
环境发展200000

要求在饼图上显示各个类型所占的比例,以下是部分代码:
cn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security_ Info=False;Initial Catalog=wvmis;Data Source=(local)"
cn.Open
strQuery = "SELECT ADPNAME AS 项目类型, SUM(RMBBUDGET) AS 预算 From WVMIS_V_PROJACT_ GROUP BY ADPNAME"
rs.Open strQuery, cn, adOpenKeyset
with mschart1
……(不知道该如何写)
end with
...全文
214 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangyangyy 2005-11-23
  • 打赏
  • 举报
回复
www.wave12.com动态显示饼图示例代码
rcom10002 2005-11-23
  • 打赏
  • 举报
回复
Public Sub ShowPie(ByRef chart As MSChart, ByVal rsTarget As Recordset)

With chart

.chartType = VtChChartType2dPie
.rowCount = 1
.columnCount = rsTarget.RecordCount
Dim iterator As Integer

For iterator = 1 To rsTarget.RecordCount
.Row = 1
.Column = iterator
.Data = iterator * 100
Next iterator

With .DataGrid
.RowLabelCount = 1
.ColumnLabelCount = rsTarget.RecordCount
For iterator = 1 To .columnCount
.ColumnLabel(iterator, 1) = "Column1 " & iterator
Next iterator
.RowLabel(1, 1) = "标题"
End With

For iterator = 1 To .Plot.SeriesCollection.Count
With .Plot.SeriesCollection(iterator).DataPoints(-1).DataPointLabel
.LocationType = VtChLabelLocationTypeOutside
.Component = VtChLabelComponentPercent
.PercentFormat = "0%"
.VtFont.Size = 8
End With
Next iterator

End With

End Sub
alian1007 2005-09-22
  • 打赏
  • 举报
回复
再顶一下
pweixing 2005-09-22
  • 打赏
  • 举报
回复
全部代码如下

Private Sub getdatebin()
Dim totalnumok As Double '总人数
Dim singlenumok As Double '每个饼块的人数
Dim ratestr As String '百分比
Dim Rate As Double '占比
Dim arrChart(10) '饼的块,可以根据要求重新定义
Dim ChartNum As String
Dim k(10) '每个饼块的图例
Dim l As Integer
Dim x As Integer
Dim DeptNo As String
Sql = "SELECT ADPNAME AS 项目类型, SUM(RMBBUDGET) AS 预算 From WVMIS_V_PROJACT_ GROUP BY ADPNAME"

SqlRec.Open Sql, SQLcon, adOpenStatic, adLockReadOnly
l = SqlRec.RecordCount '取得记录总数
If Not SqlRec.EOF Then
SqlRec.MoveFirst
MSChart1.Stacking = True
ReDim arrChart(SqlRec.RecordCount)
ReDim k(SqlRec.RecordCount)

For i = 1 To SqlRec.RecordCount
arrChart(i) = SqlRec.Fields(1)
k(i) = SqlRec.Fields(0)
totalnumok = totalnumok + SqlRec.Fields(0) '计算总数
SqlRec.MoveNext
Next
SqlRec.Close
Set SqlRec = Nothing
MSChart1.Visible = True
Else
MsgBox "没有数据!"
SqlRec.Close
Set SqlRec = Nothing
Exit Sub
End If
If l >= 1 Then
MSChart1.RowCount = 1
MSChart1.ColumnCount = l
For j = 1 To l
singlenumok = arrChart(j)
If totalnumok = 0 Then
Rate = 0
Else
Rate = Round(singlenumok / totalnumok * 100, 1)
End If
ratestr = Format(Rate, "0.0")
ratestr = " " & ratestr
ratestr = Right(ratestr, 4)
MSChart1.Column = j
MSChart1.Data = arrChart(j)
ChartNum = " " & arrChart(j)
ChartNum = Right(ChartNum, 5)
MSChart1.ColumnLabel = k(j) & ":" & ChartNum & " 占比 " & ratestr & "%"
Next
End If
End Sub



alian1007 2005-09-08
  • 打赏
  • 举报
回复
seu31199113(Tony(峰回路转))
能说得具体一些么?我是要做成一个饼,然后在上面显示各个类型的预算所占的比例,谢谢啦!!
seu31199113 2005-09-07
  • 打赏
  • 举报
回复
.charttype= VtChChartType2dPie '2d 饼图
.chartdate = 数组值

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧