• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ACCESS 連番を付けて同じレコードを追加)

レコード追加の連番付き方法と受取確認テーブルの作成について

このQ&Aのポイント
  • あるレコードから別のテーブルに任意の番号から連番を付けて同じレコードを追加する方法をご教示ください。
  • 発行した引換券の受取確認をするためのテーブルの作成方法について教えてください。
  • 簡単な方法で実現できるか教えていただけると助かります。

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

  • ベストアンサー
回答No.1

Q、簡単で良い方法。 A、それは、INSERT INTO 文を発行すること。   '   ' INSERT INTO 文の雛型   '   strSQL = "INSERT INTO tablename VALUES(XXXXX,YYYYY, 0)"   ・・・・・   '   ' 一時テーブルへの追加   '   Do     '     ' INSERT INTO 文     '     strINSERT = Replace(strSQL, "XXXXX", "みかん引換券")     ' ' INSERT 実行 '     N=開始引換券番号     M=発行枚数     FOR I=1 TO M       strINSERT = Replace(strINSERT, "YYYYY", N+I)       StopNow = CNNExecute(strInsert)     NEXT I   ・・・・・ 確かに、知恵を絞れば INSERT INTO SELECT文を書けるかも知れない。でも、その知恵を絞り出そうと腐心している30分かそこらで上記のコードは書けます。ですから、「一番に簡単で良い方法」とは素直にINSERT INTO 文を発行することです。

suika_tane
質問者

お礼

お返事が大変遅くなって申し訳ございません。 実のところSQLとかDAOとか全くわからなくて往生していました。 f_a_007さんのお返事を参考にしまして Dim strTablename As String Dim mySQL As String Dim i As Long strTablename = "T_チケット情報" i = 開始引換券番号 - 1 Do i = i + 1 mySQL = "INSERT INTO " & strTablename & " (チケット番号,種類,発行ID)" mySQL = mySQL & "VALUES(" & i & ",種類,発行ID);" DoCmd.RunSQL mySQL Loop While i < 最終引換券番号 と、いうような感じで作りました。 取りあえず、思うようには動いています。 主キーの”発行ID”を新しいテーブルのフィールドに入力するようにして、それを元に削除クエリで一括削除できるようにしました。 ただ、訂正の際は・・・また考えます。^^; 取りあえず、訂正の際は赤黒しようかと考えています。 本当にありがとうございました。

その他の回答 (2)

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.3

「簡単で良い方法」かどうか?? Sub test()   Dim dbs As DAO.Database   Dim rs1 As DAO.Recordset   Dim rs2 As DAO.Recordset   Dim cnt As Long   Set dbs = CurrentDb   Set rs1 = dbs.OpenRecordset("引換券発行テーブル", dbOpenForwardOnly)   Set rs2 = dbs.OpenRecordset("受取確認テーブル", dbOpenDynaset)   Do Until rs1.EOF     For cnt = 0 To rs1!発行枚数 - 1       With rs2         .AddNew          !種類 = rs1!種類          !引換券番号 = rs1!開始引換券番号 + cnt         .Update       End With     Next     rs1.MoveNext   Loop End Sub 「引換券番号」が数値型の場合です。

suika_tane
質問者

お礼

お返事ありがとうございます。遅くなってしまい申し訳ございません。 正直なところDAOとか全くわからなくて、こんなのがスラスラと思いついて書ければACCESSももっと面白くなるのですが・・。 でも、出来なくてもそれっぽい物が作れてしまうのがACCESSのすごいところです。 お返事をいただいたときに、ちょうど1で回答をいただいたものを参考にしたものが動いたので、今回はそれを使用してみます。 本当にありがとうございました。

回答No.2

【補足】実際にコードを書き始めたら・・・ 現状では、完全なコードを書くのは無理ってことが判明。理由は、テーブル設計の不完全さにあります。 《テーブル:引換券発行履歴》 ID 受付日 受付管理番号 種類 開始引換券番号 発行枚数 《テーブル:受注確認台帳》 種類 受付日 受注管理番号 引換券番号 受取 ・主キー列[引換券発行履歴].[ID]がないと登録順で呼び出せない。 ・列[受付管理番号]がないとテーブル[受注確認台帳]が更新できない。  (1)[受付管理番号]の変更・削除を反映する。  (2)[開始引換券番号]の変更を反映する。  (3)[発行枚数]の変更を反映する。  いずれの場合にも列[受付管理番号]の存在を必要とします。 テーブル[引換券発行履歴]のデータに追加・変更・削除が発生したら適切に[受注確認台帳]を修正する必要があります。ですから、追加修正もあれば一部訂正もあります。それだけではなくて削除を行う場合もあります。こういう事を考えたら、チョイとコードを書いて「出来るよ!」って答えるのは不可能という結論に達しました。 以上、補足しておきます。

関連するQ&A