我用 mschart 画两条曲线,数据库为access,从一个数据库中的两张表中调出数据画在一个mschart中成两条直线.
两张表数据表格式为
监测时间   格式 文本
序列       格式 数字
数据       格式 数字
程序代码如下,但只能画出一条直线,而且出的问题是横坐标显示不出日期(可能原因是数据格式问题,监测时间建表的时候给的是文本)
Private Sub Command1_Click()
Dim MaxSec As Double, MinSec As Double, TempSec As Double
Dim DbName As String
Dim Conn As New ADODB.Connection
Dim Rst1 As New ADODB.RecordsetDim MyData1() As DoubleSet Conn = New ADODB.Connection
Set Rst1 = New ADODB.Recordset
DbName = App.Path & "\华北数据库.mdb" '这里根据你的数据库存放目录来更改
SetConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DbName & ";Persist Security Info=False"
Conn.ConnectionString = SetConnStr: Conn.Open
Rst1.Open "select 监测时间,数据 from 实验水位2", Conn, adOpenKeyset, adLockOptimistic '表的名字为:gytagb,可根据需要来更改ReDim MyData1(Rst1.RecordCount - 1, 1)
MaxSec = 0: MinSec = 0: MinSec = 0
For i = 0 To Rst1.RecordCount - 1
    MyData1(i, 0) = Rst1(0).Value '第一列存放X轴数据
    MyData1(i, 1) = Rst1(1).Value '第二列存放Y轴数据
    'TempSec = Rst1(0).Value
    TempSec = Left$(Rst1(0).Value, 6)
    If i = 0 Then
    MaxSec = TempSec: MinSec = TempSec
    End If
    If TempSec > MaxSec Then MaxSec = TempSec '求最大值
    If TempSec < MinSec Then MinSec = TempSec '求最小值
    Rst1.MoveNext
Next
Rst1.Close: Conn.Close
Set Rst = Nothing: Set Conn = Nothing
'波形图外观设置
With MSChart1
    .chartType = VtChChartType2dXY '设置图形为二维散点图'注意本语句的位置,如果放在最后X轴坐标将显示成小数而非时间格式
    .TitleText = "水位监测"
    ' '设置图线的外观
    .Plot.SeriesCollection(1).Pen.Width = 30
    .Plot.SeriesCollection(1).Pen.Style = VtPenStyleSolid
    ' '设置XY轴
    .Plot.Axis(VtChAxisIdX).ValueScale.Auto = False
    .Plot.Axis(VtChAxisIdY).ValueScale.Auto = False
    '// 设置最大值
    .Plot.Axis(VtChAxisIdX).ValueScale.Maximum = MaxSec '这里根据你的数据库中的最大值设置一合适值
    .Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 28 '这里根据你的数据库中的最大值设置一合适值
    '// 设置最小值
    .Plot.Axis(VtChAxisIdX).ValueScale.Minimum = MinSec
    .Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 25
    '设置X轴标签显示格式
    '.Plot.Axis(VtChAxisIdX).Labels(1).Format = "yyyy"
    .Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 20 'X轴主要网格数量
    .Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 10 'Y轴主要网格数量
    .Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 0 'X轴次要网格数量
    .Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 0 'Y轴次要网格数量
    .Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted
    .Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen.Style = VtPenStyleDotted
    .Plot.Axis(VtChAxisIdX).Labels(1).VtFont.Size = 8
    '.Plot.Axis(VtChAxisIdY2).AxisScale.Hide = True
    '.Plot.Axis(VtChAxisIdY2).ValueScale.Auto = False
'.Plot.Axis(VtChAxisIdY2).AxisGrid.MinorPen.Style = VtPenStyleNull
'.Plot.Axis(VtChAxisIdY2).AxisGrid.MajorPen.Style = VtPenStyleNull    .Plot.AutoLayout = False
    .Plot.UniformAxis = False
    
    .ChartData = MyData1 '数据
    '.ChartData = Mydata2
End WithEnd Sub我现在也不知道该怎么画第二条曲线和横坐标画法!求教各位高手!或者给个画两条曲线的例子!

解决方案 »

  1.   

    '同时取两组数据
    sSQl = "select 监测时间,数据 from 实验水位1 t1 join 实验水位2 t2 on t1.监测时间=t2.监测时间"
    Rst1.Open sSQL, Conn, adOpenKeyset, adLockOptimistic
    ...
    MyData1(i, 0) = Rst1(0).Value '第一列存放X轴数据 
    MyData1(i, 1) = Rst1(1).Value '第二列存放第一组数据Y值
    MyData1(i, 2) = Rst1(2).Value '第三列存放第二组数据Y值
    ...
    .chartType = VtChChartType2dLine '这样可以线索多条线
    其它求最大值、最小值,设置线形等相应调整