Private Sub Command2_Click()
zw_xz = 0
Set rs = New Recordset
rs.Open "select * from users where packnum=" & Text3.Text, conn
Set rs1 = New Recordset
rs1.Open "select * from users where yn=0", conn
While Not rs1.EOF
If UBound(Split(rs1!treeid, ",")) > UBound(Split(rs!treeid, ",")) Then
If Split(rs1!treeid, ",")(UBound(Split(rs!treeid, ","))) = Text3.Text Then
zw_xz = zw_xz + 1
End If
End If
rs1.MoveNext
Wend
Text2.Text = UBound(Split(rs!treeid, ","))
Text1.Text = zw_xz
End Sub

解决方案 »

  1.   

    楼主究竟想实现什么功能,说清楚些。Split(rs1!treeid, ",")(UBound(Split(rs!treeid, ","))) = Text3.Text 这行有问题吧,两个函数怎么直接连起来了?
    Split函数返回的是一个一维的数组。
      

  2.   

    只用到一个字段treeid,没必要select * 返回所有字段
    rs1.Open "select treeid from users where yn=0", conn定义一个数组,用来存放Split(rs1!treeid, ","),不要每次都从数据库记录重新计算一次
      

  3.   

    rs.Open "select treeid from users where yn=0", conn
      

  4.   

    rs.Open "select treeid from users where packnum=" & Text3.Text, conn
      

  5.   

    想提高效率的話,最重要的就是修改一下rs.open中的內容,如下:
    rs.Open "select * from users where packnum=" & Text3.Text, conn,adOpenStatic, adLockReadOnly, adCmdText加上後面的那三個參數,可提高40%(如果你的記錄集用於隻讀的話)
      

  6.   

    狂晕,不指定参数默认是AdOpenForwardOnly仅向前类型游标,AdLockReadOnly,效率不会比静态游标低的。不指定最后一个参数会影响效率,因为必须调用提供者以确定Source参数是SQL 语句、存储过程还是表名,但影响不是很大。40%?哪里来的数字?