重开第三帖关于mschart多曲线,希望这次有所突破
Private Sub Command1_Click()
On Error Resume Next
Dim data() As String
data() = Split(Text1.Text, ", ")
For j = 0 To UBound(data())
If data(j) = " " Then
MsgBox "请输入您要分析的ID号 "
Exit Sub
End If
txtSQL = "select * from 监控温度表 where id = " & data(j) '查询语句
Set rs = ESQL(txtSQL) '执行查询语句
If rs.RecordCount > 0 Then '当记录大于零时
rs.MoveFirst '移到第一条记录
nums = rs.RecordCount '给nums赋值
ReDim arrValues(1 To nums, 1 To 3) '定义动态数组
For i = 1 To nums '给数组赋值
arrValues(i, 1) = " " '& Format(rs1!时间, "hh:mm ")
arrValues(i, 2) = val(rs.Fields( "温度 "))
arrValues(i, 3) = val(Rnd * 20 + 15) '我添加了条随机显示数据的曲线
rs.MoveNext
Next i
MSChart1.ChartData = arrValues
End If
Next j
End Sub
比如现在我 在 text1.text 中输入id号为1,2,3,4
则在 mschart中显示出id=(1,2,3,4)4条曲线
横坐标为时间轴 纵坐标为 温度
现在我输入的总是得到的是最后 一个ID号的曲线(我输入1,2,3则只能得到id=3的曲线)
[解决办法]
我们同是跟mschart较劲的人啊
我给你一个比较麻烦,但是可控性强的办法就是数组,然后循环给mschar赋值
你是不是用xy的那个模式,想显示温度,时间上的那个点?
如果是这样的话,那么二维数组就够了,一个x,一个y
arrValues(i, 1) = " " '& Format(rs1!时间, "hh:mm ")
arrValues(i, 2) = val(rs.Fields( "温度 "))
这样足够让mschart显示横纵坐标交点了
用1,2两条曲线为例
你再循环之前,首先设定rowcount=nums(有可能你每次取出来的recourdcount不同,那么就要每次调整一下,让rowcount保持那个最大的nums
然后在Next j之前画mschart
这里要说明的是columncount=2*你要取的曲线条数在我用的这个例子里面就是2*2=4
下面我们来画mschart
With chart
For i = 1 To ubound(arrValues)
.DataGrid.SetData i, j, arrValues(i, 1), 0
.DataGrid.SetData i, j+1, arrValues(i, 2), 0
Next i
end with
next j
这样就不会覆盖到前一条了
[解决办法]
Private Sub Command1_Click()
On Error Resume Next
Dim date1 As String
' ' ' ' ' ' ' ' ' ' ' ' ' ' '
Dim Data() As String
Data() = Split(Text1.Text, ", ")
For j = 0 To UBound(Data())
If Data(j) = " " Then
MsgBox "请输入您要分析的ID号 "
Exit Sub
End If
txtSQL = "select * from 监控温度表 where id = " & Data(j) '查询语句
Set rs = ESQL(txtSQL) '执行查询语句
If rs.RecordCount > 0 Then
date1 = rs!id
MSChart1.Visible = True
Else
MsgBox "没有你要分析的数据!!! "
Exit Sub
End If
If rs.EOF Then
MsgBox "无查询数据!请选择合适的时间段查询! "
Exit Sub
End If
If rs.RecordCount > 0 Then '当记录大于零时
rs.MoveFirst '移到第一条记录
nums = rs.RecordCount '给nums赋值
ReDim arrValues(1 To nums, 1 To 2) '定义动态数组
For i = 1 To nums '给数组赋值
arrValues(i, 1) = " " '& Format(rs1!时间, "hh:mm ")
arrValues(i, 2) = val(rs!温度)
'arrValues(i, 3) = val(rs!湿度)
'arrValues(i, 3) = val(Rnd * 7 + 18)
'arrValues(i, 4) = val(Rnd * 12 + 15)
rs.MoveNext
Next i
With MSChart1
.RowCount = 250
.ColumnCount = Len(Text1.Text) \ 2 + 1
.ColumnLabel = Left(Text1.Text, 1) & "号温度 "
For i = 1 To UBound(arrValues)
.DataGrid.SetData i, j, arrValues(i, 1), 0
.DataGrid.SetData i, j + 1, arrValues(i, 2), 0
Next i
End With
With MSChart1.Plot.Axis(VtChAxisIdX).CategoryScale
.Auto = False
.DivisionsPerTick = nums
End With
End If
End Sub
完整的代码