こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Access2007でフィールドの規定値として、一意の文字列「D-★★★★-☆☆☆☆」(★と☆の部分は半角数字)を設定したい

お世話様です。

まったくもって表題の通りなのですが、
Access2007でフィールドの規定値として、一意の文字列「D-★★★★-☆☆☆☆」(★と☆の部分は半角数字)を設定したいと思っています。

●「」はナシです(説明のためにつけただけです)
●かならず D-のハンカク2文字が最初につく
●★★★★、および、☆☆☆☆の部分は、[0-9]が4つつづく
●新規レコードを追加しても、必ず値は一意になる
(★★★★と☆☆☆☆が一致しても問題ないです。★と☆の間のハイフンは読みやすさのためにそうしたいとおもっただけなので)

一意とはいっても、数字の部分が8けたなので、
00000000~99999999までの1億レコードまでしか作れないことは承知です。
実際、1億もレコードが増えることは想定していません。

これを実現するにはどうすればいいのでしょうか?

自分、MySQLとPostgresはいじったことあるのですが、
Accesssはほんのちょっとでして・・・。

たぶんAccesssとしては初歩の初歩なのでしょうが・・・

ご存じの方、教えていただければ幸いです。

よろしくお願い申し上げます。

投稿日時 - 2007-07-18 04:56:26

QNo.3177504

すぐに回答ほしいです

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

#1です。
>RndとNowと4桁の整数に変換する巻数(不明。なお、3桁だとしたら0パ>ディングする)を使えばうまくいくような気がするのでしょうが・・・
Rndで4桁数値とNowで時分の表示なら

"D-" & Format(Rnd() * 10000, "0000") & "-" Format(Now(),"hhnn")

投稿日時 - 2007-07-18 15:29:08

お礼

ご回答ありがとうございます。

"D-" & Format(Rnd() * 10000, "0000") & "-" Format(Now(),"hhnn")

で、"-" のあとに & がなかったですが、それをいれたらいけました。

ありがとうございます。

投稿日時 - 2007-07-20 03:11:36

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

入力のたびにひとつずつカウントアップするということでいいいのなら
入力済の最大値を求めそれに1を足すというありふれた処理でいいのでは

Me.txtID.DefaultValue = "'" & "D-" & Format(Nz(Right(DMax("ID", "[テーブル名]"), 8), 0) + 1,"00000000") & "'"

投稿日時 - 2007-07-18 16:14:06

お礼

ご回答ありがとうございます。

今回は#3さんのやりかたでいってみたいとおもいますが、
今後、#4さんのやりかたを参考にさせていただきます。

ありがとうございました。

投稿日時 - 2007-07-20 03:13:17

ANo.2

安直な案
テーブルデザインでオートナンバー型のフィールドを作成し
書式に、"D-"0000-0000 とすれば?

内部的には単なる長整数型なので、”D-”は含まれません。
でも・・
実は、A-、B-、C-・・・・とかも有ったりして。。。

投稿日時 - 2007-07-18 13:30:38

お礼

ご回答ありがとうございます

なかなかトリッキーなやりかたで、なるほど、と思いました。

ただ、オートナンバーだとヒューマンエラーが出そうな気がしまして・・・
(できれば(<=自分の技術的に)印刷も可能にしたいので)

ヤフオクの商品IDのようなものを想定しているのですが・・・

いい解決案がございましたら、お教えいただければ幸いです。

以上、よろしくお願い申し上げます。

投稿日時 - 2007-07-18 14:54:05

ANo.1

定型入力欄に「"D-"0000-0000;0;_」とすればいいのでは?
http://office.microsoft.com/ja-jp/access/HA100964521041.aspx

投稿日時 - 2007-07-18 12:42:55

お礼

ご回答ありがとうございます、
掲載していただいたURL,大変みやすく参考になります。

ただ、これだと「D-★★★★-☆☆☆☆」の★と☆の部分は自力でなく
自分で入力しないといけないですよね。。。
規定値として入力させたいのですが。。。、

RndとNowと4桁の整数に変換する巻数(不明。なお、3桁だとしたら0パディングする)を使えばうまくいくような気がするのでしょうが・・・
型不一致とかいろんなエラーがでてk実現できません、

どうすればよろしいでしょうか?

以上、よろしくお願い申し上げます。

投稿日時 - 2007-07-18 14:48:01

あなたにオススメの質問