Set Rs = New ADODB.Recordset
Rs.ActiveConnection = Conn
Rs.CursorType = adOpenForwardOnly
Rs.CursorLocation = adUseServer
Rs.Source = "Select语句"
Rs.Open
 If Rs.EOF() = False And Rs.BOF() = False Then
    While Rs.EOF = False
      Rs.MoveNext
      语句
    Wend
  End If
  Rs.Close
  Set Rs = Nothing
  Conn.Close
  Set Conn = Nothing
当记录较多的时候,速度慢(窗口无反应几秒,而且数据库还是在本机上),
实际应用中,多用户可能同时调用上面的过程,且数据库放在广域网上,怎么样优化效率呢,Doevent()函数可以在这里使用吗

解决方案 »

  1.   

    '試試會不會快一點:
    dim rs as adodb.recordset
    dim intCursor as integer
    intCursor = Conn.CursorLocation
    Conn.CursorLocation = adUseClient
    Set rs = New ADODB.Recordset
    rs.Open SQL語句, Conn, adOpenForwardOnly, adLockReadOnly, adCmdText
    do until rs.eof
        语句
        rs.movenext
    loop
    rs.close
    set rs=nothing
    Conn.CursorLocation = intCursor
      

  2.   

    如果只对数据读取,可以将游标类型改为客户端游标,这样会快很多,不只是一点点。就像leolan(史留香) 写的那样。
      

  3.   

    使用了子查询,会不会有影响?
    Rs.Source = "Select 姓名,学号,课程,成绩,学期,补考,备注  from 成绩 where stuid="
     Rs.Source = Rs.Source + "( Select ID from 学生花名册 where 学号='" + Trim(ID) + "')"
     Rs.Source = Rs.Source + " AND 学期 like '" + Term + "'"
      

  4.   

    Conn.CursorLocation = adUseClient 
    多数情况下已经足够