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 MSChart1.Title = CmbChoice.Text FileName = MSChart1.Title Sql = "select count(*) ,substring(caddress," & DataType & ",1) from v_tj1" Sql = CheckSql(Sql) & " csignattrib in ('正常','转走')" Sql = CheckSql(Sql) & " cclassno='" & CmbDeptType.Text & "' " Sql = CheckSql(Sql) & " croomareano='" & CmbAreaID.Text & "' " Sql = Sql & " group by substring(caddress," & DataType & ",1)" SqlRec.Open Sql, SQLcon, adOpenStatic, adLockReadOnly l = SqlRec.RecordCount '取得记录总数 If Not SqlRec.EOF Then SqlRec.MoveFirst MSChart1.Stacking = True For i = 1 To SqlRec.RecordCount arrChart(i) = SqlRec.Fields(0) k(i) = ChangeData(SqlRec.Fields(1), DataType) 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 一个完整的例子!自己研究一下
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
MSChart1.Title = CmbChoice.Text
FileName = MSChart1.Title
Sql = "select count(*) ,substring(caddress," & DataType & ",1) from v_tj1"
Sql = CheckSql(Sql) & " csignattrib in ('正常','转走')"
Sql = CheckSql(Sql) & " cclassno='" & CmbDeptType.Text & "' "
Sql = CheckSql(Sql) & " croomareano='" & CmbAreaID.Text & "' "
Sql = Sql & " group by substring(caddress," & DataType & ",1)"
SqlRec.Open Sql, SQLcon, adOpenStatic, adLockReadOnly
l = SqlRec.RecordCount '取得记录总数
If Not SqlRec.EOF Then
SqlRec.MoveFirst
MSChart1.Stacking = True
For i = 1 To SqlRec.RecordCount
arrChart(i) = SqlRec.Fields(0)
k(i) = ChangeData(SqlRec.Fields(1), DataType)
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
一个完整的例子!自己研究一下