重开第三帖关于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())