Dim connectionString,sql As String
Dim cn As ADODB.connection
Dim rs As ADODB.recordset
dim cityIDArry() as string
dim provIDArry() as string
connectionstring="Privide=.................."
cn.open(connectionstring)
cn.CursorLocation = adUseClient
   :
   :
for i=0 to UBound(cityArry)
sql="select 市号,省号 from 市县 where 名称='" & cityArry(i) & "'"    'cityArry()是一个城市名称数组
rs.open sql,cn,1,3
cityIDArry(i)=rs(0)
proIDArry(i)=rs(1)
next i
rs.close
  :
  :
本来想实现把查询的结果存入数组,但不知rs能否这样用,还是用的不对,运行后出现"BOF或EOF中有一个是真,或者当前记录已被删除,所需的操作要求一个当前的记录",不知哪儿错误,请高手指教,不胜感谢!!!

解决方案 »

  1.   

    1.
      if rs.eof=false then 
        cityIDArry(i)=rs(0)
       proIDArry(i)=rs(1)
      endif2.沒有關聯接就又打開了。
       if rs.state<>adstateclosed then rs.close
        rs.open sql
      

  2.   

    有一个建议:
    记录集的open方法不益在循环中使用,个人认为一般情况下它比较循环读取记录集慢。
    是不是可以这样:sql="select 市号,省号 from 市县"
    rs.open sql,cn,1,3
    for i=0 to UBound(cityArry)
       if not rs.bof then rs.movefirst
       do while not rs.eof
          if rs!名称=cityArry(i) then
             cityIDArry(i)=rs(0)
             proIDArry(i)=rs(1)
             exit do
          end if
          rs.movenext
       loop
    next i
    rs.close
    set rs=nothing仅供参考!