• ベストアンサー

オートナンバーでの質問

現在在庫管理をアクセスで作成中です。 そこで質問なのですが、 商品IDを「ア000」「イ000」など、頭文字+番号としたいと考えているのですが、新しい商品を付け足すときに、頭文字+「オートナンバー」みたいにできないでしょうか? ソートを使う際に商品IDを使いたいと思っています。 今は、一覧表で何番まで作ったのか確認しての作業となっているので面倒です。。 頭文字といっても、「防水ゴムキャップ」などは、「ボ」ではなく、「ゴ」の部類にしたいと思っていたので、商品名のソートでは不十分です。 何かいい方法はありませんか?

  • sss09
  • お礼率62% (5/8)

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.4

え~と・・・ 何処からお話したら良いものやら (^^ゞ 下準備 >商品IDを「ア000」「イ000」など、頭文字+番号としたいと考えているのですが と考えているテーブル名を『T在庫管理』とします。 これを元に帳票フォームを作成して名前を、F在庫管理 とします。 その、F在庫管理 フォームをデザインビューで開いて (商品ID → 商品ID にしてます) 商品ID のフィールドのプロパティのイベントタブの更新後処理に (▼・・・ の三点リーダみたいな方をクリック) そうすると Private Sub 商品ID_afterUpdate() End Sub てのが現れますので 前述のように Private Sub 商品ID_afterUpdate()   Me!商品ID = nextID("商品ID", "T在庫管理", Me!商品ID) End Sub といれておきます。 次に 挿入→標準モジュール と進んで、そこに Function nextID(fld As String, tbl As String, str As String) As String   Dim t1 As Variant   '変数に色々なタイプを入れるのでVariant型にしてます   t1 = DMax(fld, tbl, fld & " like '" & str & "*'")   't1 に 頭文字で始まる最大値を格納   t1 = Mid(t1, 2) + 1   't1 から数値部分(回答例だと3桁)にプラス1   nextID = str & Format(Nz(t1, 1), "000")   't1 が Null だった場合を考えて(最初の○001を求めるためにNZ関数使用) End Function と記述。' で始まる行は解説用のコメントです。 で、エラーが無いかコンパイル。 無ければフォームの商品IDコントロールで例えば ぶ だけ入力してEnterで確定すると(更新後処理イベントが発生)、 順次 ぶ001、ぶ002・・・と増えてゆきます。 提示された連番部分が3桁(例、ぶ001 ~ ぶ999)なので、Format(Nz(t1, 1), "000") としておりますが、ここは5年くらいのスパンで考えて質問者さんで判断してください。 Format(Nz(t1, 1), "000")→Format(Nz(t1, 1), "0000") 4桁確保 オートナンバー的なものを用意する場合に一般的なのは、Dmax 関数を使うのですが 今回の場合は、『頭文字+「オートナンバー」みたい』とのことですので、 ちょっと工夫が必要です。 『「防水ゴムキャップ」などは、「ボ」ではなく、「ゴ」の部類にしたい』という 希望もありますし、また既に稼動しているのでこのような回答になったしだいです。 なんのこっちゃ?さっぱりわからん?なら、下記などでもお勉強してください。 魔法使いの開発工房 http://www.mahoutsukaino.com/ ※WEB上で有志の方が色々と解説されていますが、 それだけでは虫食い状態の知識に留まりがちです。 RDBはAccessに限らず裾野(基本的な知識)が無いと必ず行き詰まります。 本も数冊読んで裾野を広げてくださいまし。

sss09
質問者

お礼

すごい!!出来ました!! プロパティに更新後処理なんてものがあるのすら知りませんでした。。。 もう少し自分でもアクセスの勉強が必要なのも痛感しました。 参考のURLで是非勉強させていただきます。 今回は本当にありがとうございました。

その他の回答 (3)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

【商品マスタ】 商品ID、商品名、採番分類 B0001、防水ゴムキャップ、ゴ B0002、防水ゴムテープ、ゴ C0001、アアアアア、ア D0001、イイイイイ、ゴ 【商品採番マスタ】 採番分類、採番、更新日 ア、0001、9999/99/99 イ、0003、9999/99/99 ウ、0002、9999/99/99 ・・・・ ゴ、0008、9999/99/99 が「一覧表で何番まで作ったのか」と同じようになると 思いましたが・・・。 というより 【商品マスタ】 商品ID、商品名、分類ID B0001、防水ゴムキャップ、ゴ002 B0002、防水ゴムテープ、ゴ001 C0001、アアアアア、ア001 D0001、イイイイイ、ゴxxx ・・・・・・「003」になるようにしたい? 商品IDで並べても最後は「ゴ001」で「ゴ002」でない。 でしょうか。 商品マスタに頭文字の項目はありますか?。 【商品マスタ】 商品ID、商品名、採番分類、分類ID B0001、防水ゴムキャップ、ゴ、ゴ001 B0002、防水ゴムテープ、ゴ、ゴ002 C0001、アアアアア、ア、ア001 D0001、イイイイイ、ゴ、ゴxxx 一覧表がレコードをすべて表示で、 商品ID順としたら、分類したい最大値は求めにくいですから、 頭文字だけの項目を用意して、それで並べ替え、最大値を求める。 頭文字単位マスタテーブルでどこまで使ったか、 か 頭文字単位に集約で最大値を求めるもの、 が必要では?。 999までいったとき001(か000)からになる仕掛けもいるでしょう。

sss09
質問者

お礼

コメントありがとうございました。 今回は違う方法をとらせていただきますが、この内容も十分に勉強して理解したいと思います。 ありがとうございました。

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

例えば・・標準モジュールにこんなのを作って Function nextID(fld As String, tbl As String, str As String) As String   Dim t1 As Variant   t1 = DMax(fld, tbl, fld & " like '" & str & "*'")   t1 = Mid(t1, 2) + 1   nextID = str & Format(Nz(t1, 1), "000") End Function フォームの、商品IDフィールドの更新後処理に Private Sub 商品ID_afterUpdate()   Me!商品ID = nextID("商品ID", "テーブル名", Me!商品ID) End Sub とすれば 商品IDフィールド で 『あ』とだけ入力すれば あ001、あ002 と続きます。 「防水ゴムキャップ」などは、「ボ」ではなく、「ゴ」の部類にしたい ↑この辺は入力者に覚えておいてもらわんと・・ PS. 未検証なので、ご参考までに。エラー処理も入れてませんし・・。

sss09
質問者

補足

まずモジュールのに上記のものを作成しました。 フォームの更新処理後にプログラムを実行って。。。 どうやってやるんですか? 質問ばかりですみません・・・VBAもう少し勉強しないと会話成立しないですかね。。。ほんとにすいません><

  • layy
  • ベストアンサー率23% (292/1222)
回答No.1

「一覧表で何番まで作ったか」の一覧そのものをテーブルにすれば、採番マスタです。 商品情報から、そのマスタを見て次に使える番号と何番分がわかれば、使った後に次回使える番号にしておく更新。ソート用キーもこのマスタに保持。 棚卸し後は1からならそういうのも考慮。 採番マスタ作る、が浮かびます。 検索はDLOOKUP関数でもクエリでもよさそう。

sss09
質問者

補足

それは頭文字ごとにつくるってことですか? ちょっとこの説明だけでどういったものを作ったら良いのかがピンとこないです。。。 設計図がみえてこないのですが・・・ もう少し細かく教えていただけますか??

関連するQ&A

  • Accessでオートナンバーを別テーブルで取得

    Accessで得意先一覧と商品一覧のテーブル・フォームを作成しており、それぞれのフォームに選択ボックスを設け、チェックを入れたものだけを抽出し、1つの得意先に対し、複数の商品の一覧を作成したい と思っております。 現在あるテーブル・フォーム ■ 得意先コード 得意先名 担当者名 ■ 商品コード 商品名 価格 依頼書(Excelにエクスポートし一覧化)となる為、得意先に対する商品は都度変わっていきます。 現在は、得意先をメインフォーム、商品をサブフォームとし、全てコンボボックスで得意先1つを選択後、複数の商品を選択することで、同じオートナンバーIDを取得、依頼用空テーブルをコントロールソースとし、得意先テーブル、商品テーブルを作成後、IDでクエリを作成し、一覧としています。 しかし、得意先は約1万件、商品も300商品ぐらいある為、コンボボックスで選択に時間がかかっております。 それを、元々ある各一覧フォームから、チェックで選択し、それを依頼用の一覧としたいのですがどのようにしたら良いでしょうか? 単票形式フォーム同士で、メイン・サブフォームとすることもできず、困っております。 フィールド 得意先  商品コード  商品名  価格        得意先1  商品1     ・・・    ・・・        得意先1  商品2     ・・・    ・・・        得意先1  商品3     ・・・    ・・・ 別システムに取り込む為、依頼用の形式は上記のように決まっております 各一覧から、チェックで選択後、チェック分のみを抽出し、同じIDを取得後、一覧化することは可能なのでしょうか? お手数ですが、どなたかご教授願えませんでしょうか?

  • オートシェイプの楕円のサイズを好みの大きさに設定できますか?

    例えば、オートシェイプの楕円をクリックすると、 初期設定なのか、25.4mmくらいの大きさの丸が出ますよね。 それを私は9mmに設定したいのです。クリックすれば9mmの丸が出るように。 私が何をしたいかというと、 私が毎日仕事で作成する書類で、(ア)とか、(イ)とかの選択枠があり、いつも手で、丸で囲んでいたのですが、パソコンでできたら楽できれいだろうと。 楕円で、25.4mmで丸をつけ、書式設定からサイズを変えて、文字が丸の前に出てくるように設定して・・・。ってもっと簡単にできないのかしらと思ったので。 “(ア)”全てを囲みたいのです。アだけじゃなく。 わかる方、知恵をお貸しください。

  • 検索のソートについて

    以前phpのカテゴリ内で以下のようなQ&Aをみつけましたが、まったく同じ状況で使用する言語がperlの場合どのようにすればいいのでしょうか?どなたか教えて下さい。 "PHP+MySQLを勉強中です。 例えば、商品テーブルに商品ID、商品名、価格、在庫数の4つのフィールドがあって、その表の各名称をクリックするとソート(例:オークションなどで現在価格をクリックするとソートなど[select * from 商品 order by 価格 asc])できるスクリプトをどのように作成すればよいか教えて下さい。" "shohin.phpで商品一覧を表示するとして、フィールド各名称のリンクを <a href="shohin.php?sort=1">商品ID</a><a href="shohin.php?sort=2">商品名</a>・・・ のようにします。" あとはswitch文を使ってget値(sort=の値)別にクエリーを変えるだけです。

    • ベストアンサー
    • Perl
  • エクセルで出荷表と出荷伝票をつくりたい

    【シート1】に 列  A     B    C    D     E  ・・・・              出荷日 出荷日 出荷日 ・・・   商品名  コード 1月1日 1月5日 1月10日 ・・・    ア     01    10    イ     05         5    ウ     03    5         23    ・    ・    ・ 上記のような感じで横軸に出荷日、縦軸に商品名の在庫一覧がある 【シート2】に シート1で入力したら、その該当の商品名等を引っ張ってくる出荷伝票を作りたいのです 出荷日  商品名   コード  数量 1/1     ア      01    10 1/1     ウ      03    5

  • s///eg変換で

    # ↓OKWEBでは半角カナ表示できないけど、半角カナのつもり @kptk = ( 'ヴ', 'ー', 'ッ', 'ガ', 'ギ', 'グ', 'ゲ', 'ゴ', 'ァ', 'ィ', 'ゥ', 'ェ', 'ォ', 'ア', 'イ', 'ウ', 'エ', 'オ', ・・・ ); # ↓こちらは全部全角カナ @kptv = ( 'ヴ', 'ー', 'ッ', 'ガ', 'ギ', 'グ', 'ゲ', 'ゴ', 'ァ', 'ィ', 'ゥ', 'ェ', 'ォ', 'ア', 'イ', 'ウ', 'エ', 'オ', ・・・ ); for(my $n = 0; $n < @kptk; $n++){ $data =~ s/$kptk[$n]/$kptv[$n]/eg; } などとして、半角カナを全角に直したいのですが、どうも半角の小さい'ァ'だけがまともに変換されません。 その付近の文字やそれ以降すべての文字が文字化けします。 インターネットエクスプローラ5から呼び出しています。 サーバーはソラリス。 文字コードはEUCです。

  • オートコンプリートが使えない

    IE6.0SP2を使用してます。 ユーザIDとパスワードを自動表示(ユーザIDの頭一文字入れたら自動的に両方ともでてくる機能) を他の人が使用しているのを見て、自分もその設定を したいと思い、以下の設定をしてみました。 「ツール」→「インターネットオプション」     ↓ 「コンテンツ」タブをクリック      ↓ 個人情報の「オートコンプリート」クリック      ↓ 「パスワードを保存する」 しかし、ユーザIDは覚えてくれるのですが、 パスワードが自動で出てきてくれません。 何か他に設定が必要なのでしょうか? どなたかご存知の方がいらっしゃれば、 お教え頂ければと思います。 宜しくお願い致します。

  • IEのオートコンプリート機能

    IEのオートコンプリート機能について教えてください 1.IDと対応するパスワード(以下PW)を入力するとインターネットオプションで記憶しておくことが出来、次の機会ににIDを入力する(頭文字だけでリストがダイアログボックスに頭文字が一致するIDリストが表示されそれをクリックするだけでIDが入力されますが)と記憶されたPWが自然入力となります。  ここでお教え願いたいのですが、数多くのID(多分100個くらい)を記憶させるとそれ以降はPWが記憶できなくなります。この制限数とそれを拡大する方法をご存知の方お教え願います。またどこにこれらの情報が保存されているのか、保存された情報の一部を変更消去する方法をご存知ならばこのこともお教えいただきたいと思います。

  • マッチングテストの問題です

    マッチング処理のテストデータ(表4)の中かっこにいれるべきてきせつな組み合わせを解答群からえらべ、 商品在庫ファイルと売上在庫ファイルをマッチングし、在庫数を変更するプログラムである 商品在庫ファイル、売上ファイルとともに商品レコードで昇順で整列済みである ただし、商品在庫ファイル、売上ファイルにレコードがなくなったらS-CODE、U-CODEにH.V.(最高値)が入る。 商品在庫ファイル   商品コード(S-CODE)   商品名  在庫数    (a)             スキャナ     25    (b)            スキャナ     43 売上ファイル  商品コード(U-CODE)   売上年月日    売上個数        110021       2011/09/10     10        110022       2011/09/11      9 解答群              a b ア         110019 110020 イ           1120020 110022 ウ 110021 110022 エ 110023 110024 答えはイなのですが解説をお願いします

  • PHP+MySQLでのソートについて

    PHP+MySQLを勉強中です。 例えば、商品テーブルに商品ID、商品名、価格、在庫数の4つのフィールドがあって、その表の各名称をクリックするとソート(例:オークションなどで現在価格をクリックするとソートなど[select * from 商品 order by 価格 asc])できるスクリプトをどのように作成すればよいか教えて下さい。

    • ベストアンサー
    • PHP
  • Excel2000:既存一覧のデータを任意に配列しなおす

    <現一覧>(Sheet1)    A      B  C  D    E   F 1 部門CD  部門 ID 内容 カテゴリ 分類 2 130    経理  1  あ   ア    a 3 130    経理  2  い   イ    b 4 130    経理  3  う   ア    a 5 110    総務  4  え   ウ    a 6 110    総務  5  お   イ    d 7 550    営業  6  か   ウ    c 8 550    営業  7  き   オ    c 9 550    営業  8  く    オ    c 現在、上記の一覧があります。 これを、以下のそれぞれ二つの一覧に、内容の配列を変えて作成出来るでしょうか。 ------------------------------------------ 一覧(1) ・複数ある同じ「部門」と「部門CD」をまとめる ・「部門CD」と「カテゴリ」をキーにし、「内容」を1セル上にまとめて配列する。 (Sheet2)    A     B   C  D  E  F G 1 部門CD 部門 ア イ ウ エ オ 2  130   経理  あ い             う 3  110   総務     え             お 4  550   営業      か    き                      く ------------------------------------------ 一覧(2) ・複数ある同じ「分類」をまとめる ・「分類」と「カテゴリ」をキーにし、該当する「内容」を1セル上にまとめて配列する。 (Sheet3)    A  B  C D  E  F 1 分類 ア イ ウ エ オ 2  a    あ   え       う 3  b     い 4  c        か   き                 く 5  d     お ------------------------------------------ こんなこと、なるべくなら関数で出来ますでしょうか。