AccessのVBAの質問です。 下のような説明があります。

AccessのVBAの質問です。 下のような説明があります。 BOF プロパティは、カレント レコードの位置が先頭レコードより前にある場合に True (-1) を返し、カレント レコードの位置が先頭レコードにあるか、またはそれより後ろにある場合に False (0) を返します。 上の文章のなかで「カレント レコードの位置が先頭レコードより前にある場合に True (-1) を返し、……」とありますが、先頭レコードより前にカレント レコードがある場合というのが、イメージ出来ません。先頭より、前は、普通に何もないんじゃないでしょうか? 分かるように教えて下さい。

Microsoft Access24閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

2

1st Record <---Openしたときはポインタはココ、BOF/EOFともFalse 2nd Record : LASE Record レコードに位置付けられないのが、 ・最初のレコードの前(BOF)か、 ・最後のレコードの後か(EOF)になりますが、 1件もレコードの無いレコードセットをOpenすると、どちらにも当てはまるため、BOF/EOFともTureになります。 また、最終レコードから、さらにMoveNextしたときは、ポインタが位置付けられないので、EOFがTrueになります。

2人がナイス!しています

ThanksImg質問者からのお礼コメント

たくさんの回答ありがとうございました。 悩みましたが、一番納得できたonyさんをベストアンサーに選ばせて頂きました。 みなさん、ありがとうございました<(_ _)>

お礼日時:9/17 12:52

その他の回答(3件)

0

現在レコード位置を移動させる MoveNext で行きつく先が EOF で MovePrevious で行きつく先が BOF です。 わざとレコ―ドの末尾から先頭へ向かってレコードをリードするという案件もあることでしょう。

0

カレントレコードを示すポインタが、レコードが存在する範囲からはみ出したということです。

0

Microsoftのドキュメントを見られたのだと思いますが 原文を見ると BOF — Indicates that the current record position is before the first record in a Recordset object. と書かれており、 before がより前と訳されているようです。 beforeには以前という意味もあるので >先頭レコードより前にある場合・・・ というより 先頭レコード以前にある場合・・・ という方が厳密には合っているように思います。 機械的に翻訳されています。 原文に切り替えて表示も出来ますので 意味がちょっと分かりにくい場合は 原文を見ても良いかも知れません。

IF daoRS.BOF = True and daoRS.EOF = true then というコードがあって、Trueなら、レコードが存在しないようなのですが、意味が分からず、調べてみたところ、質問のような答えが書いてました。 色々調べみましたが、「カレント レコードの位置が先頭レコードより前にある場合に True (-1) を返し」というのは、正しいようで、①そんな状況があるのか?②それなら、「IF daoRS.BOF = True then」としただけでもレコードがないことが分かるのではないか?後半の「daoRS.EOF = true」が必要な理由は何なのかと疑問が生じたので質問させてもらいました。