• ベストアンサー
※ 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% (295/459)
回答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

  • ACCESS2000でグループごとに連番を振りたい

    ACCESSで登録フォームを作成し、 そこで、下記のようなテーブルを作ろうとしてます。 伝票番号 明細番号 商品   1   1   りんご   1   2   みかん   2   1   すいか   2   2   かき   1   3   なし   3   1   くり 伝票番号ごとに連番を振って行きたいのですが、 オートナンバー型にしてしまうと、伝票番号に 関係なく、連番を振ってしまいます。 この場合の解決方法を教えていただけないでしょうか。

  • アクセスの連番について

    アクセスでテーブルのkanri_Noという項目に管理番号を振りたいと思っています。 他のテーブルに後でインサートするので、そのテーブルのKanri_NOの最大値をKanri_Maxとして引いてきてそのKanri_Max+連番という風に振りたいのですが、どうSQLを入れればいいのか分かりません。 Kanri_Maxが4000だったら、4001、4002、4003・・・、Kanri_Maxが5000だったら5001、5002、5003とKanri_Noの項目に連番を振りたいのです。 連番を振る前のKanri_Noは空白です。 初心者で申し訳ないのですが教えてください。

  • Access レコードを分割する方法

    早速ですが、質問させてください。 Accessでフォームから以下のようなテーブル1へ入力できるようにしています。 テーブル1のフィールド 検体名(文字型)、試験1(YES/NO型)、試験2(YES/NO型)、試験3(YES/NO型) 以下のようなレコードがあるとき、レコードを分割する方法をご教授いただけないでしょうか。 テーブル1 検体名1、1、0、1 検体名2、1、1、1 検体名3、0、0、1 分割後 検体名1、1、0、0 検体名1、0、0、1 検体名2、1、0、0 検体名2、0、1、0 検体名2、0、0、1 検体名3、0、0、1 目的としては必要試験毎に検体名と試験名が記載された小さいラベルを作りたいと考えています。 それらのラベルを1枚のラベル台紙にまとめて印刷できるようなレポートを作るため、試験毎 かつ ラベルの必要枚数分にレコードを分割したいと考えています。 何卒、よろしくお願いいたします。

  • (ACCESS)連番取得について

    アクセスで顧客管理をしています。 DMax関数を用いて、レコードを追加する度に自動で連番を振る設定に したいと思っていますが、上手くいかないため質問させてください。 【テーブル名】T_顧客一覧 【入力用のフォーム名】F_顧客登録 【連番を入力させたい項目(フィールド名)】No(テーブルでは主キーに設定) とし、フォームの”No”の既定値に   =DMax("No","T_顧客一覧")+1 と入力するのですが、フォームには1としか表示されません。 非常に初歩的な質問だとは思うのですが、 何か原因として考えられることがありますでしょうか? 情報が足りないようでしたら補足させていただきます。 よろしくお願いします。

  • ACCESS 3レコード毎に認識したい

    どなたか教えて下さい。 『やりたいこと』 あるテーブルのデータでレポートを作成しました。 3レコード印字したら、改ページせず、フッダーを表示したい。 (フッターには図形の□を表示) 或いは、 3レコード目の横にレコード内容以外のものを表示したい(図形) 『例』 みかん りんご バナナ ------------フッダー □ カキ ナシ もも ------------フッダー □ 或いは、 みかん りんご バナナ    □ カキ ナシ もも     □      いずれにしても、これが3レコード目よ!!と認識させる方法が わかりません。 レポート内でおこなうのか、 テーブルやクエリー等で、1.2.3.1.2.3.とNoを振るのか。。 案も方法もサッパリです・・・。 どなたか、お知恵を貸してくださいませ!!!

  • [Access]別テーブルの最大値以降の連番振り

    過去の質問を色々調べたのですが、結局以下の連番の振り方が分からず・・・困っています。 どなたか助けて下さい。お願いいたします。 テーブルA(蓄積されている過去テーブル) 伝票番号  顧客NO  注文日 001 111111 2012/11/10 001 111111 2012/11/10 002 222222 2012/11/25 002 222222 2012/11/25 002 222222 2012/11/25 003 333333 2012/12/31 テーブルB(新規にインポートするテーブル) 004 444444 2013/02/01 004 444444 2013/02/01 005 222222 2013/02/15 005 222222 2013/02/15 006 555555 2013/02/15 006 555555 2013/02/15 上記のように、テーブルBをインポートした時に、伝票番号を「004,004,005・・・」という風に 顧客NO毎に連番を振りたいです。 DmaxやDcount関数を使う事はなんとなく分かったのですが、うまくいきません。 出来れば、クエリで実現したいと思ってます。 テーブルAにある顧客がテーブルBに出てきたとしても、関係なく連番が振れれば問題無いので、 テーブルAからは最大値+1の値だけ取れればいいです。 宜しくお願いいたします!!

  • テーブルに新しいレコードを追加する方法について

    ACCESS2007を使っています。 フィールドに以下のような項目があるテーブルAがあります。 日付 | 名称 | 項目 | MIN(数値) | MAX(数値) | チェック(Yes/No) また、以下のような項目があるテーブルBがあります。 日付 | 名称 | 項目 | ナンバー(数値) このテーブルAに以下のようなデータが入っているとして 1/1 | あああ | いいい | 10  | 100 | No 1/1 | あああ | ううう | 1 | 20 | Yes テーブルBに以下のようにレコードを追加したいのです。 1/1 | あああ | いいい | 10   1/1 | あああ | いいい | 11    ・  ・  ・ 1/1 | あああ | いいい | 100 1/1 | あああ | ううう | 1 1/1 | あああ | ううう | 2   ・  ・  ・ 1/1 | あああ | ううう | 20 1/1 | あああ | ううう | blank  最終的には、テーブルBをソースとしてラベル印刷したいと思っています。 レコードセットとFor~Nextなどを使えばできそうな気がするのですが、???です。 どなたかご指南いただけませんでしょうか?

  • ACCESS 追加クエリでレコード数の指定したい

    Win XP Access2003 見積伝票を作成しております。サブフォーム(帳票フォーム)の登録方法でご教授お願い致します。 "伝票明細テーブルW"(伝票番号,行番号,内容、数量、単価、・・・)を基にした "伝票明細クエリW"を作成し、入力しやすいようにフォームを開いた時に行番号(連番)を振り、30行表示するようになっています。 入力確認後に登録ボタンをクリックして追加クエリを開き"伝票明細テーブルW"から"伝票明細テーブル"に30件レコード保存するようになっているのですが、 場合によって内容が2~3行で終わる時があります。 このような時に無駄に30行のレコードを保存せず"内容"(フィールド)が入力されているの最終レコードまでで伝票明細テーブルに追加したいのですが、よい方法がありましたら宜しくお願い致します。 "内容"(フィールド)は途中に空白の時があります。 行番号    内容        数量  1     オイル交換      3.0  2  3     タイヤ交換       4.0

  • Access 店コード、オートナンバー順に連番の追加

    Accessで店コード、オートナンバー順に番号を振り クロス集計クエリで列を直したいのですが、関数で簡単に 連番を振ることは可能でしょうか? 現在、備考枠を以下のようなテーブルで持っています。 店コード、オートNO、備考、 1_23_xxx 1_50_ccc 1_60_vvv 2_24_ddd 2_51_fff 2_61_eee これに対して、以下のような連番を付けたいです。 店コード、オートNO、備考、連番 1_23_xxx_1 1_50_ccc_2 1_60_vvv_3 2_24_ddd_1 2_51_fff_2 2_61_eee_3

  • 宝くじは連番が有利?

    宝くじを10枚買うときは連番が有利ですよね。 個々の券に関してはバラ(末尾だけ連番)だろうが、 連番だろうが全く条件は同じ。 連番の場合、一等が当たったときは前後賞が少なく とも1枚は必ずあたるわけですから。 この考え方であってますよね? (期待値としては微々たるものでしょうが) するとバラという買い方は、当選番号確認のスリルを 多く味わうために、前後賞の特典を捨てている、という ことですか?

専門家に質問してみよう