English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

If Not account.EOF Or Not account.BOF And (account.Fields.Item("account_browselimit").Value) = 10 Then

為什麼再後面加入"And (account.Fields.Item("account_browselimit").Value) = 10 "會出現

錯誤類型:
ADODB.Field (0x800A0BCD)
可能是 BOF 或 EOF 的值為 True,或目前的資料錄已被刪除。所要求的操作需要目前的資料錄。

的錯誤訊息???

是因為我把or跟and一起使用導致系統分辦不出來嗎.?

請大大幫我看一下,謝謝

2007-08-24 18:19:28 · 1 個解答 · 發問者 蘋果多 3 in 電腦與網際網路 程式設計

1 個解答

你把情況用真值表寫寫究知道原因了。舉個檔案已到結尾的情況,所以:

account.EOF = true;
account.BOF = false;

依照惰性運算或者最小化運算原則,由左至右,下面情況不會往右繼續運算右邊的值:

true OR (any condition)
false AND (any condition)

其他情況都會繼續往右計算。所以:

Not account.EOF OR Not account.BOF
= Not true OR Not false
= false OR true
= true

下一個運算子是 AND ,照上面的惰性運算規則,電腦不會照你的意思停下來,繼續往右運算,碰到這個值:

(account.Fields.Item("account_browselimit").Value) = 10

就發生違法存取。

要修正,檢查邊界的判斷要單獨放在最外邊。

2007-08-24 20:02:34 · answer #1 · answered by mh 7 · 0 0

fedest.com, questions and answers