- ベストアンサー
ACCESSでの行番号の自動採番
いつもお世話になっています。 MSACCESSで、以下のようなしくみを作ろうとしています。 (例) 親テーブル 伝票番号(オートナンバー) 担当番号、販売先番号・・・・ 子テーブル 伝票番号(オートナンバー) 行番号、商品番号・・・・ (やりたい事) 項目"伝票番号"はリンクさせて同じ値とする。 項目"行番号"は親レコードの値が増えるたびに1から増加させていくようにしたい。 伝票番号 1 行番号 1 伝票番号 2 行番号 1 伝票番号 2 行番号 2 伝票番号 2 行番号 3 伝票番号 3 行番号 1 のように。 なにぶん初心者なものでマニュアル等調べて見ましたがうまくいきません。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>項目"伝票番号"はリンクさせて同じ値とする。 こうするためには子テーブルのほうにはオートナンバーは使えません 自動的に同じにしたければ、入力インタフェースにメイン・サブのフォームを使います >項目"行番号"は親レコードの値が増えるたびに1から増加させていくようにしたい。 こうしたければ行番号にもオートナンバーは使えません サブフォームの伝票番号、行番号以外の必須入力フィールド(たとえば商品番号)の 更新後イベントに番号を算出して代入するようなコードを書いてやることになります Private Sub 商品番号_AfterUpdate() If Me.NewRecord Then Me.行番号 = Nz(DMax("行番号", "子テーブル", "伝票番号=" & 伝票番号), 0) + 1 End If End Sub
その他の回答 (1)
- Dxak
- ベストアンサー率34% (510/1465)
最初に・・・ > 親テーブル 伝票番号(オートナンバー) 担当番号、販売先番号・・・・ > 子テーブル 伝票番号(オートナンバー) 行番号、商品番号・・・・ のテーブルで 親テーブル 受付順(オートナンバー) ・・・ 子テーブル 親受付順(長整数)、子受付順(オートナンバー)・・・ として、クエリー上に 伝票番号: DCount("*","親テーブル","受付順 <= " & [親テーブル]![受付順]) 行番号: DCount("*","子テーブル","親受付順 = " & [子テーブル]![親受付順] & " And 子受付順 <= " & [子テーブル]![子受付順]) と、すれば・・・番号は、振れます オートナンバーで欠番が出ると再度振りなおすと言う手間は無くなるので希望と若干違うような気がしますが・・・ これは、テストとかで順番を振るサンプルでよく使う手法ですが、こう言う、番号を振るにも使える手法です
補足
ご回答ありがとうございます。返答が遅れてすみません。 早速試してみたのですが、うまく動いてくれません。 ちなみに、項目名は受付順・親受付順・子受付順とされておりますが、 これは伝票番号、行番号の代わりに用いるという事でしょうか? よろしくお願いします。