電子書籍の厳選無料作品が豊富!

お世話になります。

現在、顧客のデータベースを作成しております。DBは名前、住所等の連絡先を入力したテーブルを元に下記のクエリやマクロを作成しています。取引がない顧客等はメイン名簿テーブルから削除して、メインテーブルの構造をコピーした、削除テーブルに入れるようにしたいと考えています。

そこで下記のテーブル、クエリ、グループマクロを作成しました。グループマクロは作成したクエリ3つで構成されています。各アクションクエリは一個一個は正常に作動するのですが、グループマクロを実行しますと、1行目のクエリしか実行されません。実行方法はマクロの画面で更新ボタンを押しても、フォームに削除というボタンを作成してクリック時にグループマクロを実行させるよう設定した場合の両方で起きます。

 グループマクロに登録されているマクロを全て実行するにはどうしたらいいのでしょうか。色々調べると、グループマクロは1行目しか実行できないようですが、全て実行する簡単な方法はありませんか?できればVBAではない方法を希望します。大変お手数ですがどうぞ、よろしくお願い致します。


 ・(テーブル)メイン名簿(以下、名簿tblとします)
   ⇒フィールド:名前、郵便番号、住所、電話、メモ欄、削除の有無、削除処理日

 ・(テーブル)削除テーブル(以下、削除tblとします)
   ⇒フィールドは上記と同じ

 ・(更新クエリ)削除処理日追加
   ⇒名簿tblの「削除の有無」フィールドにyesと入力されていれば、「削除処理日」に処理日が
    入力されるようにdate関数を設定しています。(date())

 ・(追加クエリ)削除tblへ追加
   ⇒名簿tblの「削除の有無」フィールドにyesと入力されていれば、「削除tbl」へそのレコードを、
    追加する。
 
 ・(削除クエリ)名簿tblからの削除
   ⇒名簿tblの「削除の有無」フィールドにyesと入力されていれば、名簿tblからそのレコードを、
    削除する。

 ・(マクログループ)削除処理(上から順番に実行希望)
    マクロ名           アクション     クエリ名
    削除処理日追加     クエリを開く    (更新クエリ)削除処理日追加
    削除tblへコピー      クエリを開く    (追加クエリ)削除tblへ追加
  名簿tblからの削除    クエリを開く    (削除クエリ)名簿tblからの削除                     
                                  以上

A 回答 (4件)

> 全て実行する簡単な方法はありませんか?



3つのアクションクエリを「常にセットで実行」するのでしたら、マクロのデザインビューの
『マクロ名』欄は、全て空白にして下さい。

【現状】 ※クエリ名はここでは省略しています。
 <マクロ名>     <アクション>
削除処理日追加  クエリを開く
削除tblへコピー   クエリを開く
名簿tblからの削除 クエリを開く

【修正版・1】
 <マクロ名>     <アクション>
            クエリを開く
            クエリを開く
            クエリを開く

【修正版・2】
 ※bin-chanさんからの回答にもある、クエリ実行前に都度発生する確認メッセージを
  省略する場合。
 <マクロ名> <条件> <アクション>      『メッセージの表示』引数
         (*1)   マクロの中止       ↓
              メッセージの設定   「いいえ」
              クエリを開く
              クエリを開く
              クエリを開く
 ※「(*1)」には、以下の式を入れてください:
   MsgBox("処理を実行します。", 1, "確認")=2
 ※マクロの場合は、マクロの処理が終了するのと同時に『メッセージの設定』を「はい」に
   戻さなくても自動で元の設定に戻ります(VBAと動作が違うので、VBAに乗り換える
   場合は注意が必要)。

★フォームからの呼び出し方が、「(親マクロ名).削除処理日追加」となっている場合は、
 「(親マクロ名)」の形に変更して下さい。


  ------------------------------

また、各アクションクエリを個別でも実行したい、という場合は、以下のような形にします。

【修正版・3】
 <マクロ名>   <条件> <アクション>    『マクロの実行』引数の値
           (*1)   マクロの中止      ↓
                マクロの実行  「(親マクロ名).削除処理日追加」
                マクロの実行  「(親マクロ名).削除tblへコピー」
                マクロの実行  「(親マクロ名).名簿tblからの削除」
削除処理日追加      メッセージの設定
                クエリを開く
削除tblへコピー       メッセージの設定
                クエリを開く
名簿tblからの削除     メッセージの設定
                クエリを開く


※「(*1)」は【修正版・3】と同じもの。


・・・以上です。
「accessマクログループの全マクロの実」の回答画像4

この回答への補足

DexMachina様
出来ました!!モジュールが苦手なので、【修正1】でやってみました。
マクロ名は入れると便利かなと思っていましたが、、、勉強になりました!

【修正2】はマクロをもう少し勉強してからやって見たいと思います。
画像も付けていただき、本当にありがとうございました!!

補足日時:2011/04/06 22:54
    • good
    • 0

クエリを単独で行なうことはできるのならば、


標準モジュールに以下を設定し、

Sub cmdQuery()
'メッセージの無効化
DoCmd.SetWarnings False
DoCmd.OpenQuery "削除処理日追加"
DoCmd.OpenQuery "削除tblへ追加"
DoCmd.OpenQuery "名簿tblからの削除"
'メッセージの有効化
DoCmd.SetWarnings True
End Sub

マクログループのかわりに、
マクロで「プロシージャの実行」で、
プロシージャ名を「cmdQuery」を
設定する方法はどうですか。

この回答への補足

piroin654様

ありがとうございます!
ただ、モジュールが苦手なので…
もう少し勉強して参考にしたいと思います。
お忙しい中、ありがとうございました!!

補足日時:2011/04/06 22:56
    • good
    • 0

「ツール>オプションのアクションクエリの確認で、チェックを外す」だったんですが


その他の処理でもすべて確認が無くなってしまうのでマズそうですね。


マクロの前後に各1行ずつ追加して、「メッセージの設定」を加えてみてください。
削除処理日追加などで「作成(削除)します」系のメッセージが出ないはずです。


メッセージ抑止     メッセージの設定 “いいえ”

削除処理日追加     クエリを開く    (更新クエリ)削除処理日追加
削除tblへコピー    クエリを開く    (追加クエリ)削除tblへ追加
名簿tblからの削除   クエリを開く    (削除クエリ)名簿tblからの削除         

メッセージ有効     メッセージの設定 “はい”

この回答への補足

駄目でした。。
今度は1行目も動作しなくなりました。。

補足日時:2011/04/05 12:30
    • good
    • 0

記載されているマクロではなく、単純な削除クエリを作成・実行すると


「削除してよいですか?」的な確認が行われませんか?

ツール>オプションで、アクションクエリの項を確認なさると良いかも。
(都度、確認が入るので停止してませんか?)

この回答への補足

bin-chan様
早速のご回答、ありがとうございます!!
すみません、ご回答について質問をさせてください。。

●記載されているマクロではなく、単純な削除クエリを作成・実行すると
「削除してよいですか?」的な確認が行われませんか?
⇒はい、単純な削除クエリだけで実行するとメッセージが出て削除されます。
 また他のクエリも単体だけだと正常に動作します。
 でもフォームに「削除」ボタンを作成してそこをクリックすると、(更新クエリ)削除処理日追加→(追加クエリ)削除tblへ追加→(削除クエリ)名簿tblからの削除という順番でアクションクエリを一気に実行させたいのです。その様な方法はありませんでしょうか。

●ツール>オプションで、アクションクエリの項を確認なさると良いかも。
(都度、確認が入るので停止してませんか?)
⇒すみません、これはアクションクエリのどういったことを確認すればいいのでしょうか。

補足日時:2011/04/04 21:54
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!