![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
よろしくお願いします。
仕様環境
WinXP
access2002
今、accessで顧客管理システムを作っているのですが、
フォームに情報を入力したら「更新ボタン」押して、
情報を更新できるようにしています。
「更新ボタン」はマクロで”最新の情報に更新”を使い
できたのですが、ボタンを押したときに何のリアクションもないので
気になります。(しっかり更新(保存)はされてますけど。)
そこで質問なのですが、「更新ボタン」を押したときに
「更新しますか? ”はい””いいえ”」と確認の意味でも
選べるようにしたいのですがどうすればよいでしょう?
MsgBox関数を使うとよいとみたいなのですが、
「更新しました、”OK”」とは出ますが、「~しますか?”はい””いいえ”」のように
選択する画面の出し方がわかりません。
もし、マクロでそのような方法がありましたら教えてください。
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
No.2です。
> どちらを押しても更新されてしまいます。
連結フォーム(=レコードソースにテーブル/クエリ等を指定してあるフォーム)の、
連結コントロール(=コントロールソースにフィールド名を指定してあるコントロール)を
直接編集している場合、そうなります。
対処方法はいくつかありますが・・・どれにするにしても、結構複雑なことをやることに
なり、全ての手順の解説をここで行うのはさすがに無理がありますので、それぞれの
概要だけ、ごく簡単に説明させていただきます(汗)
A)更新可否を記録する非表示コントロールを設置し、『更新』ボタン以外による更新
(→レコード移動など)は、フォームの「更新前イベント」で「イベントのキャンセル」
アクションを行うことでキャンセルする
(更新を中止して閉じるときのために、「元に戻す」アクションを実行する『取消』ボタン
を別途設置する必要あり)
→開発工数は少ないけれど、使い勝手はいまひとつ。
B)記録用テーブルとは別に、同じフィールド構成のテーブル(ワークテーブル)を作成し、
そのテーブルを基にしたフォームで編集後、『更新』ボタンで元のテーブルに書き戻す
(「ワークテーブルの全レコード削除」、「記録用テーブルからワークテーブルへの
レコード追加」、「ワークテーブルから記録用テーブルへの書き戻し」には、それぞれ
削除クエリ・追加クエリなどを使用)
→1レコードずつではなく、複数レコードをまとめて編集後、『更新』ボタンで一括更新
できるなど、工夫次第で使い勝手はよいが、テーブル・クエリなどの追加作成は多い
C)テーブルから、1レコード分のデータを非連結コントロールに転記させて、そこで編集
を行い、『更新』ボタンを押したら追加クエリなどでテーブルに書き戻す
→ワークテーブルとその関連クエリが不要な分、「B」に比べて追加作成するものは
少ないが、編集したデータが実際にテーブルに入力できる内容かのチェックを行う
マクロなどが必要
> 半角で「条件」のところに「...」と半角ピリオドを入れる
すみません、こちらは全くわかりません(汗)
(ビルダボタンのことかとも思いましたが、『条件』欄にはそれは表示されませんし、
何より、試しに「...」と入れてみたところ、特にエラーも起こらずに(→1つ又は2つのみだと
エラー発生)マクロは動きましたので、何らかの意味は持っているようですが・・・)
DexMachina 様
回答ありがとうございます!
かなり難しそうですね、初心者の私ではまだまだ勉強不足です。
accessを多少触ったことがある人ならaccessを閉じたり、
他のレコードに移動したら、保存されることを何となく知ってたりしますが、
ワードやエクセルは使ったことはあるけどaccessを初めて使う人、それも
技術者ではない人(例えば電話のオペレーターや受付など)そういう人でも
見た目にわかるようなものを作りたかったので、やってみました。
今は、更新ボタンを押して「更新しました!(保存もできてる)」のテキストを出す
ことぐらいしかできませんが、保存しない方法もあることを知っていると
ニーズがあった時に人に説明をする幅が広がります。
長い時間、お考え頂きましてありがとうございました!
No.3
- 回答日時:
>できたのですが、ボタンを押したときに何のリアクションもないので
>気になります。(しっかり更新(保存)はされてますけど。)
とありますが、
逆に更新(保存)しないように作れますか?
つまり、なにもしなくても更新(保存)されます。
No.2
- 回答日時:
> 「~しますか?”はい””いいえ”」のように選択する画面の出し方
マクロの『条件』列で、MsgBox関数を使用すれば、対応できます。
具体的には以下の通りです:
1)当該マクロをデザインビューで開く
2)『アクション』列の左に『条件』列が表示されていない場合は、メニューで
「表示(V)→条件(C)」を選択
3)メッセージに対して「はい」を選択したときに実行したいアクションと同じ
行の『条件』欄に、以下の1行を記述します:
MsgBox("更新しますか?",4,"確認")=6
4)マクロを保存して閉じる。
・・・以上です。
なお、MsgBox関数の2番目の引数「4」は、「はい/いいえ」の選択肢を、
戻り値の「6」は、「はい」が選ばれた場合を、それぞれ意味します。
「OK/キャンセル」で「OK」選択時にしたい場合は以下の式に変更します:
MsgBox("更新します。",1,"確認")=1
詳しくは、MsgBox関数についてのオフライン ヘルプを参照して下さい。
(なお、ヘルプには「組み込み定数」についての記述がされていたかと
思いますが、これはVBA使用時のみ有効で、マクロでは上記のように
数値を指定しないとエラーになりますので、注意してください)
以下、余談:
メッセージで「はい」を選択した場合に、複数の動作を行わせたい場合は、
その動作ひとまとまりを別のマクロとして保存した上で、『アクション』列に
「マクロの実行」を指定し、左下の画面で、マクロ名を指定します。
なお、上でいった「別のマクロ」は、新規にマクロを作成してもいいですし、
メニューで「表示(V)→マクロ名(M)」を選択して『マクロ名』列を表示させて
サブマクロとして保存する方法もあります。
例)
『マクロA』のデザインビュー
マクロ名 条件 アクション
マクロ1 値の代入
MsgBox("",4,"")=6 マクロの実行
メッセージボックス
マクロ2 クエリを開く
テーブルを開く
上のようになっていた場合、「マクロの実行」で、左下の『マクロ名』欄に
「マクロA.マクロ2」を指定しておけば、メッセージで「OK」を選択した時には
クエリとテーブルが開かれることになります。
(『マクロ名』列で指定したマクロ名(=サブマクロ名)を使用する場合は、
上記のように「マクロ名.サブマクロ名」という形で指定する必要があります)
この回答への補足
DexMachina様
回答ありがとうございます!
早速やってみたところ出来ました!
但し、もう一つ問題が・・
更新ボタンを押すと
更新しますか?”はい””いいえ”と出てくるようにはなったのですが、どちらを押しても更新されてしまいます。
”いいえ”を押すと更新されないようにしたいのですが・・。
おそらく「マクロの中止」とかを使えばいいんでしょうが、
いまいちわかりません。
また僕の持っている書籍に半角で「条件」のところに「...」と半角ピリオドを入れるみたいなことが書いてありますがよくわかりません。
差し支えなければご教授ください。
No.1
- 回答日時:
マクロではなくイベントモジュールになりますが
RC = MsgBox("更新しますか? ""はい"" ""いいえ""", vbYesNo, "更新の確認")
If RC = vbYes Then
MsgBox """はい""が選択されました", vbOKOnly, "選択の結果"
Else
MsgBox """いいえ""が選択されました", vbOKOnly, "選択の結果"
End If
という感じで処理をこないます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- その他(お金・保険・資産運用) disney+の支払いはギフトカードを買ってするようにしてて、今日、支払おうと(更新する)を押したら 3 2022/11/01 18:48
- Windows 10 ノートPCの「アップデートナビ」画面について 1 2023/07/04 21:27
- Windows Me・NT・2000 パソコン終了 4 2022/05/09 09:05
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Google Drive GooglePlay開発者サービスの更新方法 1 2022/11/18 10:39
- ハッキング・フィッシング詐欺 アマゾンを語るメールがまた来た 5 2023/05/11 18:56
- メルカリ メルカリ。メルカリのメールアドレス変更をしたいのですが、個人情報から、メールアドレスを入れ、本来なら 2 2023/05/24 13:36
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS で 項目名を出力せずに...
-
エクセルで縦のカラムデータを...
-
マクロでエクセルを開きたい
-
Accessでエクセル出力の保存先指定
-
Access データベースの最適化を...
-
アクセスクエリ(複数)→マクロ...
-
AccessでUTF-8のtxtデータを出力
-
teraterm から起動したプログラ...
-
指数表示しない方法
-
Access Excel出力する保存先を...
-
【Excel】[Expression.Error] ...
-
SQLPLUSで結果を画面に表示しない
-
特定のエクセルファイルを起動...
-
Batch: フォルダ内の特定のファ...
-
VBAでCSVファイルが使用中かど...
-
共有フォルダに誰が何にアクセ...
-
月が変わったら自動でシートが...
-
100万行のCSVを10万行ずつのフ...
-
(Excelマクロ)datファイルをエ...
-
mdbファイル フォームを開くと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESS で 項目名を出力せずに...
-
アクセスクエリ(複数)→マクロ...
-
エクセルで縦のカラムデータを...
-
EXCELでシート別にPDF出力出来...
-
Access Excel出力する保存先を...
-
Accessでエクセル出力の保存先指定
-
Access データベースの最適化を...
-
指数表示しない方法
-
teraterm から起動したプログラ...
-
AccessでUTF-8のtxtデータを出力
-
AccessのデータをExcelの決まっ...
-
Accessから指定した画像データ...
-
access 更新ボタンを作る
-
Accessレポート出力時の範囲指定
-
Access2013の質問です
-
ACCESSで毎回CSVファイルをテー...
-
データをテキストファイルに定...
-
アクセスからエクスポートする...
-
Access内の任意のクエリを指定...
-
ACCESSのVBAで自動的に保存...
おすすめ情報