需要一个MSCHART的实例
从数据库取数,再用MSCHART用图形显示出来

解决方案 »

  1.   

    Dim strsql As String
    Dim ADORS As ADODB.Recordset'功能:查询并在MSFlexGrid上显示
    Private Sub cmdQuery_Click()
        Dim dblTotalMoney As Double
        Dim dblTotalDown As Double
        Dim dblTotalNum As Double
        Dim i As Integer
        Dim strHour As String
        
        'Call FillGridHeader
        
        Dim mycnn As ADODB.Connection
        Set mycnn = New ADODB.Connection
        mycnn.ConnectionTimeout = GL_ConnectTimeout
        mycnn.CommandTimeout = GL_ConnectTimeout
        mycnn.Open GL_ConnStr    
        
        If ADORS Is Nothing Then
            Set ADORS = New ADODB.Recordset
        End If
        
        If ADORS.state <> adStateClosed Then
            ADORS.Close
        End If
        ADORS.CursorLocation = adUseClient
        ADORS.CursorType = adOpenDynamic
        ADORS.LockType = adLockOptimistic
        
        strsql = "select * from vi_StatCustDown"
        ADORS.Open strsql, mycnn, , adCmdTable
        msGridStatis.Rows = ADORS.RecordCount + 2
        i = 1
        dblTotalMoney = 0
        dblTotalDown = 0
        dblTotalNum = 0
        While Not ADORS.eof
            If Not IsNull(ADORS("StatisHour")) Then
                strHour = ADORS("StatisHour") & ":00 - " & ADORS("StatisHour") & ":59"
            Else
                strHour = ""
            End If
            
            msGridStatis.TextMatrix(i, 0) = strHour
            msGridStatis.TextMatrix(i, 1) = IIf(IsNull(ADORS("AreaName")), "", ADORS("AreaName"))
            msGridStatis.TextMatrix(i, 2) = Format(IIf(IsNull(ADORS("StatisMoney")), 0, ADORS("StatisMoney")), "0.00")
            dblTotalMoney = dblTotalMoney + IIf(IsNull(ADORS("StatisMoney")), 0, ADORS("StatisMoney"))
            msGridStatis.TextMatrix(i, 3) = Format(IIf(IsNull(ADORS("StatisLoad")), 0, ADORS("StatisLoad")), "0.00")
            dblTotalDown = dblTotalDown + IIf(IsNull(ADORS("StatisLoad")), 0, ADORS("StatisLoad"))
            msGridStatis.TextMatrix(i, 4) = IIf(IsNull(ADORS("StatisDownNum")), 0, ADORS("StatisDownNum"))
            dblTotalNum = dblTotalNum + IIf(IsNull(ADORS("StatisDownNum")), 0, ADORS("StatisDownNum"))
            i = i + 1
            ADORS.MoveNext
        Wend
        msGridStatis.TextMatrix(i, 0) = "合计"
        msGridStatis.TextMatrix(i, 2) = Format(dblTotalMoney, "0.00")
        msGridStatis.TextMatrix(i, 3) = Format(dblTotalDown, "0.00")
        msGridStatis.TextMatrix(i, 4) = dblTotalNum
        
    End Sub'功能:二维柱状图
    Private Sub cmd2B_Click()
        If ADORS Is Nothing Then
            MsgBox "请先查询!", vbInformation, "提示信息"
            Exit Sub
        End If
        
        Frame2.Visible = False
        Frame4.Visible = True
        
        Dim i As Integer, j As Integer
            
        MSChart1.Visible = True
        
        'MSChart1.Width = 7455
        MSChart1.ChartType = VtChChartType2dBar
        
        MSChart1.RowCount = ADORS.RecordCount
        MSChart1.ColumnCount = 2
        
        PictureL(0).Visible = True
        Label(0).Visible = True
        Label(0).Caption = "下载金额"
        PictureL(1).Visible = True
        Label(1).Visible = True
        Label(1).Caption = "面值金额"    If Not (ADORS.BOF And ADORS.eof) Then
            i = 0
            MSChart1.Column = 1
            ADORS.MoveFirst
            While Not ADORS.eof
                MSChart1.Column = 1
                MSChart1.Row = i + 1
                MSChart1.RowLabel = IIf(IsNull(ADORS("StatisHour")), "", ADORS("StatisHour"))
                MSChart1.Data = IIf(IsNull(ADORS("StatisLoad")), 0, ADORS("StatisLoad"))
                MSChart1.ColumnLabel = "下载金额"
                MSChart1.Column = 2
                MSChart1.Row = i + 1
                MSChart1.Data = IIf(IsNull(ADORS("StatisMoney")), 0, ADORS("StatisMoney"))
                MSChart1.ColumnLabel = "面值金额"
                
                ADORS.MoveNext
                i = i + 1
            Wend
        End If
    End Sub'功能:三维柱状图
    Private Sub cmd3B_Click()
        If ADORS Is Nothing Then
            MsgBox "请先查询!", vbInformation, "提示信息"
            Exit Sub
        End If
        
        Frame2.Visible = False
        Frame4.Visible = True
        
        Dim i As Integer, j As Integer
            
        MSChart1.Visible = True
        
        'MSChart1.Width = 7455
        MSChart1.ChartType = VtChChartType3dBar
        
        MSChart1.RowCount = ADORS.RecordCount
        MSChart1.ColumnCount = 2
        
        PictureL(0).Visible = True
        Label(0).Visible = True
        Label(0).Caption = "下载金额"
        PictureL(1).Visible = True
        Label(1).Visible = True
        Label(1).Caption = "面值金额"    If Not (ADORS.BOF And ADORS.eof) Then
            i = 0
            MSChart1.Column = 1
            ADORS.MoveFirst
            While Not ADORS.eof
                MSChart1.Column = 1
                MSChart1.Row = i + 1
                MSChart1.RowLabel = IIf(IsNull(ADORS("StatisHour")), "", ADORS("StatisHour"))
                MSChart1.Data = IIf(IsNull(ADORS("StatisLoad")), 0, ADORS("StatisLoad"))
                MSChart1.ColumnLabel = "下载金额"
                MSChart1.Column = 2
                MSChart1.Row = i + 1
                MSChart1.Data = IIf(IsNull(ADORS("StatisMoney")), 0, ADORS("StatisMoney"))
                MSChart1.ColumnLabel = "面值金额"
                
                ADORS.MoveNext
                i = i + 1
            Wend
        End If
    End Sub'功能:线条图
    Private Sub cmdLine_Click()
        If ADORS Is Nothing Then
            MsgBox "请先查询!", vbInformation, "提示信息"
            Exit Sub
        End If
        
        Frame2.Visible = False
        Frame4.Visible = True
        
        Dim i As Integer, j As Integer
            
        MSChart1.Visible = True
        
        'MSChart1.Width = 7455
        MSChart1.ChartType = VtChChartType2dLine
        
        MSChart1.RowCount = ADORS.RecordCount
        MSChart1.ColumnCount = 2
        
        PictureL(0).Visible = True
        Label(0).Visible = True
        Label(0).Caption = "下载金额"
        PictureL(1).Visible = True
        Label(1).Visible = True
        Label(1).Caption = "面值金额"    If Not (ADORS.BOF And ADORS.eof) Then
            i = 0
            MSChart1.Column = 1
            ADORS.MoveFirst
            While Not ADORS.eof
                MSChart1.Column = 1
                MSChart1.Row = i + 1
                MSChart1.RowLabel = IIf(IsNull(ADORS("StatisHour")), "", ADORS("StatisHour"))
                MSChart1.Data = IIf(IsNull(ADORS("StatisLoad")), 0, ADORS("StatisLoad"))
                MSChart1.ColumnLabel = "下载金额"
                MSChart1.Column = 2
                MSChart1.Row = i + 1
                MSChart1.Data = IIf(IsNull(ADORS("StatisMoney")), 0, ADORS("StatisMoney"))
                MSChart1.ColumnLabel = "面值金额"
                
                ADORS.MoveNext
                i = i + 1
            Wend
        End If
    End Sub
      

  2.   

    谢谢楼上。现在还需要下载个工程,大家帮忙给我提供一个谢谢
    MSDN上的切来切去麻烦那