プロが教える店舗&オフィスのセキュリティ対策術

初心者でもうしわけありません。
AccessでINSERT INTO 退会者データをTable_会員マスタからTable_退会者テーブルに移動し
それが終わったらDELETE Table_会員マスタを行いたいのですが(keyは会員マスタの退会日が
Nullではないこと)それぞれのクエリは書けてますしSQLでみることもできます。
埋め込みマクロでは簡単に両SQLを連続して実行できるのですが、マクロで実行する場合2つの
SQLを接続する(くっつける)のってANDとかなにかいるのでしたっけ??2つの文章(SQL)をならべるだけでは実行できないようですが。
ちなみにあまり関係はないとはおもいますが退会者マスタ(テーブル)と会員マスタの
レイアウトは全く同じです。(しいて言えば会員番号は会員マスタでは主キイですが、
退会者テーブルでは主キイはありません)

質問者からの補足コメント

  • うーん・・・

    ということは、埋め込みマクロを解析する手段があれば自分でもVBがかけるということですね。
    しかし埋め込みマクロの中身は公開されてませんが、非常に残念なところですね。
    昔から埋め込みマクロってあったのかも不確かですが。
    ところで、VBではかなり難しいでしょうね、特に初心者には。
    この題材はユースフル スキルの図書館さんがつくったaccessが元なのですが
    彼のモジュールというか元ネタでは退職者テーブルに書き込みをするだけで元のファイルの削除は
    提案されていませんでした。(その後追加変更があれば別ですが、Internetでその後
    追加変更は確認とれてません、見間違いがなければですが。)

      補足日時:2023/05/27 20:53
  • osamuyさん、夜も遅いので画像付きのクエリー連続実行をためしてみます。
    明日一日かかるかもしれません。
    そのあと結果報告する予定です。では、おやすみなさい。

      補足日時:2023/05/27 23:35
  • osamuyさんのマクロとはaccessの埋め込みマクロのことのようです。
    これはこれで実現できているのですが、埋め込みマクロは2つのクエリを連続で
    実行しているのですが マクロでは連続実行とかできるけれど、元になっている
    退会者データ作成(INSERT INTO。。。)と退会者会員マスタより削除
    (DELETE ..From Table会員マスタ WHERE。。)を単純に2つ合体させた
    クエリでは実行時にエラーとなります。すなわち埋め込みマクロでは中身が
    VBのようにはわからないのでどうしてマクロでは連続してできてひとつの
    クエリではエラーになるのかがわかりません。(文章の最後の文字の
    ;がいけないのかと思いましたがそんなことではないようです。)
    やはりVBしか方法がないのでしょうか。
    まあVBとなれば、その構文を勉強してということになるので1か月くらいあとに
    なるかとおもわれます。

      補足日時:2023/05/28 00:59
  • Internetでの解決策(VBA)をみつけました。
    https://tsware.jp/study/vol12/qryupsize_26.htm
    実際に2件の退職日を記載したレコードが退職者テーブルに移行し削除されました。
    Private Sub 退会者削除_Click()
     DoCmd.SetWarnings False
     DoCmd.OpenQuery "退会者データ作成"
     DoCmd.OpenQuery "退会者会員マスタより削除"
     DoCmd.SetWarnings True
    End Sub
    警告がないので、ほんとに実行したのかと思いましたが退職者テーブルに2件
    かきこまれ、会員マスタから2件削除されてました。
    DoCmdとかOpenQueryとか””で作成したクエリをかこむなど
    基本的なこともわからずでした。おふたりの協力を感謝申し上げます

      補足日時:2023/05/28 08:46

A 回答 (3件)

>単純に2つ合体させたクエリでは実行時にエラーとなります。


そもそも、クエリ定義ではSQL文1行しか書けないのが仕様なので、VBAやマクロで連続する実行しかないかと。

具体的にどういうSQL文を書いたのか補足すれば、何か良い回答がつくかも。
    • good
    • 0
この回答へのお礼

あとはSQL Serverで同様のことができるか試してみます。

お礼日時:2023/05/28 09:03

クエリが既に書けてるなら、マクロでクエリを連続して実行するとか。


まあマクロより、Access VBAでプロシージャ書くほうが楽な気がします。デバッグしやすいので。
「AccessのInsertクエリのあとつ」の回答画像2
    • good
    • 0
この回答へのお礼

Internetでの解決策(VBA)をみつけました。
https://tsware.jp/study/vol12/qryupsize_26.htm
実際に2件の退職日を記載したレコードが退職者テーブルに移行し削除されました。
Private Sub 退会者削除_Click()
 DoCmd.SetWarnings False
 DoCmd.OpenQuery "退会者データ作成"
 DoCmd.OpenQuery "退会者会員マスタより削除"
 DoCmd.SetWarnings True
End Sub
警告がないので、ほんとに実行したのかと思いましたが退職者テーブルに
2件かきこまれ、会員マスタから2件削除されてました。
DoCmdとかOpenQueryとか””で作成したクエリをかこむなど
基本的なこともわからずでした。おふたりの協力を感謝申し上げます

お礼日時:2023/05/28 09:11

通常、SQLをいくつも実行する必要がある場合は、VB.NETとかJavaとかC#など、プログラミング言語からSQLを実行します。


SQLだけでは実現できないです。
    • good
    • 1
この回答へのお礼

補足にも書きましたが
Internetでの解決策(VBA)をみつけました。
https://tsware.jp/study/vol12/qryupsize_26.htm
実際に2件の退職日を記載したレコードが退職者テーブルに移行し削除されました。
Private Sub 退会者削除_Click()
 DoCmd.SetWarnings False
 DoCmd.OpenQuery "退会者データ作成"
 DoCmd.OpenQuery "退会者会員マスタより削除"
 DoCmd.SetWarnings True
End Sub
警告がないので、ほんとに実行したのかと思いましたが退職者テーブルに2件
かきこまれ、会員マスタから2件削除されてました。
DoCmdとかOpenQueryとか””で作成したクエリをかこむなど
基本的なこともわからずでした。おふたりの協力を感謝申し上げます

お礼日時:2023/05/28 09:13

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

関連するカテゴリからQ&Aを探す