首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

[] rs.fields EOF或BOF有一个是真或已被删除

2013-02-25 
[求助] rs.fields EOF或BOF有一个是真或已被删除idvalue200125412506这是excel表,里面有ID,value是空的,需

[求助] rs.fields EOF或BOF有一个是真或已被删除

idvalue
2001
2541
2506

这是excel表,里面有ID,value是空的,需要从数据库里选取value值然后填到excel表里,但是走到一半老是提示“rs.fields EOF或BOF有一个是真或已被删除”


rs.open "select id,value from table1",conn, adOpenForwardOnly, adLockReadOnly

While Not rs.EOF Or Not rs.BOF
  for i=2 to sheet1.UsedRange.Rows.Count
     if sheet1.cells(i,1)=rs.Fields("id").Value then
           sheet1.cells(i,2)=rs.Fields("value").Value
     end if
  next i 
rs.movenext
wend

[解决办法]
你的判断有问题,无法判断出bof或者eof,只能判断出无记录的情况;当bof真,则eof假 not 一下,就为真,必然进入循环;参看红色的修改

rs.open "select id,value from table1",conn, adOpenForwardOnly, adLockReadOnly   
While Not (rs.EOF Or rs.BOF)   
for i=2 to sheet1.UsedRange.Rows.Count      
if sheet1.cells(i,1)=rs.Fields("id").Value then            
sheet1.cells(i,2)=rs.Fields("value").Value      
end if   
next i  
rs.movenext 
wend
[解决办法]

rs.open "select id,value from table1",conn, adOpenForwardOnly, adLockReadOnly

do While Not rs.EOF
  for i=2 to sheet1.UsedRange.Rows.Count
     if sheet1.cells(i,1)=rs.Fields("id").Value then
           sheet1.cells(i,2)=rs.Fields("value").Value
     end if
  next i 
  rs.movenext
loop
 

热点排行