
Access2007で業務用のデータベースを構築しております。
Excelは良く利用するのですが、Accessでは初めてになります。
ご教示のほど、よろしくお願いします。
加工食品の原料のデータベースを構築しております。
原料の分類ごとに通し番号を付与し、それをフォーム上で既定値として表示させたいと考えております。
現状は「T_原料リスト」があり、フィールドに「分類ID」・「原料No」・「原料ID」・「原料名」・・・となってます。
別途「T_分類マスタ」があり、リレーションで「分類ID」と結合しています。
実現したいのは、フォームで「分類ID」をコンボボックスから選択すると、その分類の「原料No」の最大値を既定値として表示させることです。また、「分類ID」と「原料No」を結合し「原料ID」にしたいと考えております。
例えば、分類IDで「10(糖類)」を選ぶと、原料Noの最大値が「121」と表示され、原料IDが「10121」と決まる、といった具合です。
原料IDはイレギュラーに「99999」を入力したい状況もあるかもしれませんので、手入力でも良いかなと思ってます。
私なりに調べましたところ、フォームの「原料No」のプロパティシートの既定値に
=Dmax("原料No","T_原料リスト","[分類No]=&[Forms]![F_原料リスト].[分類No]")+1
と入力すれば良いはずだと思いやってみたのですが、エラー表示になってしまいます。
質問ですが、
(1)上記の式が間違っているのでしょうか?
(2)もっと良い方法があればお教えいただきたいです。
(3)分類IDと原料Noを結合して、自動で「原料ID」を入力するにはどうすれば良いでしょうか?
以上です。何卒よろしくお願いします。
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
度々のご返答ありがとうございます。
御礼が遅くなって申し訳ありません。
実のところ、まだうまくいっていません。。。
何度も見直しているのですが、どこも悪くないように思います。
何故だ・・・・(;-;)
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]の最大桁数に合わせます。
ご回答ありがとうございます!
質問文で分類Noと分類IDを混同していました。分類Noが正しいです。申し訳ありません。
早速試してみましたが、コンボボックスで分類Noを選択しても、原料Noは1としか表示されません・・・
おそらくDmaxの部分はNullになっていますよね。何故だ。。。
分類Noも原料Noも数値型にしています。+1等の演算があるので、数値型じゃないとダメかなとおもったので。
フォームの分類Noの型は特に指定していませんが、関係ないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Microsoft Officeを2台目のPCに...
-
大学のレポート A4で1枚レポー...
-
Office2024インストール後の疑問点
-
マイクロソフト オフィスのサポ...
-
office2019 のoutlookは2025年1...
-
役所でもらった書類をエクセル...
-
Office2021を別のPCにインスト...
-
エクセルの貼り付け「リンクさ...
-
エクセル 日付順に並べてかえた...
-
Excelで〇のついたものを抽出し...
-
【Excel VBA】PDFを作成して,...
-
outlookのメールが固まってしま...
-
表の作成について
-
エクセル:一定間隔で平均値を...
-
エクセルで質問です。 ハイパー...
-
エクセルからメールを作れるか...
-
エクセルマクロ(超初心者)
-
マクロ自動コピペ 貼り付ける場...
-
Microsoft Formsの「個人情報や...
-
パソコンWindows11 Office2021...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Microsoft Officeを2台目のPCに...
-
大学のレポート A4で1枚レポー...
-
マイクロソフト オフィスのサポ...
-
Office2021を別のPCにインスト...
-
エクセル 日付順に並べてかえた...
-
outlookのメールが固まってしま...
-
Excelで〇のついたものを抽出し...
-
Microsoft Formsの「個人情報や...
-
マクロ自動コピペ 貼り付ける場...
-
Office2024インストール後の疑問点
-
office2019 のoutlookは2025年1...
-
エクセルで質問です。 ハイパー...
-
エクセル 同じ数字を他の列に自...
-
別シートの年間行事表をカレン...
-
【Excel VBA】PDFを作成して,...
-
Excel 日付を比較したら、同じ...
-
パソコンWindows11 Office2021...
-
Office 2021 Professional Plus...
-
エクセル:一定間隔で平均値を...
-
Teams内でショートカットって貼...
おすすめ情報