• ベストアンサー

ACCESS。よろしくお願いします。VLOOKUP??

いつもお世話になっています。よろしくお願いします。顧客管理で困っています。 管理テーブル ID 日付 顧客番号 顧客名 性別 顧客テーブル ID 顧客番号 顧客名 性別 管理フォーム ID 日付 顧客番号 顧客名 性別 そこでお聞きしたいのですが・・ 管理フォームの入力で 顧客番号入力したら 顧客名 性別 を自動で引っ張ってきたいのですが・・ どうしたらできるかわかりません。 よろしくお願いします。 本等かってきましたが・・行き詰っています。 お勧めの本などありましたら教えていただけましたら幸いです。

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

  • ベストアンサー
noname#112806
noname#112806
回答No.1

データベースの設計に関してひとつ気になる点が…。 管理テーブルと顧客テーブルに同じフィールドがありますが、各々入力する必要があるのでしょうか? 質問の内容から推測すると、顧客は顧客番号で管理されているようですのでその前提で回答させていただきます。 まず、顧客テーブルは顧客番号を主キーに設定すればIDフィールドは必要ありません。 管理テーブルのほうは顧客名、性別のフィールドが必要ありません。 そして、2つのテーブルを基にクエリを作成します。(顧客名、性別のみ顧客テーブルを参照し、それ以外は管理テーブルを参照する) 最後にそのクエリを管理フォームのレコードソースにしてみてください。

bartenn
質問者

補足

早速有難うございます。 早速やってみます。 指摘も有難うございます。

その他の回答 (1)

  • sanbit
  • ベストアンサー率32% (16/50)
回答No.2

管理フォームの顧客番号のテキストボックスの更新後のイベントビルドを 次のようにしてみてください。 Me![顧客名] = DLookup("顧客名", "顧客テーブル", "顧客番号='" & Me![顧客番号] & "'") Me![性別] = DLookup("性別", "顧客テーブル", "顧客番号='" & Me![顧客番号] & "'") これで顧客テーブルの顧客番号とフォームの顧客番号をKeyにして顧客名 性別 をフォームに表示します。 この種のプログラムはずいぶん作ってきました。 がんばって下さい。

関連するQ&A

  • アクセスでの、フォームとテーブルの連動の方法を教えてください

    初歩の初歩だと思うのですが、教えてください。 アクセスで、テーブルのフィールドと全く同じ内容でフォームを作りました。(受講生情報の管理) その中で「性別番号」と「性別」があり、(「性別番号」と「性別」は、別にテーブルを作っています)フォーム上では「性別番号」に番号(男なら1、女なら2)を入力すると「性別」に自動で値が入るように設定できたのですが、テーブルに反映されません。(フォームの「性別」のプロパティのコントロールソースに”DLOOKUP~”を入力しました) テーブル上にも同じように反映させるには、どうすればよいのでしょうか。 同様の質問と思われるものを参考にいろいろとやってみたのですが、どうもうまくいかなくって・・・ よろしくお願いします。

  • Access アクセスについて

    Accessでデータベースを作っています。 テーブル、クエリは下記のようになっており、リレーションシップで紐付けしてあります。 クエリからフォームを作成し、商品番号を入力することでマスタテーブルに登録されていれば自動で商品名等の情報が表示されるようになっています。(フォーム1) 商品番号を入力しカーソルが移動した時、マスタテーブルに該当する項目がなかった場合、マスタテーブルから作成した新規追加用のフォームが表示されるようになっています。(サブフォームではありません) 新規追加用フォームに商品名を入力し、閉じてもフォーム1の商品名の欄に反映されません。新規追加用フォームを閉じる時にVBAで”Requery”,”Refresh”もやってみましたがダメでした。商品番号を入力し直すと表示されます。 どうすれば自動で商品名が表示されるようになるか教えてください。 テーブル1(入力用) 1.ID(主キー) 2.商品番号 3.etc. テーブル2(マスタテーブル) 1.商品番号(主キー) 2.商品名 3.etc. クエリ 1.ID(テーブル1) 2.商品番号(テーブル1) 3.商品名(テーブル2) 4.etc.(テーブル2) 5.etc.(テーブル1)

  • アクセスでお問い合わせDBを作成したいが

    顧客テーブルのID(オートナンバー)と、問合せ入力テーブルの親ID(数値型)をリレーションシップで一対多の設定をしています。 顧客テーブルから作成したフォームからコマンドボタンで新規の問合せ入力フォームを開きたい(サブフォームは別の用途に使用したいので使いたくありません)のですが、フィルタがかかって入力できず、顧客テーブルのIDが問合せ入力フォームのIDに自動的に入りません。どのようにしたらよいのでしょうか? とても困っています。お願いします。

  • Access 入力フォームの作成

    アクセス2007 2つのテーブルがあります。 tbl顧客 顧客番号 顧客名 住所 電話 tbl販売 販売番号(オートナンバー) 日付 顧客番号 商品 金額 tbl販売で作成した入力フォームで、 約5日分のデータを、レシートを見て一気に入れます。 次のデータを入力します。 日付|顧客番号|商品|金額 3/8|123|石鹸|200 3/8|122|洗剤|100 3/8|126|食器|700 3/8|127|鉛筆|600 3/8|125|石鹸|200 ------------------- 3/9|123|食器|200 3/9|132|洗剤|900 3/9|126|食器|300 3/9|127|洗剤|600 3/9|128|石鹸|500 同じ日付を毎回入力しています。入力に手間がかかります。 例えば、見出にテキストボックスを作成して、その日付が自動的に入力できるような方法を知りたいです。 3/8と入力 ↓自動的に日付が入る。 3/8|123|石鹸|200 3/8|122|洗剤|100 3/8|126|食器|700 また、顧客番号だけですと入力ミスが起きやすいので、確認の意味で顧客名が表示されるような方法はありますか? 3/8|123|太郎|石鹸|200 3/8|122|花子|洗剤|100 3/8|126|次郎|食器|700 のように。 よろしくお願い致します。

  • MS Access 入力フォーム:自動採番

    Access2013での自動採番に関して2パターン教えて下さい。 質問(1):"顧客番号"の自動採番 【テーブル名】 顧客情報 【フィールド】 "顧客番号"、"顧客名"、"顧客名かな"、"顧客住所"、"電話番号"、"担当者"、"メール"・・・ <"顧客番号"の採番方法> 顧客名の頭文字を五十音順の「あかさたな」で行ごとに連番をつけて管理している。 例)) 「ABC商事」→エービーシーしょうじ→「あ‐01」 「東京印刷」→とうきょういんさつ→「た-01」 《やりたい事!》 入力フォームに新規で、「東西工業」を入力する際に "顧客名かな"を入力したら、"顧客番号"が自動的に採番されるようにしたい。 顧客名:東西工業 顧客名かな:とうざいこうぎょう 顧客番号:た-02 ←ココを自動採番にしたい ------------------------------------------------ 質問(2)"取引番号"の自動採番 【テーブル名】 取引情報 【フィールド】 "顧客番号"、"取引番号"、"顧客名"、"顧客名かな"、"住所"、"電話番号"、"担当者"、"メール"・・・ <"取引番号"の採番方法> 取引が発生した順で、"顧客番号"ごとに枝番をつけて管理している。 例)) 「ABC商事」→1/10の取引→"顧客番号":あ‐01、"取引番号":01 「ABC商事」→1/31の取引→"顧客番号":あ‐01、"取引番号":02 《やりたい事!》 入力フォームに新規で、「ABC商事」の2/15の取引情報を入力する際に "顧客番号"を入力したら、"取引番号"が自動的に採番されるようにしたい。 顧客名:ABC商事 顧客番号:あ‐01 取引日:2016/02/15 取引番号:03 ←ココを自動採番にしたい 説明がうまくできず、分かりにくいかとは思いますが 何とかお知恵をお借り出来れば助かります。 よろしくお願い致しますm(__)m

  • Access2002で任意のレコードのみをレポートで印刷したい

    http://oshiete1.goo.ne.jp/qa5272888.html の続きです。 テーブルは下記のとおりです。(計4つ) 1.顧客テーブル(データ投入済み) ・顧客ID(テキスト) ・顧客名(テキスト) ・フリガナ(テキスト) 2.納品書テーブル(データはフォームから自動生成) ・納品書ID(オートナンバー) ・納品日付(日付) ・顧客ID(テキスト) 3.注文テーブル(データ投入済み) ・注文ID(テキスト) ・顧客ID(テキスト) ・納品書ID(テキスト) ・数量(数値) ・摘要(テキスト) ・選択(Yes/No) 4.商品マスター(データ投入済み) ・商品ID(テキスト) ・商品名(テキスト) ・単価(数値) 以上の4つのテーブルでテストDBを作っています。 上述したとおり、フォームで、 1.新規レコードの作製 2.納品日付入力 3.コンボボックス(従業員名、カナ)をコンボボックスで選択 という手順を踏み、納品書番号が自動的に振られるフォームまで作成できました。 これを元に、レポートとして、 ・顧客を選択 ・納品書番号を選択 して、選択したレコードをレポートに表示したい、という質問です。 前の質問で、下記ご回答を得ております。 --------------------------------------------------------------- 1.納品書の一覧 以前作成した「納品書番号」のレコードソースを SELECT 納品書テーブル.納品書ID, 納品書テーブル.納品日付, 納品書テーブル.顧客ID FROM 納品書テーブル ORDER BY 納品書テーブル.納品書ID DESC; に変更して、新しいものが先に見えるようにします 2.フォームのプロパティで「データ」の「追加の許可」を「いいえ」にします。 3.ウィザードが起動したら「フォームの操作」「フォームを開く」と進み、「納品書番号(選択)」を開くようにします。これでいつでも新規納品書を作成できます 4.「納品書番号」フォームのイベントで「アクティブ時」を「[イベント プロシージャ]」にし編集ボタン(…)を押して、以下のようにします Private Sub Form_Activate() Me.Requery End Sub これで新規納品書作成後に「納品書番号(選択)」を閉じると、最新の納品書が表示されます 5.レポート「納品書」の作成 レコードソースは SELECT 納品書テーブル.納品書ID, 納品書テーブル.納品日付, 従業員マスタ.従業員名 FROM 従業員マスタ INNER JOIN 納品書テーブル ON 従業員マスタ.従業員ID = 納品書テーブル.顧客ID WHERE (((納品書テーブル.納品書ID)=[Forms]![納品書番号]![納品書ID])); 6.レポートにフィールドリストから「納品書ID」「従業員名」などを貼り付けます 7.「納品書番号」をデザインモードで開き、ボタンを追加し「納品書」レポートをプレビューで開くようにします。これで任意の納品書が印刷できるようになります 8.実際のレポートは納品書番号に対応するアイテムが並ぶ必要がありますが、これはレコードソース(クエリ)を拡張することでもできるし、親子レポートにすることでも可能です。色々試してください --------------------------------------------------------------- fuuten_no_nekoさん、ありがとうございました。 これまでは「フォーム」に関する質問で、今回は「レポート」に関するものに進んできましたので、新規の質問にしたほうがよいとのアドバイスを受け、この質問を立ち上げます。 なお、「今ここまでできている」という部分は、補足に記述します。 どうぞよろしくお願いします。

  • ACCESS 基本的な構築(一側から他側のレコード指定)

    9月からACCESSを始めたばかりの者です。 意味不明な説明だったり言葉足らずの質問の場合はお許し下さい。 基本的な構築方法について質問があります。 現在、顧客&ペットの日記付き管理システムを構築しており、 分からない点が出来たのでアドバイスを頂ければと思います。 テーブル    T_顧客情報      T_生体情報      T_成長日記 リレーション  ★顧客ID  一対他   顧客ID       ★日記ID                        ★生体ID 一対他  生体ID 以上の関係でリレーションをしております。★が主キーです。 ※生体とはペット(犬)の事です。 ■業務の流れで生体情報を入力した後、顧客情報を入力することがあり 対策として、生体情報のフォームで顧客IDを検索するコントロールボタンを設置し、 顧客抽出などから顧客を選び最終的に【顧客IDを挿入】ボタンを押すことで 半自動?で顧客IDを生体情報フォームに流し込んでいます。 ■分からないのが『 T_生体情報 』と『 T_成長日記 』の場合で、 先ほどの同じ様に、【生体ID】を検索するコントロールボタンを設置 すれば済むことなんですが、 できれば生体情報フォームからコントロールボタン(日記フォームを開くボタン)の1クリックで 生体情報で開いているレコードの生体IDや生体の名前、性別などを成長日記フォームに 表示させたいのですが…。 できれば、その生体の所有者である顧客名も表示させたいと思います。  生体情報フォームで生体を検索(事前に飼い主の顧客名も入力済み)   ↓  成長日記フォームを開くボタンを押す   ↓  成長日記フォームが開き  生体情報の主キー(生体ID)、生体名、性別、品種など自動で表示  また飼い主の名前の名前も自動で表示   ↓  本日の日付入力、日記の入力 リレーションシップで『1対他』の他側を表示させる場合は 検索フォームなどを設置しないとダメなのでしょうか? また、上記の続きで、 特定の生体ID(犬)の日記だけを日付別にコントロールボタン等で 確認することは可能ですか? 宜しくお願い致します。

  • ACCESS

    どうか皆さんのお力添えを下さい。 ACCESS2010を利用して、以下の様な注文フォームaccdbを完成させていと考えています。現在、以下のところまで作業が進んでいます。 (1)テーブル (1) 注文履歴テーブル 注文ID・・・オートナンバー型 商品No・・・テキスト型 数量・・・数値型 (2) 商品テーブル 商品No・・・テキスト型 商品名・・・テキスト型 単価・・・通貨型 (3) 顧客テーブル 顧客ID・・・数値型 顧客名・・・テキスト型 パスワード・・・テキスト型 (2)フォーム (1)ログインフォーム 顧客ID入力用テキストボックス パスワード入力用テキストボックス ログインボタン・・・VBAを使って顧客テーブルに入っている顧客ID、パスワードが一致すれば注文フォームが開くところまではできました。 (2)注文フォーム(商品画像一覧があり、それをクリックすると商品No毎に個別に作成した注文フォームにジャンプします) ・コントロールボックスで数量を選ぶ ・注文ボタンを押すと注文履歴テーブルに商品ID、商品名、商品数が反映されます。 ここからが質問内容になります。 まず、はじめにログインフォームで入力後、照合OKになった顧客ID、パスワードを その後開いた注文フォームでの注文作業が完了、または中断するまでの間、 注文履歴に自動的に入力させ続けることはできますでしょうか?複数商品の注文が あった際は注文履歴テーブルにおいて複数レコードが連続して同じ顧客IDになるような 方法はあるでしょうか? ネット通販のようなものをイメージしております。 その他にもっと効率の良いやりかたなどあればご教授下さい。 どうぞよろしくお願いします。

  • Accessについて教えて下さい。

    Access初心者です。 フォームのクリック時のイベントで開いた別のフォームを、サブフォームのリンクフィールドように、リレーションの項目を入力しなくてもテーブルに反映させるにはどうしたらいいのでしょうか? 今現在の状況は テーブルは顧客リスト、送付物、問合せがあり顧客IDでリレーションになっています。フォームはそれぞれ作りました。 メインフォームは顧客フォームで問合せのサブフォームが組み込まれています。送付物フォームはボタンでクリック時開くようマクロで作成しました。where条件は[顧客ID]=[Forms]![顧客リスト]![顧客ID]となっています。 例えば手紙を送ることになり、顧客フォームで該当者を選択→ボタンをクリックし送付物フォームを開く →顧客IDを入力→その他必要事項を入力というかんじです。 顧客IDを入力しないと『フィールド顧客IDとキーが一致しているレコードをテーブル顧客リストで探すことはできません』とエラーになります。 問合せのサブフォームは顧客IDでリンクフィールドとなっています。 ID表示が必要ないので顧客IDは消してあります。 こちらは顧客フォームで該当者を選択し、顧客IDを選択しなくても入力すると問合せテーブルに顧客IDも反映されています。 問合せのように送付物にも顧客IDを選択しなくても反映させるようにするにはどうしたらよいでしょうか? 説明がわかりづらいとは思いますが、お分かりになる方よろしくお願い致します。

  • (ACCESS)連番取得について

    アクセスで顧客管理をしています。 DMax関数を用いて、レコードを追加する度に自動で連番を振る設定に したいと思っていますが、上手くいかないため質問させてください。 【テーブル名】T_顧客一覧 【入力用のフォーム名】F_顧客登録 【連番を入力させたい項目(フィールド名)】No(テーブルでは主キーに設定) とし、フォームの”No”の既定値に   =DMax("No","T_顧客一覧")+1 と入力するのですが、フォームには1としか表示されません。 非常に初歩的な質問だとは思うのですが、 何か原因として考えられることがありますでしょうか? 情報が足りないようでしたら補足させていただきます。 よろしくお願いします。

専門家に質問してみよう