accessで顧客管理システムを作成中!更新ボタンのリアクションについて質問

このQ&Aのポイント
  • accessで顧客管理システムを作成中の際、更新ボタンを押してもリアクションがないことに気になっています。
  • 「更新ボタン」を押した際に確認メッセージを表示し、更新の意思を選択できるようにしたいです。
  • マクロを使用して「更新ボタン」のリアクションに対して確認画面を表示する方法がわかりません。
回答を見る
  • ベストアンサー

access 更新ボタンを作る

よろしくお願いします。 仕様環境 WinXP access2002 今、accessで顧客管理システムを作っているのですが、 フォームに情報を入力したら「更新ボタン」押して、 情報を更新できるようにしています。 「更新ボタン」はマクロで”最新の情報に更新”を使い できたのですが、ボタンを押したときに何のリアクションもないので 気になります。(しっかり更新(保存)はされてますけど。) そこで質問なのですが、「更新ボタン」を押したときに 「更新しますか? ”はい””いいえ”」と確認の意味でも 選べるようにしたいのですがどうすればよいでしょう? MsgBox関数を使うとよいとみたいなのですが、 「更新しました、”OK”」とは出ますが、「~しますか?”はい””いいえ”」のように 選択する画面の出し方がわかりません。 もし、マクロでそのような方法がありましたら教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.4

No.2です。 > どちらを押しても更新されてしまいます。 連結フォーム(=レコードソースにテーブル/クエリ等を指定してあるフォーム)の、 連結コントロール(=コントロールソースにフィールド名を指定してあるコントロール)を 直接編集している場合、そうなります。 対処方法はいくつかありますが・・・どれにするにしても、結構複雑なことをやることに なり、全ての手順の解説をここで行うのはさすがに無理がありますので、それぞれの 概要だけ、ごく簡単に説明させていただきます(汗) A)更新可否を記録する非表示コントロールを設置し、『更新』ボタン以外による更新  (→レコード移動など)は、フォームの「更新前イベント」で「イベントのキャンセル」  アクションを行うことでキャンセルする  (更新を中止して閉じるときのために、「元に戻す」アクションを実行する『取消』ボタン   を別途設置する必要あり)  →開発工数は少ないけれど、使い勝手はいまひとつ。 B)記録用テーブルとは別に、同じフィールド構成のテーブル(ワークテーブル)を作成し、  そのテーブルを基にしたフォームで編集後、『更新』ボタンで元のテーブルに書き戻す  (「ワークテーブルの全レコード削除」、「記録用テーブルからワークテーブルへの   レコード追加」、「ワークテーブルから記録用テーブルへの書き戻し」には、それぞれ   削除クエリ・追加クエリなどを使用)  →1レコードずつではなく、複数レコードをまとめて編集後、『更新』ボタンで一括更新   できるなど、工夫次第で使い勝手はよいが、テーブル・クエリなどの追加作成は多い C)テーブルから、1レコード分のデータを非連結コントロールに転記させて、そこで編集  を行い、『更新』ボタンを押したら追加クエリなどでテーブルに書き戻す  →ワークテーブルとその関連クエリが不要な分、「B」に比べて追加作成するものは   少ないが、編集したデータが実際にテーブルに入力できる内容かのチェックを行う   マクロなどが必要 > 半角で「条件」のところに「...」と半角ピリオドを入れる すみません、こちらは全くわかりません(汗) (ビルダボタンのことかとも思いましたが、『条件』欄にはそれは表示されませんし、  何より、試しに「...」と入れてみたところ、特にエラーも起こらずに(→1つ又は2つのみだと  エラー発生)マクロは動きましたので、何らかの意味は持っているようですが・・・)

23tomo-u
質問者

お礼

DexMachina 様 回答ありがとうございます! かなり難しそうですね、初心者の私ではまだまだ勉強不足です。 accessを多少触ったことがある人ならaccessを閉じたり、 他のレコードに移動したら、保存されることを何となく知ってたりしますが、 ワードやエクセルは使ったことはあるけどaccessを初めて使う人、それも 技術者ではない人(例えば電話のオペレーターや受付など)そういう人でも 見た目にわかるようなものを作りたかったので、やってみました。 今は、更新ボタンを押して「更新しました!(保存もできてる)」のテキストを出す ことぐらいしかできませんが、保存しない方法もあることを知っていると ニーズがあった時に人に説明をする幅が広がります。 長い時間、お考え頂きましてありがとうございました!

その他の回答 (3)

回答No.3

>できたのですが、ボタンを押したときに何のリアクションもないので >気になります。(しっかり更新(保存)はされてますけど。) とありますが、 逆に更新(保存)しないように作れますか? つまり、なにもしなくても更新(保存)されます。

  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答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」を選択した時には クエリとテーブルが開かれることになります。 (『マクロ名』列で指定したマクロ名(=サブマクロ名)を使用する場合は、  上記のように「マクロ名.サブマクロ名」という形で指定する必要があります)

23tomo-u
質問者

補足

DexMachina様 回答ありがとうございます! 早速やってみたところ出来ました! 但し、もう一つ問題が・・ 更新ボタンを押すと 更新しますか?”はい””いいえ”と出てくるようにはなったのですが、どちらを押しても更新されてしまいます。 ”いいえ”を押すと更新されないようにしたいのですが・・。 おそらく「マクロの中止」とかを使えばいいんでしょうが、 いまいちわかりません。 また僕の持っている書籍に半角で「条件」のところに「...」と半角ピリオドを入れるみたいなことが書いてありますがよくわかりません。 差し支えなければご教授ください。

  • Masa2072
  • ベストアンサー率51% (94/182)
回答No.1

マクロではなくイベントモジュールになりますが   RC = MsgBox("更新しますか? ""はい"" ""いいえ""", vbYesNo, "更新の確認")      If RC = vbYes Then     MsgBox """はい""が選択されました", vbOKOnly, "選択の結果"   Else     MsgBox """いいえ""が選択されました", vbOKOnly, "選択の結果"   End If という感じで処理をこないます。

関連するQ&A

  • Access 別フォームへの再クエリ(更新)がしたい。

    宜しくお願いします。 仕様環境:WinVISTA Access2007 別フォームから別フォームへの再クエリの仕方を教えてください。 画像を貼らせて頂きます。 まず、後ろのメインフォームから新規作成ボタンを押して、 別のフォーム(作成画面)を開きます。 そこに新しいデータを入力して、閉じますと、 そのままではメインフォームには反映しません。 (テーブルには反映していますが) 別フォーム(新規の作成画面)に再クエリをかけても そのフォームが更新させるだけで、メインフォームに変化はありません。 ちなみにメインフォームに作った更新ボタン(中身は再クエリ)を押すと反映されます。 どうしたら別フォームから後ろのメインフォームを再クエリ(更新)できるのでしょうか? やりたいことは別フォームのOKボタン(画像参照)を押すと 別フォームが閉じると同時にメインフォームが再クエリ(更新)されるとベストです。 (今のところOKボタンの中身は”閉じる”のマクロだけです) 構造は簡単で恐縮ですが、 テーブル:Tメイン フォーム:メインフォーム      作成画面フォームetc.. です。 クエリはメインフォーム自体にクエリビルダを使っていますが、 特別な施しなどはしていません、うまく動作しないところがあって、 いろいろ調べていてそうすると改善すると書いてあったので。。 ちなみにテーブルには「日付」の後順で並び替えをかけています。 当方、VBAに弱いのでマクロで操作できるのでしたらお願いします。 マクロで出来ないものでしたらVBAを教えて頂ければ、 イベントプロシージャに書き込みます。 大変恐縮ですがお知恵をお貸しください、宜しくお願いします。

  • アクセスのコマンドボタンについて

    アクセスについて教えて下さい。 コマンドボタンで、フォームのデータをワンクリックで開くように設定したいのですが、コマンドボタンウィザードを使って、 フォームの操作→フォームを開く→フォームを指定 という操作でボタンを作りました。 ですが、ボタンをクリックして操作しようとすると、 「イベントプロパティに指定した式 クリック時 でエラーが発生しました:名前が適切ではありません:(フォーム名)_Click   *マクロ名、ユーザー定義関数名、「イベントプロシージャ」以外の式が指定されています。   *関数、イベント、マクロの評価でエラーが発生しました。」 というメッセージが出てきて、フォームを開くことができませんでした。 ウィザードだけではフォームを開くボタンを作成することはできないのでしょうか? 何か対処があれば教えて下さい。 よろしくお願いいたします。

  • Accessで作成した登録ボタン

    Access2003で営業管理システムを作成しております。 フォームで色々な情報を入力する画面を作成したのですが、 登録ボタン(コマンドボタン)をクリックした際、 入力した情報をデータベースに反映させるにはどうしたらよいのでしょうか? マクロの組み方やクエリの作成の仕方など まだまだわっからないことだらけですので ご指導頂けたらと思います。 よろしくお願いいたします。

  • Access 更新キャンセルするには?

    Access2000で作成しています。 フォーム上でデータを書き換え後、更新をしない場合はどうしたらよいのでしょうか? 【希望する流れ】  1.データを変更  2.「更新」ボタンクリック     「データの更新をします。よろしいですか?」のメッセージ   (1)更新する場合:データを更新     「データが更新されました」のメッセージ   (2)更新しない場合:データを変更前に戻す     「データの更新がキャンセルされました」のメッセージ  3.フォームを閉じる  4.別のフォームを開く この動作をフォーム上にある「更新」ボタンのクリック時イベントにすることはできますか? とりあえず、現在は以下のようなものが作ってあります。 「VBA」  Private Sub Form_BeforeUpdate(Cancel As Integer)  '更新前確認   If MsgBox("更新します。よろしいですか?", vbYesNo, "更新確認") = vbNo Then   Cancel = True   Me.Undo   End If  End Sub 「更新」ボタンクリック時(こちらはマクロです)  ・フォームを閉じる  ・別のフォームを開く 今の状況では、更新する場合は問題ないのですが、更新しない場合、 「このレコードを保存することができません。  レコードを保存する時にエラーが発生しました。  ・・・・・・・・・・・」 というメッセージが出てきてしまいます。 どのようにVBAを作ればよいでしょうか? 説明不足の場合、補足いたします。よろしくお願いします。

  • Access2000でボタンを押した際、各タブコントロールのタブを開くには・・・

    こんにちは。 アクセス2000でメニューフォームに幾つかのボタンを作っております。 また別のフォーム(顧客管理という名前)でタブコントロールを配置し(5ページ) それぞれのタブには名前を付けております。1ページ目から「顧客情報」 、「顧客当日データ」、「顧客契約内容」、「顧客履歴」、「顧客領収」の順です。 メニューフォームのボタンを押した時、この顧客管理フォームのタブ コントロールをそれぞれを開くにはどのようにインベントを書けばいい のでしょうか? イメージ的には、(1)のボタンを押した時「顧客情報」のタブを開く。 (2)のボタンを押した時「顧客当日データ」、(3)のボタンで・・・の感じです。 宜しくお願いします。 Private Sub コマンド78_Click() DoCmd.OpenForm "顧客管理"・・・??? End Sub

  • フォーム内のデータをすべて更新したい

    フォーム内のデータをすべて更新したい ACCESSでデータ入力ができるようにフォームを作成しました。 わりと頻繁に同じ様な内容のデータを入力することがあり、レコードのコピーをボタンウィザードのレコードの複製を使わず、選択しているレコードで必要な部分のみをコピー用に用意したテーブルに追加して、追加したテーブルから元のテーブルに追加するというマクロを作成しました。 テーブルにはデータは追加されているのですが、フォーム上には「F5キー」やメニューの「すべて更新」ボタンをクリックしないとフォーム上に現れません、マクロ「再クエリ」や「コマンドの実行」-「最新の情報に更新」を入れてみましたが、「F5キー」やメニューの「すべて更新」ボタンをクリックした時のような動作はしてくれませんでした。 どういったマクロを作ればよいかご教示いただけないでしょうか。 緒ろしくお願いいたします。 ACCESS 2007を使っています

  • access 絞込みフォーム

    初心者です、よろしくお願いします。 仕様環境 WinXP access2002 請求管理のフォームを作っているのですが、壁に当たっています。 メインとサブのフォームがあってメインは顧客情報を 乗せています。サブにその顧客の簡単な請求履歴をのせています。 更に詳しくみるために別に「請求明細フォーム」というものを設けています。 これは請求書の内訳がのっています。 さてサブフォームの話ですが、このようになっています↓(簡単に書いてます)        請求番号   「詳細ボタン」 A0001   「詳細ボタン」 A0002      「詳細ボタン」を押すことにより、該当する請求番号の請求明細フォームに 飛ぶようにしたいのですが、うまくいきません。 パラメータを使えばできたのですが、パラメータを使わず、 ボタンを押すと該当する請求明細フォームに飛びたいのです。 請求番号に該当する情報だけ載せた請求明細フォームに飛ぶにはどうすれば よいのでしょうか?ちなみに請求明細フォームはクエリを返しています。 誰かお知恵をおかしください!

  • フォームで 保存ボタンを押して保存する方法【MS Access2000】

    初めて質問させて頂きます。宜しくお願いいたします。 MS Access2000を使用して会社の顧客管理をしていおり、 現在フォームに表示されたデータを更新・修正等をした場合 修正をした時点で、元のテーブルの情報も変更されてしまいます。 これを、修正等が終了して、例えば【保存】というボタンを作成し、 それを押して始めてテーブルに反映させるという仕様にしたいと 思っています。 ご回答・助言をなにとぞ宜しくお願いいたします。

  • エクスプローラーの更新ボタンについて

    おはようございます。 本ジャンルでは初めての質問になります。 よろしくお願いします。 パソコンは詳しくないのですが インターネットエクスプローラーで更新ボタンを押しても最新が表示されず右クリックの更新を選ぶと最新状態が表示されます。 更新ボタンで最新表示にはできないのでしょうか? またなぜこのような仕様になっているのでしょうか? 素人ですみませんがどうぞよろしくお願い致します。

  • <アクセス>プロパティの更新ボタンはどこ?

    当方アクセス2003です。 テーブルに新しいフィールドを追加しました。 変更前に作成したフォームに、 その項目を追加したいのですが、 本を読むと、「プロパティの更新」ボタンを押すと 書いてあります。。。。が、 そのボタンが見つかりません。 ツール-オプションでの、「プロパティの更新ボタンを 表示する」には設定してあります。 ↑の設定を変更したりして、消えたり出たりしたボタンを 探したのですが、変化ありません。 どこを探れば見つかるのでしょうか。 すみません、急いでいるのですが、ご存知の方、 よろしくお願いします。