- ベストアンサー
アクセスで、テーブル間のレコード移動のマクロ
アクセス 2002 初心者です。 テーブルに入院患者.TBL と、退院患者.TBL があります。 入院患者.TBL の中に多数フィールドがあり、その中に フィールド「退院あり」 Yes/No 型があります。 本日終了時、yes のレコードだけ、退院患者.TBL に追加移動したいと思っています。 フオーム上で、コマンドボタンをクリックして、一発でやりたいのですが、マクロでの記述を教えてく ださい。宜しくお願いします。
- みんなの回答 (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
その他の回答 (1)
- adol37
- ベストアンサー率36% (26/72)
入院患者.TBLと退院患者.TBLが同じテーブルデザインである前提で話を進めます。 まず、入院患者.TBLを元に追加クエリーを作成します。 追加先は退院患者.TBLとし、抽出条件として「退院有り」フィールドがyes(true)のものとします。 次に削除クエリーを入院患者テーブルを元にして作成します。 抽出条件は最初の追加クエリーと同じで、削除フィールドは全フィールドとなります。 マクロに「追加クエリー」「削除クエリー」の順にクエリーを開くように登録すればOKです。 気を付けなければならいないのは、削除するとデータは完全に消えますので、くれぐれもクエリー起動の順番を間違えないことです。 本来であれば、移動データをバックアップしながらコピーするか、入院・退院でテーブルを分けるのではなく、単純に入退院サインというフィールドで度力を判断させる方が、スマートなような気がします。
お礼
早速の回答をありがとうございました。なるほど、そういう方法でやるのですか。初心者ですので、勉強になりました。これからもよろしくおねがいします。
お礼
ありがとうございました。難しそうですが、チャレンジしてみます。まだやってみていませんが、完璧そうです。20点。プロですか?よく知っておられますね?感心します。今後ともよろしく。