• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Accessで分類毎の連番を既定値に表示したい)

Accessで分類毎の連番を既定値に表示したい

このQ&Aのポイント
  • Access2007で業務用のデータベースを構築し、加工食品の原料のデータベースを管理しています。原料の分類ごとに通し番号を付与し、フォーム上で既定値として表示させたいと考えています。
  • 現在のデータベースでは、「T_原料リスト」テーブルに「分類ID」・「原料No」・「原料ID」・「原料名」などのフィールドがあります。また、「T_分類マスタ」テーブルとのリレーションも設定されています。
  • 実現したいのは、フォームで「分類ID」を選択すると、その分類の中で最大の「原料No」を既定値として表示し、「原料ID」には「分類ID」と「原料No」を結合した値を自動的に入力したいと考えています。

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

  • ベストアンサー
回答No.2

> 実現したいのは、フォームで「分類ID」をコンボボックスから選択すると、その分類の「原料No」の最大値を既定値として表示させることです。 コンボボックスの更新後処理のイベントプロシージャを下記のように記述してください。 Me.原料No.DefaultValue = Nz(Dmax("原料No","T_原料リスト","[分類No]=" & Me.分類No))+1 あるいは、 Me.原料No.Value = Nz(Dmax("原料No","T_原料リスト","[分類No]=" & Me.分類No))+1

kkke
質問者

お礼

度々のご返答ありがとうございます。 御礼が遅くなって申し訳ありません。 実のところ、まだうまくいっていません。。。 何度も見直しているのですが、どこも悪くないように思います。 何故だ・・・・(;-;)

その他の回答 (1)

回答No.1

> =Dmax("原料No","T_原料リスト","[分類No]=&[Forms]![F_原料リスト].[分類No]")+1 > と入力すれば良いはずだと思いやってみたのですが、エラー表示になってしまいます。 > > 質問ですが、 > (1)上記の式が間違っているのでしょうか? & が余分ですね。あとNz関数でNullを0に変換した方がいいでしょう。 =Nz(Dmax("原料No","T_原料リスト","[分類No]=[Forms]![F_原料リスト].[分類No]"))+1 分類No が数値型なら下記のようにしてもいいです。 =Nz(Dmax("原料No","T_原料リスト","[分類No]=" & [分類No]))+1 > (3)分類IDと原料Noを結合して、自動で「原料ID」を入力するにはどうすれば良いでしょうか? 原料ID は不必要ですね。 テーブルのデザインビューで、分類ID と 原料No で複数フィールドに主キーにしておいて、 クエリを作成して 原料ID: [分類ID] * 100000 + [原料No] とすればいいです。 クエリをテーブル代わりにフォームやレポートのレコードソースとします。 * 100000 の部分は[原料No]の最大桁数に合わせます。

kkke
質問者

お礼

ご回答ありがとうございます! 質問文で分類Noと分類IDを混同していました。分類Noが正しいです。申し訳ありません。 早速試してみましたが、コンボボックスで分類Noを選択しても、原料Noは1としか表示されません・・・ おそらくDmaxの部分はNullになっていますよね。何故だ。。。 分類Noも原料Noも数値型にしています。+1等の演算があるので、数値型じゃないとダメかなとおもったので。 フォームの分類Noの型は特に指定していませんが、関係ないでしょうか?

関連するQ&A

専門家に質問してみよう