- 締切済み
Access:テーブルの情報を参照して、フォームに反映させる方法
Access : テーブルの情報を参照して、フォームに反映させる方法 はじめまして。Access初心者です。 データベースの参照の仕方について質問いたします。 現在、商品情報のデータベーステーブルがあり その中には「商品ID」「メーカー名」「商品名」、3つのフィールドがあります。 ここから、入庫テーブルを作るために 入庫フォームに「商品ID」を入力すると 自動で「メーカー名」「商品名」が表示され 最後に「入庫数」を入力すれば、入庫テーブルが完成するようにしたいです。 例) データベーステーブル 商品ID メーカー名 商品名 1 A社 AAA 2 B社 BBB 3 C社 CCC 4 D社 DDD 上記のデータベースがあり 商品名「CCC」が100個入庫した際 入庫フォームに「3」を入力すると 「3」 「C社」 「CCC」が表示され 最後に、入庫数「100」を入力して、入庫テーブルの完了としたいです。 そこで、入庫フォームにデータベースの内容を反映させる仕方が分かりません。 どなたかご教授願えないでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- fumufumu_2006
- ベストアンサー率66% (163/245)
こんなのはどうでしょうか? フォームの各テキストボックスが、[商品ID][メーカー名][商品名]の場合です。 商品情報のテーブルを「T_商品情報」で、商品IDが数値型の場合。 Private Sub 商品ID_AfterUpdate() メーカー名 = DLookup("メーカー名", "T_商品情報", "商品ID=" & 商品ID) 商品名 = DLookup("商品名", "T_商品情報", "商品ID=" & 商品ID) End Sub 商品IDが文字型の場合(あまりすすめられませんが)。 Private Sub 商品ID_AfterUpdate() メーカー名 = DLookup("メーカー名", "T_商品情報", "商品ID=""" & 商品ID & """") 商品名 = DLookup("商品名", "T_商品情報", "商品ID=""" & 商品ID & """") End Sub
入庫テーブルのフィールドがわかりませんが、 一番楽なのは、フォームにコンボボックスを設け、 ROWソースに、「商品テーブル名」 列数に、3 列幅に、0.5cm;1.5cm,1.5cm (各列の表示幅が足りなければ適当に変更してください) とすれば、商品IDが取得できます。 ただ、ご質問の内容から、入庫テーブルや在庫テーブルにもメーカー名や商品名を保存しているように感じられます。 これは非常に無駄なことですし、データベースの整合性を失わせる元になります。 普通は、入庫テーブルや在庫テーブルには「商品ID」「メーカーID」を保存すべきです。 入庫テーブル等で、メーカー名や商品名を表示したければクエリで表示すべきです。
お礼
vizzar様 ありがとうございます。 なにぶん、初心者のため ご教授いただいた内容がよく分かりませんでした。 引き続き努力していきます。
お礼
fumufumu_2006さまへ 未だ解決できていませんが 方向性は見えてきました。 少しずつ進んで行こうと思います。 ありがとうございました。