请高手优化一下

lemon2000 2003-08-21 11:32:36
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
...全文
21 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
viena 2003-08-26
  • 打赏
  • 举报
回复
狂晕,不指定参数默认是AdOpenForwardOnly仅向前类型游标,AdLockReadOnly,效率不会比静态游标低的。不指定最后一个参数会影响效率,因为必须调用提供者以确定Source参数是SQL 语句、存储过程还是表名,但影响不是很大。40%?哪里来的数字?
TaoGeGe 2003-08-26
  • 打赏
  • 举报
回复
想提高效率的話,最重要的就是修改一下rs.open中的內容,如下:
rs.Open "select * from users where packnum=" & Text3.Text, conn,adOpenStatic, adLockReadOnly, adCmdText

加上後面的那三個參數,可提高40%(如果你的記錄集用於隻讀的話)
viena 2003-08-26
  • 打赏
  • 举报
回复
rs.Open "select treeid from users where packnum=" & Text3.Text, conn
viena 2003-08-26
  • 打赏
  • 举报
回复
rs.Open "select treeid from users where yn=0", conn
viena 2003-08-26
  • 打赏
  • 举报
回复
只用到一个字段treeid,没必要select * 返回所有字段
rs1.Open "select treeid from users where yn=0", conn

定义一个数组,用来存放Split(rs1!treeid, ","),不要每次都从数据库记录重新计算一次
lemon2000 2003-08-26
  • 打赏
  • 举报
回复
帮帮忙了!!如果分不够可以多加!!
wumy_ld 2003-08-22
  • 打赏
  • 举报
回复
楼主究竟想实现什么功能,说清楚些。

Split(rs1!treeid, ",")(UBound(Split(rs!treeid, ","))) = Text3.Text 这行有问题吧,两个函数怎么直接连起来了?
Split函数返回的是一个一维的数组。
minghui000 2003-08-22
  • 打赏
  • 举报
回复
路过。帮你UP一下
lemon2000 2003-08-22
  • 打赏
  • 举报
回复
这个程序运行是没有问题的!就是我对这个程序的效率不是很满意。
这是一个树形结构的数据库,这个就是找出一个记录的下线里面有多少yn字段等于0的!!

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧