• ベストアンサー

アクセスで、テーブル間のレコード移動のマクロ

アクセス 2002 初心者です。 テーブルに入院患者.TBL と、退院患者.TBL があります。 入院患者.TBL の中に多数フィールドがあり、その中に フィールド「退院あり」 Yes/No 型があります。 本日終了時、yes のレコードだけ、退院患者.TBL に追加移動したいと思っています。 フオーム上で、コマンドボタンをクリックして、一発でやりたいのですが、マクロでの記述を教えてく ださい。宜しくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

SQLも使わず、初等的にやってみました。 マンション.TBの「販売」フィールドでYES/NOのYES分 だけ、売却済マンション.TBにレコードを加えています。 テスト済み。ちょっとした色んな場面で使えると思います。2度実行しないようにしましょう。累積してしまいます。 Option Compare Database Option Explicit Sub test01() Dim db As Database Dim rs As Recordset Dim ors As Recordset Set db = CurrentDb Set rs = db.OpenRecordset("マンション", dbOpenDynaset) Set ors = db.OpenRecordset("売却済マンション", dbOpenDynaset) rs.MoveFirst While Not rs.EOF '------------ If rs!販売 = True Then ors.AddNew ors!マンション = rs!マンション ors.Update ' MsgBox rs!マンション End If '----------- rs.MoveNext Wend rs.Close ors.Close End Sub

fusigi2
質問者

お礼

ありがとうございました。難しそうですが、チャレンジしてみます。まだやってみていませんが、完璧そうです。20点。プロですか?よく知っておられますね?感心します。今後ともよろしく。

その他の回答 (1)

  • adol37
  • ベストアンサー率36% (26/72)
回答No.1

入院患者.TBLと退院患者.TBLが同じテーブルデザインである前提で話を進めます。 まず、入院患者.TBLを元に追加クエリーを作成します。 追加先は退院患者.TBLとし、抽出条件として「退院有り」フィールドがyes(true)のものとします。 次に削除クエリーを入院患者テーブルを元にして作成します。 抽出条件は最初の追加クエリーと同じで、削除フィールドは全フィールドとなります。 マクロに「追加クエリー」「削除クエリー」の順にクエリーを開くように登録すればOKです。 気を付けなければならいないのは、削除するとデータは完全に消えますので、くれぐれもクエリー起動の順番を間違えないことです。 本来であれば、移動データをバックアップしながらコピーするか、入院・退院でテーブルを分けるのではなく、単純に入退院サインというフィールドで度力を判断させる方が、スマートなような気がします。

fusigi2
質問者

お礼

早速の回答をありがとうございました。なるほど、そういう方法でやるのですか。初心者ですので、勉強になりました。これからもよろしくおねがいします。

関連するQ&A