首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

重开第三帖关于mschart多曲线,希望这次有所突破解决方案

2011-12-27 
重开第三帖关于mschart多曲线,希望这次有所突破PrivateSubCommand1_Click()OnErrorResumeNextDimdata()AsS

重开第三帖关于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
完整的代码

热点排行