请教大家一下,我如果要多次执行SQL语句,我现在是采用下面的这种写法:
If adoRS.State = adStateOpen Then adoRS.Close
SqlStr= "SELECT ...... FROM ...... WHERE ...... ;" '查询一
adoRS_1S.Open SqlStr_1S, db, adOpenStatic, adLockOptimisticIf adoRS.State = adStateOpen Then adoRS.Close
SqlStr= "SELECT ...... FROM ...... WHERE ...... ;" '查询二
adoRS_1S.Open SqlStr_1S, db, adOpenStatic, adLockOptimistic就是把数据集关了又重新打开执行新的SQL语句,请教大家一下有更简单的写法吗?或者不用把数据集关闭了又重新打开的写法?
谢谢大家了!!!    

解决方案 »

  1.   

    可以根据查询条件使查询字符串指向不同的内容
    if 条件1 then
     SqlStr="select ...."    '查询1
    else
     SqlStr="select ...."    '查询2
    endifadoRS_1S.Open SqlStr, db, adOpenStatic, adLockOptimistic 
      

  2.   

    不是楼上的意思,不是要选择执行SQL,是要顺序执行SQL。
      

  3.   

    如果是SQL数据库,可以用nextrecordset,比如:
    dim cn as conncetion
    dim rs as recordset
    dim sql as string'示例三个表的记录集
    sql="select * from tb1;"
    sql=sql & "select * from tb2;"
    sql=sql & "select * from tb3;"set cn=new connection
    cn.open "....."    '连接数据库set rs=cn.execute(sql)       '默认是第一个记录集
    debug.? rs.fields(0)set rs=rs.nextrecordset       '第二个记录集
    debug.? rs.fields(0)set rs=rs.nextrecordset       '第三个记录集
    debug.? rs.fields(0)set rs=nothing
    set cn=nothing
      

  4.   

    同一个连接,若是Open,就不用关闭了
      

  5.   

    关闭记录集和关闭数据库是二个概念如果你是在一个过程中要返回多个记录集,一个就是nextrecordset方法,要么在过程中:
    dim cn as connection
    dim rs as recordsetset cn=new connection
    cn.open......返回记录集
    set rs=new recordset
    rs.open sql ,cn....
    处理完成以后,要返回下一个记录集:
    set rs=new recordset
    rs.open sql ,cn....
    处理完成以后,要继续返回下一个记录集:
    set rs=new recordset
    rs.open sql ,cn....过程结束时:
    rs.close
    cn.close
    set rs=nothing
    set cn=nothing