プロが教える店舗&オフィスのセキュリティ対策術

Access2013を使っています。

IDはテキスト型で、 A00000000 っていう書式なんですが、
新規レコード作成時のイベントで、ID自動採番(連番をふる)をしたいのですが、下記だと最初の1レコード(A00000001)以降がエラーになってしまいます。

Format(Nz(DMax("ID", "T_テーブル名"), 0) + 1, "\A00000000" )

もちろん、すでにあるIDがA00000001なので、DMaxが使えないんですが、どうやって分けてやったら良いのかわかりません。

やりたい結果は、新規レコード作成時に、IDが"A"&"8ケタの最大値+1"が自動に振られて、テーブルのIDフィールドにA00000001、A00000002・・・とデータ保持したいのです。

説明が判り辛くて恐縮ですが、ご教示お願いします。

A 回答 (1件)

最初につく"A"が固定なら、


ID フィールドのデータ型は数値型にして、
書式プロパティを
\A00000000
とするのがお勧めです。
式は下記のようにシンプルになりますし、処理も高速になります。
また、桁数が変更になっても書式プロパティの変更だけですみます。

Nz(DMax("ID", "T_テーブル名"), 0) + 1

現状のテキスト型から変更できない事情があるのなら、

Format(Nz(Mid(DMax("ID", "T_テーブル名"),2), 0) + 1, "\A00000000")
    • good
    • 0
この回答へのお礼

ご指摘の通り試したら、VBA構文エラーもなく、またテーブルにも"A00000000"のデータで保持されていると確認できました!
ありがとうございました!

お礼日時:2014/07/17 14:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A