帳票フォームなどのレコード一覧から、同じレコードの詳細フォームを開いて編集することがあります。
この編集フォームを閉じる場合、編集した内容を保存して閉じるだけでなく、編集した内容をキャンセルして閉じたいということもあります。
編集フォームに[保存]ボタンと[キャンセル]ボタンを設置して、マクロアクションで設定します。
何も編集しないまま[キャンセル]ボタンをクリックしてもエラーメッセージが出ないように対処します。
参考ここでのウィンドウの表示は[ウィンドウを重ねて表示する]の設定にしています。
-
[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い
Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...
テーブルとフォームの確認
商品マスターとして、以下のようなテーブル[T_商品]を作成しています。
以下は、デザインビューです。
フォームの作成
テーブル[T_商品]をもとに帳票フォームを作成して、[編集]ボタンをクリックすると、同じIDのレコードを単票フォームで開くように設定しています。
帳票フォーム[F_編集]の[編集]ボタンには、クリック時イベントのマクロアクションで設定しています。
参考同じIDのレコードを開く設定については、以下の記事で解説しています。
-
データシートの[ID]をクリックして単票(詳細)フォームを開く
フォームのデータシートビューの[ID]番号をクリックしたら、その[ID]の単票フォームを開く方法です。 データシートのフォーム名は[F_デー ...
クエリを作成して設定する方法も解説しています。
-
帳票フォームのボタンをクリックして同じIDの単票フォームを起動する
Accessで、帳票フォームから同じIDの単票フォームをボタンで起動する方法を解説します。 横に長い情報より、1つのウィンドウで表示したいと ...
レコードを保存して閉じる[保存]ボタンの作成
編集用のフォームにレコードを保存するための[保存]ボタンを設置します。
フォームをデザインビューで開いて、[フォームデザイン」タブの[コントロール]から[ボタン]をクリックして任意の位置へドラッグします。
ウィザードが表示されたら[キャンセル]します。
プロパティを開いて、コマンドボタンの[標題]と[名前]を付けます。
コマンドボタンのプロパティは、[F4]キーで表示することができます。
[標題」とは、ボタンに表示する名前のことです。
[プロパティ]の[イベント]タブにある[クリック時]の[ビルダー選択]ボタン[…]をクリックします。
[ビルダーの選択]ダイアログボックスが表示されますので、[マクロビルダー]を選択して[OK]ボタンをクリックします。
マクロウィンドウが表示されます。[新しいアクションの追加]の▼ボタンをクリックして、マクロアクションの一覧から[レコードの保存]を選択します。
[アクションカタログ]から選択してマクロウィンドウへ追加する方法もあります。
参考マクロアクション[メニューコマンドの実行]を選択して、一覧から[レコードの保存]を選択してもかまいません。
続けて、マクロアクションの一覧から[ウィンドウを閉じる]を選択します。
[オブジェクトの種類]には[フォーム]、[オブジェクト名]には[フォーム名]を指定します。
設定が終わったら、上書き保存してマクロウィンドウを閉じます。
これで、レコードを保存してフォームを閉じるボタンは完成です。
設定後のプロパティには、[埋め込みマクロ]と表示されます。
参考コマンドボタンウィザードを使って作成してもかまいません。[種類]で[フォームの操作]-[ボタンの動作]で[フォームを閉じる]を選択すると完成できます。
-
コマンドボタンウィザードを使用したボタンの作成
Accessで起動時にメニューフォームを表示した後、ボタンをクリックして目的のフォームを開くようにしたいという要望はよくあります。 コマンド ...
Accessでは、[フォームを閉じる]、[レコードを移動する]、[Accessを終了する]ときは、何も指定しなければレコードは保存されます。
ウィザードを使用すると、埋め込みマクロには[ウィンドウを閉じる]が設定され、パラメーターの部分[オブジェクトの種類][オブジェクト名]は空白になっていますが、パラメーターが空白の場合は、アクティブウィンドウが閉じられます。
ポップヒントにも記されています。
なので、[ウィンドウを閉じる]だけを設定すれば、レコードは保存されてフォームが閉じられます。
[ウィンドウを閉じる]マクロを独立マクロで作成しておくと、複数のオブジェクトに利用できて便利です。
-
独立マクロと埋め込みマクロの違いを知って使い分け
Accessのマクロには、独立マクロと埋め込みマクロというのがあります。 独立マクロは、マクロを個別に作成して、後でオブジェクトのプロパティ ...
レコードを元に戻して閉じる[キャンセル]ボタンの作成
[キャンセル]ボタンを作成します。
レコードの編集をしようと思って開いたけど、編集する必要がなかったから閉じるという場合があります。
その場合、2つの状態があります。
1つは、レコードが編集されている場合、もう1つは、何も編集されていない場合です。
まず、[レコードを元に戻す]アクションと[ウィンドウを閉じる]アクションで作成してみます。
[キャンセル]ボタンを作成して、クリック時イベントのマクロビルダーを表示します。
以下のようにマクロアクション[レコードを元に戻す]の後に、マクロアクション[ウィンドウを閉じる]を設定します。
参考マクロアクション[メニューコマンドの実行]を選択して、一覧から[レコードを元に戻す]を選択しても同じです。
[キャンセル]ボタンが設置できたので、実行してみます。
レコードを編集した後は、レコードの編集した内容は元に戻して閉じられます。
しかし、何も編集しないまま[キャンセル]ボタンをクリックすると、以下のメッセージウィンドウが表示されます。
コマンドまたはアクション'元に戻す'は無効です。
元に戻す内容がないので、上記のようなエラーメッセージが表示されるわけです。
このエラーメッセージに対処する方法を3つ紹介します。
[エラー時]アクションを追加
予想できるエラーを回避するために、マクロアクション[エラー時]を追加します。
[キャンセル]ボタンのクリック時イベントの[…]をクリックして、マクロウィンドウを再度表示します。
[新しいアクションの追加]の▼ボタンをクリックして、マクロアクションの一覧から[エラー時]を選択します。
[エラー時]アクションの[移動先]は[次]を選択して、[上へ移動]ボタンをクリックして一番上まで移動します。
移動先
エラーが発生すると、[次へ]の場合はエラーが発生したアクションの次のアクションに進みます。[マクロ名]の場合は以下のサブマクロ名に移動します。[失敗]の場合はマクロの実行を中止します。
以下のような並びになります。
再度、[エラー時]アクションを選択して、今度は[移動先]に[失敗]を選択して、[メニューコマンドの実行]の後ろへ移動します。
これでメッセージウィンドウは非表示になります。
参考[エラー時]アクションについては、以下の記事でも解説しています。
-
[エラー時]アクションでマクロのエラーを出さずに次に進ませる
Accessでマクロを実行しようとすると、エラーメッセージが表示されて途中でストップしてしまうことがあります。 [エラー時]アクションを使用 ...
データが変更されているかをチェックして実行
条件分岐でフォームのデータが更新されたかどうかをチェックして、更新されていれば[元に戻す]アクションをしてフォームを閉じ、そうでなければ、そのまま閉じます。
[キャンセル]ボタンのクリック時イベントのマクロビルダーを表示します。
マクロアクションの一覧から[If]を選択します。
[If]の条件式に以下のように入力します。入力補助メニューを利用するとミスなく入力できます。
その後ろに続けて、マクロアクション[レコードを元に戻す]と[ウィンドウを閉じる]を設定します。
[Elseの追加]をクリックします。
[ウィンドウを閉じる]を設定します。以下のようになります。
参考以下の記事では、コードビルダーで解説しています。
「キャンセル」ボタンをクリックしてレコードを保存せずに閉じる
読み込み時に値を代入
フォームの読み込み時に既存のデータと同じデータを入力することで、開いたときに編集状態にします。
[キャンセル]ボタンのクリック時イベントの埋め込みマクロは、[レコードを元に戻す]と[ウィンドウを閉じる]のアクションのままです。
[フォーム]プロパティを開いて、マクロアクションを1つ追加します。
フォームの左上の■をクリックすると、[フォーム]プロパティになります。
[イベント]タブの[読み込み時]の[ビルダー選択]ボタン[…]をクリックします。
[ビルダーの選択]ダイアログボックスから[マクロビルダー]を選択して[OK]ボタンをクリックします。
[マクロウィンドウ]が表示されます。
[マクロデザイン]タブの[すべてのアクションを表示]をオンにして、マクロアクションの一覧から[値の代入]を選択します。
[値の代入]アクションの[アイテム]と[式]に同じフィールド名を入力します。
フォームを読み込むときに、同じ値を入力するということです。
ここでは、以下のように入力しています。
マクロウィンドウは、上書き保存して閉じます。
設定後の[フォーム]プロパティです。[読み込み時]に[埋め込みマクロ]と表示されます。
参考この設定をすると、フォームを開いたときに、レコードセレクタに鉛筆マークが表示され編集状態になっているのが分かります。
これが気になるようであれば、[フォーム]プロパティの[書式]タブで[レコードセレクタ]を[いいえ]にすると、レコードセレクタが非表示になります。
プルダウンから選択してもいいのですが、項目でダブルクリックすると、[はい]と[いいえ]を切り替えられます。
フォームの[閉じる]ボタンを無効にする
フォームの閉じるボタンを無効にしておくと、意図しないデータが保存されることを防ぐことができます。
[保存]ボタンか[キャンセル]ボタン以外では、フォームを閉じられなくします。
これは、フォームのプロパティで簡単に設定できます。
デザインビューで[フォーム]プロパティを表示します。
[書式]タブの[閉じるボタン]を[いいえ]に設定します。
プルダウンから選択してもいいのですが、項目でダブルクリックすると、[はい]と[いいえ]を切り替えられます。
フォームビューに切り替えると、[閉じる]ボタンは無効になっていることを確認できます。
参考以下の記事では、[コマンドまたはアクション'レコードの削除'は無効です。]のエラーメッセージが出た時の対処法を記しています。
-
[コマンドまたはアクション'レコードの削除'は無効です]のメッセージ
Access2013で、フォームの[レコードの削除]ボタンを作成したのですが、ボタンをクリックするとメッセージ表示されるようになってしまいま ...