• ベストアンサー

Access:一定範囲内を回転しながら連番を振る

Access97 or 2000 VBAでないとダメだと思うのですがVBA初心者です・・。 1001~1050のような決まった範囲内で既存テーブルに採番したいのですが 入力しながらではなく、「採番」ボタンを 押すと既存のテーブルに書きに行きたい、 1050まで採番したら1001に戻りたいというのがあります。 次回処理には続きから採番したいです。 最終番号をセットするようなテーブルを作るような イメージはわくのですが、どうも書き方がわかりません。 教えて下さい・・。 宜しくお願いします。

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

  • ベストアンサー
  • mach999
  • ベストアンサー率75% (36/48)
回答No.2

数字に抜けが無いオートナンバーフィールドがあるものとして話をします(なければ後からでも作れる)。 クエリを作成→採番を入れたいテーブル(テーブルAとする)を追加。 テーブルAの全てのフィールドをクエリに追加(テーブルA.*でいいです)。 新規のフィールドをクエリに追加して、フィールド名のところに以下のように記述する(商品コードはテーブルAにあるオートナンバーフィールドと考えてください)。  採番: ([商品コード]-1) Mod 50+1000 これでこのクエリ(クエリBとする)を開くと採番が追加されていることが確認できるはずです。 テーブルAをレコードソースとして使用しているフォームのレコードソースをクエリBに変えれば採番だけ追加することでそのまま使えます。 と、このようにするとVBAを使わず最小限の変更で採番を追加できるのです。 わからなかったらまた聞いてください。

denfale
質問者

お礼

ありがとうございます。 できました!簡単ですね。 でも次回処理時にはまた1000からになってしまうので使用した番号を控えて置かないとだめですよね。

その他の回答 (1)

回答No.1

レコード件数が70件なら 1001→1050→1001→1020 と進んで行くと言うことですね。 オートナンバー順のクエリーが必要ですね 「オートナンバー順クエリー」をセットしてやって このRecordsetの最後の番号を拾う 新しいレコードに移る 先ほどの番号に1を足した番号を NewRecordに書き込む ただし、1050なら新しいレコードの番号は1001にする。 こんな感じでしょうか・・・。 これを、「採番」ボタンのイベントプロシージャーに 書いてやれば行けると思います。 頑張ってください。

参考URL:
http://www.penhagi.net/cgi-bin/otasuke/flashbbs.cgi
denfale
質問者

お礼

ありがとうございます。 考えているイメージの通りです! でも書き方が・・わからないです。

関連するQ&A