T伝票
T売上データ
T商品マスタ
があり、サブフォームを使い1対多で入力したいです
T伝票とT売上データを日付でリレーション(クエリ1)
T商品マスタと売上データを商品IDでリレーション(クエリ2)
それぞれ必要項目を入れたクエリを作成してフォームウィザードからサブフォームを作ろうとしましたが
クエリ2のフィールドをいれると
”選択したフィールドのレコードソースにアクセスできません。テーブルとそのテーブルを基にしたクエリのフィールドを選択した可能性があります。もしそうであればテーブル加クエリのどちらかのフィールドだけを選択してください”
というエラーがでます
エラー文もよく理解できませんが、どのようにしたら作成できるようになりますか?
日付でリレーションしているのは、データをEXCELからインポートするので、
双方のテーブルにインポートして、簡単に照合できるのが日付だから、です
リレーションの画面では 1-∞ となっていませんが、それも原因のひとつでしょうか?
T伝票:顧客No, 日付, …
T売上:顧客No, 日付, 商品No, …
T商品:商品No, …
T顧客:顧客No, …
T伝票(クエリ1)・・・・・・・・・・『Q伝票』:T伝票.顧客No, T伝票.日付, T顧客.顧客名, …
T伝票、T売上、T商品(クエリ2)・・・『Q売上』:T売上.顧客No, T売上.日付, T売上.商品No, T商品.商品名, …,
リレーションシップ:
F伝票(レコードソース『Q伝票』)
顧客No:1
日付 :12/1
サブフォーム(F売上:レコードソース『Q売上』)
A社としか取引しないから、日付だけ見れば誰に売り上げたか照合出来る、という事でしょうか?
例えば、
テーブル1.名前:あ,い,う,え,お
テーブル2.名前:あ,か
クエリの画面:テーブル1.名前 一 テーブル2.名前
これは、リレーションシップではありません。結合しただけ。
リンク切れのデータが表示されない仕組みと思っています。
いうえおか結合線を右クリック、設定変更で遊べるので、これはこれで面白いです。
テーブル1,名前 ← テーブル2.名前とかテーブル1,名前 → テーブル2.名前とか。
どちらのクエリにも
T売上データ
が使われているからだと思われますクエリ1を使わずにそのまま
T伝票
を指定したらどうでしょうこれも、1-∞ となるように設計しなおすべきですね。
でないと、データベースとして無意味なデータになります。
1つの売り上げは一つの伝票のみと紐づけられないだめですよね。
複数の伝票に、同じ売り上げが記載されていたら、二重計上になってしまいます。
一側(伝票)のリンクフィールドはユニーク(主キー)でないとダメです。
主キーは、複数のフィールドを組み合わせて設定することもできます。
あるいは、オートナンバー型のフィールドを主キーにするとか。
具体的にどうしたら分からないのなら、現状の伝票テーブル、売上テーブルのフィールド構成を提示してください。
ユニークキーでやりたかったのですが、ACCESSだけで入力するわけではなく
別途EXCELで入力されたデータもインポートする必要があります
そのときに
T伝票に重複のない日付のみをインポートしてユニークキーが作成されるようにして
T売上に、それ以外のデータをインポートするとき、T伝票のユニークキーをT売上にもってくる(紐付ける)方法がわからず
1対多の状態でインポートできませんでした
それで日付でリレーションしようとしていました
1日に伝票1枚だけならそれでいいですが、そうではないですよね。
現状の T伝票 と T売上 のフィールド構成を提示してもらえると、何かアドバイスできると思います。
T伝票
伝票ID(主キー) 売上日 取引先名 請求日 支払日
T売上
売上ID(主キー) 伝票ID 商品名 個数 単価ID
です。日付でリレーションしていたといっていましたが、うまくいかなし、間違った運用みたいなので
T売上からは削除しました
もしかして、伝票IDがExcelの元データに無いから、T売上に直接インポート出来ないって悩んでます?
おっしゃるとおり
インポートするときにそれがないから悩んでます
EXCELにあるならそれぞれのテーブルにインポートすればいいんですけど
そのフィールド構成なら、リレーションシップで、下記のように結合して、
T伝票.伝票ID 1→∞ T売上.伝票ID
フォームウィザードで、2つのテーブルから必要なフィールドを選択して進めていけば、自動でメイン/サブフォームが作成されます。
ウィザードを使わない場合は、メインフォームのレコードソースは T伝票、サブフォームのレコードソースは T売上、
リンク親フィールド、リンク子フィールドは 伝票ID に設定しておけばいいはずです。
インポートとの兼ね合いでどうしたものかと悩んでおります
エクセルのデータはどうなっているのですか。
エクセルのデータには伝票IDはないのですか。
ない場合、伝票と売上はどのように紐づける仕様になっているのですか。
売上日 取引先名 の組み合わせで一伝票という仕様なら、売上日 取引先名 の組み合わせで、複数フィールド主キーを設定すればいいですね。
その辺りの情報を提示してもらわないと、、、、
T伝票
売上日 取引先名(複合主キー) 請求日 支払日
T売上
売上ID 売上日 取引先名(複合主キー) 商品名 個数 単価ID
>> 10
>> 11
T伝票
伝票ID(主キー) 日付 …
1 12/13
2 12/14
Excelから取り込んだテーブル(仮)を作ります。
日付 商品名 個数 単価ID …
12/13 …
12/14 …
新しいクエリを作って、日付で紐付ければ、
Q売上(仮)
伝票ID(主キー) 日付 商品名 個数 単価ID …
1 12/13 …
2 12/14 …
これを追加クエリに変更、T売上に追加。