注册 登录
编程论坛 VB6论坛

求助,关于数据库中数据保存到数组

瞬间暴炸 发布于 2017-04-13 18:32, 3881 次点击
朋友们,我想把数据库(data.mdb)中表(davis)中的两个字段(字段1、字段2)中数据保存到两个数组中,然后在picture上作为X、Y坐标显示出来,最后连接这些点做成一个折线图。下面是我的代码。
Private Sub Command4_Click()
Picture1.Cls
Picture1.ScaleMode = 0.5
Picture1.Scale (-2, 10)-(10, -10)
Picture1.DrawWidth = 1
Picture1.Line (-1, 0)-(9, 0), vbBlue
Picture1.Line (8.5, 0.5)-(9, 0), vbBlue
Picture1.Line (8.5, -0.5)-(9, 0), vbBlue
Picture1.ForeColor = vbBlue
Picture1.Print "X"
Picture1.Line (0, -9)-(0, 9), vbBlue
Picture1.Line (0.2, 8.5)-(0, 9), vbBlue
Picture1.Line (-0.2, 8.5)-(0, 9), vbBlue
Picture1.Print "Y"
For i = -8 To 8 Step 2
Picture1.CurrentX = 0
Picture1.CurrentY = i
Picture1.PSet (0.02, i)
Picture1.Print i
Next
For i = 0 To 8 Step 1
Picture1.CurrentX = i
Picture1.CurrentY = 0
Picture1.PSet (i, 0.02)
Picture1.Print i
Next                            以上是坐标系得代码,已经运行,没有错误。

    Dim Conn As New ADODB.Connection
    Dim Rs As New ADODB.Recordset
    Dim m As Long, Rc As Long
    Dim Zx() As Double, Zy() As Double
    Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\data.mdb;Persist Security Info=False"
    Conn.Open "select 字段1,字段2 from Davis", Conn, 1, 1
    Rc = Rs.RecordCount
    ReDim Zx(Rc) As Double
    ReDim Zy(Rc) As Double
    For m = 0 To Rc - 1
        Zx(m) = Rs(0)
        Zy(m) = Rs(1)
        Rs.MoveNext
    Next
    For m = 0 To 9
    Line (Zx(m), Zy(m))-(Zx(m), Zy(m))
    Next
End Sub              以上是在picture上表达出来,然后画折线图


最后程序还是无法运行,,求各位帮帮忙!!谢谢

5 回复
#2
风吹过b2017-04-13 20:11
    ReDim Zx(Rc) As Double
    ReDim Zy(Rc) As Double
redim 后面不能带类型。
    For m = 0 To 9
    Line (Zx(m), Zy(m))-(Zx(m), Zy(m))
    Next
这句是啥意思?
1.定循环???
2.画线的2个坐标是一个???

#3
瞬间暴炸2017-04-13 21:59
回复 2楼 风吹过b
Private Sub Command4_Click()
Picture1.Cls
Picture1.ScaleMode = 0.5
Picture1.Scale (-2, 10)-(10, -10)
Picture1.DrawWidth = 1
Picture1.Line (-1, 0)-(9, 0), vbBlue
Picture1.Line (8.5, 0.5)-(9, 0), vbBlue
Picture1.Line (8.5, -0.5)-(9, 0), vbBlue
Picture1.ForeColor = vbBlue
Picture1.Print "X"
Picture1.Line (0, -9)-(0, 9), vbBlue
Picture1.Line (0.2, 8.5)-(0, 9), vbBlue
Picture1.Line (-0.2, 8.5)-(0, 9), vbBlue
Picture1.Print "Y"
For i = -8 To 8 Step 2
Picture1.CurrentX = 0
Picture1.CurrentY = i
Picture1.PSet (0.02, i)
Picture1.Print i
Next
For i = 0 To 8 Step 1
Picture1.CurrentX = i
Picture1.CurrentY = 0
Picture1.PSet (i, 0.02)
Picture1.Print i
Next

Dim Conn As New ADODB.Connection
    Dim Rs As New ADODB.Recordset
    Dim i As Long, Rc As Long
    Dim zX() As Single, zY() As Single
   
    Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\data.mdb;Jet OLEDB:Database password="
    Conn.Open
    Rs.Open "select 编号,饱和指数 from Davis", Conn, 1, 1
    Rc = Rs.RecordCount
    ReDim zX(Rc) As Single, zY(Rc) As Single
    For i = 1 To Rc
        zX(i) = Rs(0)
        zY(i) = Rs(1)
        Rs.MoveNext
    Next
    Rs.Close
    Conn.Close
   
    Pic.Scale (0, 7)-(12, 4)
    For i = 1 To Rc - 1
        Pic.Line (zX(i), zY(i))-(zX(i + 1), zY(i + 1))
    Next
End Sub


这是修改过的,,还是不对
#4
风吹过b2017-04-14 09:18
你绘图出来的图像是怎么样的?是缩到一点基本找不到,还是什么情况啥都没有,还是图像是倒的。

因为没有数据库,所以无法调试。

你代码里也没有出现任何设置坐标系的代码,
如果使用的是默认坐标系,你的代码里只能缩到一点基本找不到。

你可以参考我的代码。
https://bbs.bccn.net/viewthread.php?tid=306299

调用函数,把数据一个一个的加进去。

[此贴子已经被作者于2017-4-14 09:19编辑过]

#5
xiangyue05102017-04-14 16:48
同意楼上,可能是比例的问题
#6
ZHRXJR2017-04-15 20:11
发现了几个问题,
1、Rs.Open "select 编号,饱和指数 from Davis", Conn, 1, 1   这个后面的 1, 1 是不可以的,因为你可能不了解这二个数的意义。
2、    Rc = Rs.RecordCount    '要得到记录集的总数,这个 1, 1 需要修改为 3, 2
3、    ReDim zX(Rc) As Single, zY(Rc) As Single   在给动态变量定义下标时,不能再次声明数据类型,数据类型只能在开始定义动态数组是声明
正确的应该是:
    Rs.Open "select 编号,饱和指数 from Davis", Conn, 3, 2
    Rc = Rs.RecordCount
    ReDim zX(Rc), zY(Rc)

[此贴子已经被作者于2017-4-15 20:16编辑过]

1