且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

具有多个系列的Windows表单图表控件未呈现

更新时间:2023-11-21 20:57:16

请尝试以下操作:

            Dim myfont As New Font("Sans Serif", 20, FontStyle.Bold)
            dim rs as adodb.recordset  [connect your tablefield on table]
            'dim db as adodb.connection [connect your database]
            dim msg as string

            'Chart1
            Chart1.Titles.Add("")
            Chart1.Titles(0).Font = myfont

            Chart1.Series.Add("[series1]")
            Chart1.Series.Add("[series2]")
            Chart1.Series.Add("[series3]")
            Chart1.Series.Add("[series4]")

            Msg = "Select [grouping recored], Sum([series1]) As s1, Sum([series2]) As s2, Sum([series3]) As s3, Sum([series4]) As s4 "
            Msg = Msg & "From [table] "
            Msg = Msg & "Group By [grouping recored]"

            Rs = New ADODB.Recordset
            Rs.Open(Msg, Db, ADODB.CursorTypeEnum.adOpenStatic)
            While Rs.EOF <> True
                Chart1.Series("[series1]").Points.AddXY(Rs(0).Value, Rs(1).Value.ToString)
                Chart1.Series("[series2]").Points.AddXY(Rs(0).Value, Rs(2).Value)
                Chart1.Series("[series3]").Points.AddXY(Rs(0).Value, Rs(3).Value)
                Chart1.Series("[series4]").Points.AddXY(Rs(0).Value, Rs(4).Value)
                Rs.MoveNext()
            End While
            Rs.Close()                              

让我解释一下:
我调用的数据库表单加载,因此在这种情况下不需要dim db。

let me explain: database I call on form load so no need dim db on this case. it will cause an error.

    Dim Loc As String
    Dim Db As ADODB.Connection

        Loc = Application.StartupPath & "\Database\[databasename].mdb"
        Msg1 = "Provider=Microsoft.Jet.OLEDB.4.0;" & Chr(10)
        Msg1 = Msg1 & "Data Source='" & Loc & "';" & Chr(10)
        Msg1 = Msg1 & "Jet OLEDB:Database Password=[databasepass]& Chr(10)

    Try
        Db = New ADODB.Connection
        Db.Open(Msg1)
    Catch ex As Exception
        MsgBox("Can't connect to Database" & vbCrLf & ex.Message)
    End Try

将其放在form_load源上(用于sql连接或如何打开Excel文件作为参考,您可以在Internet上搜索如何使用它。)

put that on form_load source. (for sql connection or how to open excel file as reference you can search on internet how to used it.)

在这种情况下,您可以将垂直值(y轴)作为记录索引0,将其他索引作为水平(x轴)

on this open case. you can put vertical value (y axis) as record index 0, and other index as horizontal (x axis)

可能是这样的:

    Chart1.Series("[series1]").Points.AddXY(Rs(1).Value, Rs(0).Value)
    Chart1.Series("[series2]").Points.AddXY(Rs(2).Value, Rs(0).Value)
    Chart1.Series("[series3]").Points.AddXY(Rs(3).Value, Rs(0).Value)
    Chart1.Series("[series3]").Points.AddXY(Rs(4).Value, Rs(0).Value)

您可以尝试使用此代码。

you can try this code.

这是示例结果
示例图片

希望它可以帮助您和其他人。
谢谢

Hope it can help you and other. Thanks