![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.1ベストアンサー
- 回答日時:
> そもそもフォームを開いただけでカレントレコードが移動してるのでしょうか?
「フォームを開くことで初めて最初のレコードが表示が表示される」という意味では、
「無→先頭」ということで移動しています、という説明はできるのですが・・・
実際には、Accessでは(・・・で、いいんですよね?(汗))、レコードソースが設定されていない
「非連結フォーム」でもCurrentイベントが発生してしまいますので、
「フォームの展開時に発生する」のは「仕様」として捉えた方がいいのかもしれません(汗)
(もしかしたら「テーブルやフィールドが何も定義されていないレコードセットが開かれている」
という解釈なのかも・・・?)
> IF文などを設けるしかないのでしょうか?
そういうことになるかと思います。
データベースウィンドウ(テーブルやフォームの一覧が表示される画面)や、別フォームから
DoCmd.OpenFormなどで開くのみなら(注:下記「※」参照)、「Me.Visible」で判定
できます。
Private Sub Form_Current()
'フォーム展開時はCurrentイベントの処理を実行しない
If Me.Visible = False Then Exit Sub
'レコード移動時の処理(ここではMsgBoxで代用)
MsgBox "Currentイベントの処理を実行します。"
End Sub
※フォームのデザインビューからフォームビューに切り替えた場合は、Visible=Trueとなる
ため、Currentイベントの処理が実行されてしまいます。
この回答へのお礼
お礼日時:2009/12/06 15:30
説明不足ですいません。アクセス2003です。
なるほど。「無→先頭」へ移動ということですか。
仕様ということで割り切ります。
どうもありがとうございました。
No.2
- 回答日時:
No.1です。
改めて考えてみたのですが・・・「レコード移動時」という言葉にとらわれすぎていた
かもしれません(汗)
英語、或いはVBAでは「Current」(プロパティ名としてはOnCurrent)となって
いますので、直訳すれば「現在」、意訳で「現状」程度になるかと思います。
つまり、フォームを開くとき、及びレコード移動の際には、表示データの「現状確認」
(→連結コントロールならレコードのデータの確認、非連結コントロールなら初期値
(DefaultValueプロパティの値を含めて))が行われます。
この、「フォーム単位での表示内容の確認・更新」が行われるときに発生するのが
「Current」イベントだと考えれば、フォームの展開時とレコードの移動時でそれぞれ
このイベントが発生するのも妥当ということになるのではないでしょうか。
※元々が「Current」プロパティと「CurrentRecord」という紛らわしく思える名前が
使われているところに、「レコード移動時」の和名(?)で、私も完全にレコード関連
のものと誤解していましたが(汗)、「現状確認時」といった名前の方がふさわしかった
のかもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) フレームワーク「4.8.1」で、[Sub Main]が動かない。助けて下さい 3 2022/11/14 15:40
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- Access(アクセス) MSaccessのレポートを開く 2 2022/09/01 13:16
- Access(アクセス) docmd.gotorecordを起動するには 5 2022/06/17 15:20
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- Access(アクセス) Access の SetFocus について教えてください 5 2022/08/04 07:32
- 楽器・演奏 ★この考え方 どう思われますかぁ? 5 2023/06/08 16:44
- Access(アクセス) Accessで独自メニューバーまたはリボンを作成したい 1 2022/12/02 14:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レコードを保存するコード ア...
-
ACCESS起動時に所定フォームを...
-
フィルタ後のフォームの件数の...
-
新規レコード行を非表示にしたい
-
Access2010、値を入力したら自...
-
ACCESSでフォームを使って、テ...
-
アクセスの自動保存解除はでき...
-
Access 帳票フォームでカレント...
-
Accessでのデータ消滅に...
-
Access 更新キャンセルするには?
-
アクセスでフォームビューがみ...
-
Access:フォームプロパティ「...
-
Access2002_メソッドまたはデー...
-
Access サブフォームにフィルタ...
-
Access 「このレコードを保存す...
-
アクセス データの競合を非表...
-
Access 連結フィールド値を自...
-
レコード削除時に(サブ)フォー...
-
Accessでフォーム上に 直前の...
-
Accessで一件の新規レコードの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードを保存するコード ア...
-
ACCESSでフォームを使って、テ...
-
アクセスでフォームビューがみ...
-
新規レコード行を非表示にしたい
-
フィルタ後のフォームの件数の...
-
Accessでレコードの保存をせず...
-
アクセスの自動保存解除はでき...
-
AccessVBA RecordSourceのリセ...
-
Accessでフォーム上に 直前の...
-
レコード削除時に(サブ)フォー...
-
ACCESSフォームのリストボック...
-
Access:フォームプロパティ「...
-
Accessで上の行を自動でコピー...
-
Access レコード移動時イベント...
-
accessのクエリで、該当するデ...
-
ACCESSのクエリで抽出したデー...
-
ACCESS起動時に所定フォームを...
-
Accessで新しいレコードに規定...
-
Access 「このレコードを保存す...
-
Access 帳票フォームでカレント...
おすすめ情報