摘要:RecordSet判斷是否有資料的觀念
常看到許多網友,在使用Recordset的時候,會出現這樣的錯誤
ADODB.Recordset (0x800A0BCD)
可能是 BOF 或 EOF 的值為 True,或目前的資料錄已被刪除。所要求的操作需要目前的資料錄。
或者有加了判斷是否有值,可是卻只是下了以下的判斷式
If Not rs.EOF Then
.....
其實RecordSet撈取資料後,狀態類似一個陣列
並且在陣列的最上方有個BOF以及最下方有個EOF
當rs有值的時候
rs是這樣的
==============================
rs.BOF
-----------------------------
第1筆
第2筆
第3筆
第4筆
第5筆
....
最後一筆
-------------------------------
rs.EOF
===============================
所以當rs.MoveLast之後
如果再執行rs.MoveNext
就會focus在rs.EOF
同理..rs.BOF也是在第1筆之前
所以當rs沒有資料的時候
會是以下這樣
===========================================================
rs.BOF rs.EOF
===========================================================
也就是focus會在rs.BOF 與rs.EOF同時成立的地方
因此
如果要判斷rs沒有資料
應該下以下的語法
'rs沒有資料處理
Else
'rs有值的處理
End If
相關的寫法小喵整理如下:
ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/abc.mdb") & ";Persist Security Info=False"
Set rs=Server.CreateObject("Adodb.RecordSet")
With rs
.CursorLocation = 2
.CursorType = 3
.LockType = 3
.ActiveConnection = Conn
End With
sql="SELECT * FROM TBL1"
rs.Open sql
If Not(rs.BOF And rs.EOF) Then
rs.MoveFirst
For y = 1 to rs.RecordCount
'有資料的相關處理
rs.MoveNext
Next
Else
Response.Write("無資料!!")
End If
希望對大家有幫助
^_^
以下是簽名:
- 歡迎轉貼本站的文章,不過請在貼文主旨上加上【轉貼】,並在文章中附上本篇的超連結與站名【topcat姍舞之間的極度凝聚】,感恩大家的配合。
- 小喵大部分的文章會以小喵熟悉的語言VB.NET撰寫,如果您需要C#的Code,也許您可以試著用線上的工具進行轉換,這裡提供幾個參考
Microsoft MVP Visual Studio and Development Technologies (2005~2019/6) | topcat Blog:http://www.dotblogs.com.tw/topcat |