關於bof及eof ( 积分: 100 )

  • 主题发起人 主题发起人 hmcheery
  • 开始时间 开始时间
H

hmcheery

Unregistered / Unconfirmed
GUEST, unregistred user!
我用adoquery做一個查詢,然後用while&nbsp;作循環,如下:<br>adoquery1.First;<br>&nbsp;while&nbsp;not&nbsp;adoquery1.Eof&nbsp;do<br>&nbsp;begin<br>&nbsp;&nbsp;showmessage('ssss');&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;adoquery1.Next;<br>&nbsp;end;<br><br>我發理每次都忽略最後一筆,即當指在最後一條記錄時&nbsp;adoquery1.eof&nbsp;就為true了,如果查詢隻有一筆記錄,則不做任何動作,不知為什麼,這種情況我去年好象也碰到過一次!<br>請賜教!數據庫用sqlserver&nbsp;,用ADO連接!
 
怎麼沒人回答呀!快點發發善心吧!
 
应该不会的,肯定是你看花了眼。你可以这样写试试看:<br>with&nbsp;ADOQuery&nbsp;do<br>begin<br>&nbsp;&nbsp;First;<br>&nbsp;&nbsp;while&nbsp;not&nbsp;Eof&nbsp;do<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;ShowMessage(FieldByName('表中字段名').AsString);<br>&nbsp;&nbsp;&nbsp;&nbsp;Next;<br>&nbsp;&nbsp;end;<br>end;
 
好像是个别数据库有这个问题,不是access就是mysql.....忘了<br><br>改成这样吧<br>for&nbsp;i:=0&nbsp;to&nbsp;adoquery1.recordcount-1&nbsp;do<br>begin<br>&nbsp;&nbsp;...<br>&nbsp;&nbsp;adoquery1.next;<br>end;
 
没碰到过。。试试楼上的法子。for语句
 
我也是沒辦法才改成上面的寫法,但我實在想知道為什麼會出現這樣的情況!
 
BOF、EOF&nbsp;属性<br>BOF&nbsp;指示当前记录位置位于&nbsp;Recordset&nbsp;对象的第一个记录之前。<br><br><br>EOF&nbsp;指示当前记录位置位于&nbsp;Recordset&nbsp;对象的最后一个记录之后。&nbsp;<br>返回值<br><br>BOF&nbsp;和&nbsp;EOF&nbsp;属性返回布尔型值。<br><br>说明<br><br>使用&nbsp;BOF&nbsp;和&nbsp;EOF&nbsp;属性可确定&nbsp;Recordset&nbsp;对象是否包含记录,或者从一个记录移动到另一个记录时是否超出&nbsp;Recordset&nbsp;对象的限制。<br><br>如果当前记录位于第一个记录之前,BOF&nbsp;属性将返回&nbsp;True&nbsp;(-1),如果当前记录为第一个记录或位于其后则将返回&nbsp;False&nbsp;(0)。<br><br>如果当前记录位于&nbsp;Recordset&nbsp;对象的最后一个记录之后&nbsp;EOF&nbsp;属性将返回&nbsp;True,而当前记录为&nbsp;Recordset&nbsp;对象的最后一个记录或位于其前,则将返回&nbsp;False。<br><br>如果&nbsp;BOF&nbsp;或&nbsp;EOF&nbsp;属性为&nbsp;True,则没有当前记录。<br><br>如果打开没有记录的&nbsp;Recordset&nbsp;对象,BOF&nbsp;和&nbsp;EOF&nbsp;属性将设置为&nbsp;True,而&nbsp;Recordset&nbsp;对象的&nbsp;RecordCount&nbsp;属性设置为零。打开至少包含一条记录的&nbsp;Recordset&nbsp;对象时,第一条记录为当前记录,而&nbsp;BOF&nbsp;和&nbsp;EOF&nbsp;属性为&nbsp;False。<br><br>如果删除&nbsp;Recordset&nbsp;对象中保留的最后记录,BOF&nbsp;和&nbsp;EOF&nbsp;属性将保持&nbsp;False,直到重新安排当前记录。
 
打开至少包含一条记录的&nbsp;Recordset&nbsp;对象时,第一条记录为当前记录,而&nbsp;BOF&nbsp;和&nbsp;EOF&nbsp;属性为&nbsp;False。
 
樓上的謝謝你的解釋,理論上講是這樣,現在我碰到的情況就是不一樣,當記錄指在最後一條記錄時,eof屬性就為true,就是不知為什麼?
 
你用的是什么数据库?每种你都试过了(sqlserver&nbsp;,oracle),还是你程序写的有问题。以上代码应该只是你程序的一部分吧
 
多人接受答案了。
 
后退
顶部