• 締切済み

ACCESSで社員名簿作成。

かなりの初心者です。社員名簿を作成しているのですが、新規社員のデータ入力時に自動的に社員番号を振る方法がありましたら教えてください。 社員番号は「入社年-その年に入社した順番」の形で、例えば「04-014」です。既に1500名ほどの社員に番号が付いてるのですが、新しく入社した方のデータを入力するフォームの社員番号のフィールドに「○○-○○○」と自動表示することは出来ますか? 分かる範囲で補足しますので、よろしくお願い致します。

みんなの回答

  • V-bravo-U
  • ベストアンサー率51% (155/301)
回答No.3

 #2です。  すでに社員番号が記録されているデータベースでお困りでしたら、該当テーブルだけ ではそのテーブルでの表示のみの適用となってしまいます。全てのフォーム(レポート) に対しての「定型入力」項目に「99\-999」と入れる必要があります。

  • V-bravo-U
  • ベストアンサー率51% (155/301)
回答No.2

#ACCESSのバージョンが書かれていないので手元の2000を前提に回答  テーブルでもできます。まず、社員番号となるテーブルに対して「定型入力」欄に 「99\-999」と入れてください。データ型は数値型でもテキスト型でもかまいませんが、 今後のために数値型にすればいいでしょう。ついでに主キー設定にすることも お奨めします。  なお、デメリットとして次のような問題点があります。 ・文字列型にすると数値型と比較して検索に時間がかかる場合がある ・数値型にすると「04-014」なら「4-014」になってしまう ・内部的には「-」のないデータとして保存される

fuji1228
質問者

お礼

回答ありがとうございます。 「99\-999」と入れても自動的には番号が表示されないです・・・。 社員番号は5ケタで統一したいのでテキスト型にしたいと思います。わざわざデメリットまで教えて頂きましてありがとうございました。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

テーブルではできないのでフォームで設定します。 下記のURLを参考にしてください。 【独自のカウンタ用フィールドを作成する方法】 http://support.microsoft.com/default.aspx?scid=kb;ja;140908 上記を簡略化するなら DMAX関数を使ってください Private Sub 入社年_AfterUpdate() Dim XNO XNO = DMax("社員番号", "社員名簿", "[社員番号] Like '" & Format([入社年], "00-") & "*'") [社員番号] = Format([入社年], "00-") & Format(Right(Nz(XNO, "000"), 3) + 1, "000") Msgbox [社員名]&"の社員番号は"&[社員番号]&"になりました。" End Sub 入社年でなく入社日の場合はYear関数で年を計算して下さい 入社年は必須です。 社員番号は変更不可にしてください。 データ入力後にメッセージが出ます。

fuji1228
質問者

お礼

早急の回答をありがとうございます。 う~ん、上記の式はフォームの「社員番号」プロパティで設定すればいいですか??関数以前のレベルで本当すみません。。 あと、「氏名」欄に名前を入力したら番号&メッセージが表示されるようにしたいと考えています。ちなみにACCESS2000です。