以下程序有问题请高手指点:
Dim cn As New ADODB.Connection
Dim i As Single
Dim RS As New ADODB.Recordset
Dim B(1 To 9) As String, C(1 To 5) As String, A(1 To 16) As String
Private Sub Form_Load()
C(1) = "50": C(2) = "70": C(3) = "80": C(4) = "110"
A(1) = "100": A(2) = "200": A(3) = "3000": A(4) = "400"
B(1) = "200": B(2) = "500": B(3) = "700": B(4) = "1000": B(5) = "2000"
cn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & App.Path & "\XX.mdb" '连接数据库
End Sub
Private Sub CText_Change(Index As Integer)
For Index = 0 To 2
i = 1
Do While Val(C(i)) < Val(CText(Index).Text)
i = i + 1
Loop
Call ABC
Next Index
End Sub
Private Sub BText_Change(Index As Integer)
For Index = 0 To 2
i = 1
Do While Val(B(i)) < Val(BText(Index).Text)
i = i + 1
Loop
Call ABC
Next Index
End Sub
Private Sub AText_Change(Index As Integer)
For Index = 0 To 2
i = 1
Do While Val(A(i)) < Val(AText(Index).Text)
i = i + 1
Loop
Call ABC
Next Index
End Sub
Sub ABC()
If AText(Index).Text <> "" And BText(Index).Text <> "" And CText(Index).Text <> "" Then
RS.Open "select * from YY where A='" & A(i) & "' AND C='" & C(i) & "'", cn, adOpenKeyset, adLockOptimistic
RS.MoveFirst
KLabel(Index) = RS(B(i))
RS.Close
End If
End Sub
------------------------
程序共有9个TEXTBOX,3个LABEL,9个TEXTBOX分3个TEXTBOX控件数组(ATEXT(0 TO 2),CTEXT(0 TO 2),BTEXT(0 TO 2),
3个LABEL为一个数组(KLABEL(i0 TO 2),数据库名XX.MDB 表为YY,表YY中有A,C,200,500,700,1000,2000七列,A列有(100,200,300,400),C列有(50,70,80,110)
BTEXT(i).text中输入值小于2000值,BTEXT(i).text中值小于200时取列200,BTEXT(i).text中值大于200同时小于500时
B(I)取列500,以此类推,ATEXT(I).TEXT值也一样,输入值假如为150时,A(I)取A列200,输入值假如为300时,A(I)取A列300,
C(I)也是如此确定,当A(I),B(I),C(I)都找到就通过数据库找到我要的数据。这个数据赋值给KLABEL(I).
查找分三排,只要每排的ATEXTBOX,BTEXTBOX,CTEXTBOX输完值就查询表YY,再通过KLABEL立即显示查询结果,不能通过其它比如COMMAND。
以上主要是数据库,过程,控件数组等知识的综合运用,请高手看看问题出在哪里,多谢!!!

解决方案 »

  1.   

    这代码要是能运行
    公鸡都能下蛋
    不要对我说
    就是运行不了,才让人找原因
    写这代码的人,根本连最基础的东西都不会
    change事件里的参数,index是传入参数,是个固定值来着
    也就是说你在CTEXT(0)里输数字的时候,那这个index就等于0
    你在CTEXT(1)里输数字的时候,那这个index就等于1
    居然还用for index=0 to 2,OMG
      

  2.   

    对于控件数组选择语句应该好过循环语句,不过循环语句照样可以行的通,下面的程序运行也OK哦,
    Private Sub A_Change(Index As Integer)
    For Index = 0 To 2
        lbl(Index) = Val(A(Index).Text) * Val(B(Index).Text) + Val(C(Index).Text)
    Next Index
    End Sub
    Private Sub B_Change(Index As Integer)
    For Index = 0 To 2
        lbl(Index) = Val(A(Index).Text) * Val(B(Index).Text) + Val(C(Index).Text)
    Next Index
    End Sub
    Private Sub C_Change(Index As Integer)
    For Index = 0 To 2
        lbl(Index) = Val(A(Index).Text) * Val(B(Index).Text) + Val(C(Index).Text)
        Next Index
    End Sub
      

  3.   

    ...看了第一帖无语...看了第三帖更无语...同情1楼的...被气坏了吧.你和他说index是传回固定值,他还一个劲地回答你,下面的程序运行也OK哦.
    TO 楼主:
    Private Sub A_Change(Index As Integer) 
     '你加了for index =0 to 2是想干吗?  index返回的值你不要了?如果是这样的话,你这程序也就是当ATEXT任何一个发生变化的时候
    lbl(Index) = Val(A(Index).Text) * Val(B(Index).Text) + Val(C(Index).Text)这句话执行三遍.你是想要这个结果吗?我寒For Index = 0 To 2  
        lbl(Index) = Val(A(Index).Text) * Val(B(Index).Text) + Val(C(Index).Text) 
    Next Index