- ベストアンサー
フォームの移動でのイベント
- WindowsXP SP3とoffice2000を使用している場合、フォームでテーブルの2つのデータを表示し、ページ移動のイベントを制御したい場合について質問です。
- 特定の条件に基づいてラベルの表示・非表示を制御するために、Form_Loadイベント内に条件分岐を追加したい場合について質問です。
- Form_Loadイベントにコードを追加することで、データに基づいてラベルの表示・非表示を制御することができるのかについて質問です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 > なにかプロパティの設定が間違っているのでしょうか? ちょっと原因が考えにくい状況ですね(汗) 念のため、の意味合いが強くなってしまいますが、以下の点を確認してみてください。 ・移動できるレコードがあるか: レコードソースが設定されていないフォーム(非連結フォーム)や「新規レコードのみ」 「1レコードのみ&追加不可」だった場合、フォームを開いた直後は同イベントが 発生しますが、以降は発生しないため、状況的には似ているかということで・・・(汗) ・マクロ/VBAで「レコード移動時(OnCurrent)」プロパティを切り替えていないか: 例えば、「Form_Current」Sub内で「Me.OnCurrent = ""」の代入を行うと、 以降のレコードイベント発生時にはコードが実行されなくなります。 ・当該mdbファイルに、新規のテーブル(レコードは適当に追加)と、それをレコードソースと するフォームを作成し、同様にレコード移動時イベントにMsgBoxを設定してみる: これでも同様に、展開時しかMsgBoxが表示されないとなると、当該mdbファイルか Accessアプリケーションが破損していると推測されるため、修復か再インストールと いうことになります。 (当該mdbファイルで不可だった場合は新規mdbファイルで同様に試してみて、 再現するならアプリケーションの問題、再現しないならファイルの問題、と) ※ファイルの修復については、当該ファイルを開いた状態で、Accessのメニューから 「ツール(T)→データベース ユーティリティ(D)」内に、該当するものがあったと思います。 (こちらはAccess2003で、Access2000とはこの辺りの項目に違いがあったような記憶 があるため、明示できませんが(汗)) ・・・お役に立てるかわかりませんが、参考まで。
その他の回答 (1)
- DexMachina
- ベストアンサー率73% (1287/1744)
プロパティシートで「レコード移動時」、VBAで「Current」イベントがご希望に 沿うかと思います。 Private Sub Form_Current() If Me!フィールド名 = 0 Then 'フィールドの値が0の場合 Me!ラベル名.Visible = False Else 'フィールドの値が0以外の場合 Me!ラベル名.Visible = True End If End If 【以下、蛇足】 恐らく単票型フォームを使用されているものと思いますので問題はないはずですが、 もしも帳票型の場合は、ラベルの表示/非表示は全てのレコードで同じ(→フォームの 左端に、横向きの「▼」があるレコード(=カレントレコード)の値で判定される)に なりますので、ご注意下さい。
補足
返答ありがとうございます 単票型で作っています。 レコード移動時にイベントプロシージャーで msgbox "a"としてみたのですが 最初に読み込むときにしか実行されません なにかプロパティの設定が間違っているのでしょうか? 申し訳ありませんがなにかお分かりでしたら教えてください 以上よろしくお願いします。
お礼
無事解決することができました ありがとうございました