- ベストアンサー
accessで2つのテーブルを結合してクエリ画面に表示する方法
- access初心者の方が、2つのテーブルの情報を1つのクエリに表示したい場合、自動紐付けが困難な場合もあります。リレーションの解説画面では結合する方法が説明されていますが、うまく反映されないこともあります。解決策をご教示いただけると助かります。
- access初心者の方が、2つのテーブルの商品名が異なるため、自動紐付けが困難な状況です。リレーションの解説では結合する方法が説明されていますが、うまく動作しないことがあります。解決方法をご教示いただけると幸いです。
- access初心者の方が、2つのテーブルを1つのクエリに表示したい場合、商品名が異なるため自動紐付けが難しいです。リレーションを結合する方法を試してみましたが、正しく反映されず困っています。解決策を教えていただけると助かります。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
今晩は クエリーはテーブル1とテーブル2は売却通し番号でリレーションされていますね テーブル1の「売却通し番号」にルックアップでテーブル2を参照の設定をします テーブル1のデザインビュー→売却通し番号→ルックアップ 表示コントロールはテキスットボックスになています →コンボボックスに変更→値集合ソースの右端のvからコンボボックス テーブルの変更を保存して閉じる 追伸 ルックアップのプロパティー ・値集合ソースの右端の…でクエリビルダが起動します、 ここで当日分、当月分と抽出条件も設定できます。 テーブル1とテーブル2のリレーションシップの線を右クリックから リレーションシップのシップの種類を選ぶことが出来ます ・連結列=1:最初のテーブル2の最初の項目「売却通し番号」 ・列数=2:「売却通し番号」と「商品名B」 ・列幅=0:表示しない2番目の幅を省略するとシステムにお任せ
その他の回答 (4)
- kkkkkm
- ベストアンサー率66% (1742/2617)
No2です。 そもそもの話になりますが 目視で確認して売却通し番号(等とか)を入力するくらいなら、直接売却値を入力すればいいだけの話だと思うのですが…。 目視しないでいいようなもの(双方の入力時に統一商品IDで仕入れ商品と販売商品を決定する)を作るようにした方がいいと思いますよ。
- tamu1129
- ベストアンサー率58% (1319/2258)
これは何が目的なのでしょう? 在庫管理? 入荷した時の名前と、販売した時の名前が違っていようがようは同じ商品な訳ですよね? こういった時は、商品に商品コードを付けるなどして、それを元にリレーションシップさせればいいんですよ 1つめのテーブルは入荷に関しての物 主キー オートナンバー 入荷日 商品コード 入荷数 2つめのテーブルは販売に関する物 主キー オートナンバー 販売日 商品コード 販売数 販売金額 販売時商品名(これがrutohamuni2012さんが言っている商品名Bに該当する) 3つめのテーブルが商品に関してのもの 主キー 商品コード(オートナンバー型にしてもいい) 商品名(これがrutohamuni2012さんが言っている商品名Aに該当する) 仕入金額(必要なら) てな物を作る 2つめのテーブルをエクセルからのデータで置き換えるなら 主:売却通し番号 商品名B 売却値 が入るテーブルに、商品コードと販売日と数量の3つフィールドを追加で作っておけばいいだけ 後からこのテーブルを開き、この名前のデータは商品コード何番の事を言っているなって事を判断し、インポート時には空欄になっている商品コードを後から手入力すればいいだけの話です(クエリでこのテーブルから商品コードが空欄になっているデータを抽出するのはわかりますよね?) またエクセルデータの販売数が1行必ず1だとするなら更新クエリで一括で数量が空欄になっているデータを1に書き換えてやる事が必要になります 商品コードでリレーション組める状態にしてやれば、販売されていない残数だろうが、商品Aが売却値いくらで売れたなんて事は簡単にクエリで出てきます 管理するのに 売却通し番号 なんて項目は必要ないですよ それよりも、数量と月日(入荷日・出荷日)のデータが欠落していてはデータベースにならないです
- kkkkkm
- ベストアンサー率66% (1742/2617)
> クエリ画面で、商品名Aがあいう商店チョコであるレコードの売却通し番号に1と入力する事で、同じクエリ画面の売却値に100円と表示され、 クエリで「売却値→テーブル2の売却値から」になっているのですからクエリを実行した時点で売却値は表示されているはずですが…。 > 売却通し番号→テーブル1とテーブル2の売却通し番号共通 これも意味が分かりませんし、クエリの一個のフィールドにテーブル1とテーブル2の「売却通し番号」がセットできるのでしょうか? ちょっとどのようなクエリなのか私にはわかりません。 > またテーブル1の売却値にも100円と入力される形にしたいのです。 ・テーブル1 主:入荷通し番号 商品名A 売却通し番号 そんなフィールドはありませんが…。 実際にテーブルやクエリを作成していますか?作成していなければ作成してから考えたほうがいいと思います。 ちなみに テーブル1の売却通し番号に入力して、更新クエリでテーブル2の売却値データをテーブル1にセットしたらいかがですか。 更新クエリ テーブル1とテーブル2を売却通し番号で結合 フィールド:売却値 テーブル:テーブル1 レコードの更新:[テーブル2]![売却値] 抽出条件:Is Null または:=0
- kkkkkm
- ベストアンサー率66% (1742/2617)
よく理解できないのですが > テーブル1の売却通し番号に番号が入力され、 どの商品のレコードにでしょうか。どの商品が売れたのかどうやって知ることができるのでしょうか。 クエリは何をもとに作成されているのでしょうか。 また、テーブル1とテーブル2で、これとこれは同じだというキーがなければ関連付けできないと思いますけど…。 ちなみに入荷とか出荷とか同じ種類が複数ある事は無いのでしょうか。
補足
>どの商品のレコードにでしょうか。どの商品が売れたのかどうやって知ることができるのでしょうか。 テーブル1の商品名Aとテーブル2の商品名Bを照らし合わせて、入荷商品と売却商品を目視で合わせます。 >クエリは何をもとに作成されているのでしょうか。 ・商品名A→テーブル1の商品名Aから ・売却通し番号→テーブル1とテーブル2の売却通し番号共通 ・売却値→テーブル2の売却値から >ちなみに入荷とか出荷とか同じ種類が複数ある事は無いのでしょうか。 あります。同じ商品を何個も入荷するので、商品名を主キーにせず、 入荷通し番号と売却通し番号がオートナンバーで主キーとなっています。 テーブル1は仕入時用のテーブル、テーブル2は売却時用のテーブルと言った方が良いでしょうか。 例えばあいう商店チョコが1個入荷された際、 テーブル1には 入荷通し番号→1、商品名A→あいう商店チョコ、売却値→null と入力しておき、 それが売れた日にエクセルから 売却通し番号→1(入荷通し番号とは無関係の番号)、商品名B→チョコレート(あいう商店)、売却値→100円 という情報が入ってくるので、 商品名Aのあいう商店チョコと商品名Bの商品名B→チョコレート(あいう商店)が 同じものである事を目視で確認して、 クエリ画面で、商品名Aがあいう商店チョコであるレコードの売却通し番号に1と入力する事で、同じクエリ画面の売却値に100円と表示され、 またテーブル1の売却値にも100円と入力される形にしたいのです。 本来1つのテーブルで解決すれば、もっとスマートなのかもしれませんが、 売却情報がエクセルのインポートになってしまっていたり、 入荷時と売却時の商品名がそれぞれ異なる名前になってしまっていたり、 また前記していませんでしたが、今までのリストが多いために クエリにはまだ売却されていない商品のみの表示にしている為、 こういった回りくどい仕様になってしまっています。
お礼
できました!ありがとうございました!