• ベストアンサー

指定されたフィールド SQLステートメントのFRO

指定されたフィールド SQLステートメントのFROM句にある複数のテーブルを参照しました というエラーで困っています 会社で使っているアクセスのクエリにT0501テーブルを追加しましたらエラーが出ました どちら様か お助け下さい。 環境 Windows10/Office2019

この投稿のマルチメディアは削除されているためご覧いただけません。

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

  • ベストアンサー
  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.5

各テーブルの中身がわからないので、以下、当てずっぽうです。 GROUP BY [Q0303 売上月保険種類集計].売上月, [Q0303 売上月保険種類集計].氏名, [Q0303 売上月保険種類集計].社員ID, [Q0303 売上月保険種類集計].社員ID, [T0501 支払い手数料変更履歴].歩合給率 が GROUP BY [Q0303 売上月保険種類集計].売上月, [Q0303 売上月保険種類集計].氏名, [Q0303 売上月保険種類集計].社員ID, [T0501 支払い手数料変更履歴].社員ID, [T0501 支払い手数料変更履歴].歩合給率 かもしれません。

tom2011
質問者

お礼

ありがとうございます 解決いたしました

tom2011
質問者

補足

ありがとうございます 原因がわかりました T0501 支払い手数料変更履歴の中に歩合給率データが二つある為です。 更新していく構造で2019年歩合給率50%と2021年歩合給率70%のデータで2つ表現されていました 選択された売上月の年度2021年と更新年度2021年歩合給率70%を表示させたいのですが 初心者ですいません ご理解頂けたでしょうか

その他の回答 (4)

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.4

ありゃ違いましたか。ごねんなさい。 ならば ((IIf(IsNull([Forms]![F0601 レポート印刷]![Combo0]),9999,[社員ID]))=[Forms]![F0601 レポート印刷]![combo0] Or (IIf(IsNull([Forms]![F0601 レポート印刷]![Combo0]),9999,[社員ID]))=9999)) ここに登場する[社員ID]がどのテーブルの[社員ID]なのかわからないのかもしれません。

tom2011
質問者

補足

何度もすいません 社員IDを変更しましたら エラーは無くなりましたが データが 1月〇〇1月〇〇 2月〇〇2月〇〇 とダブって出ます?? なぜなんでしょうか ほんとすいません

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.3

提示のSQL文を見やすく加工して確認すると GROUP BY句に重複があります。 PARAMETERS [Forms]![F0601 レポート印刷]![combo0] Short; TRANSFORM Sum([Q0303 売上月保険種類集計].合計金額の合計) AS 売上金額の合計の合計 SELECT [Q0303 売上月保険種類集計].売上月, [Q0303 売上月保険種類集計].氏名, [Q0303 売上月保険種類集計].社員ID, Sum([Q0303 売上月保険種類集計].合計金額の合計) AS [合計 売上金額の合計], Sum((Nz([合計金額の合計],0)*[歩合給率])) AS 歩合制支給額 FROM ([Q0303 売上月保険種類集計] INNER JOIN [T0201 保険種類] ON [Q0303 売上月保険種類集計].保険種類ID = [T0201 保険種類].保険種類ID) INNER JOIN [T0501 支払い手数料変更履歴] ON [Q0303 売上月保険種類集計].社員ID = [T0501 支払い手数料変更履歴].社員ID WHERE ( ( ([Q0303 売上月保険種類集計].売上月) Between [Forms]![F0601 レポート印刷]![TEXT6] And [Forms]![F0601 レポート印刷]![TEXT8]) AND ((IIf(IsNull([Forms]![F0601 レポート印刷]![Combo0]),9999,[社員ID]))=[Forms]![F0601 レポート印刷]![combo0] Or (IIf(IsNull([Forms]![F0601 レポート印刷]![Combo0]),9999,[社員ID]))=9999)) GROUP BY [Q0303 売上月保険種類集計].売上月, [Q0303 売上月保険種類集計].氏名, [Q0303 売上月保険種類集計].社員ID, [Q0303 売上月保険種類集計].社員ID, [T0501 支払い手数料変更履歴].歩合給率 PIVOT [T0201 保険種類].保険種類 In ("一般損害","日本興亜","強制賠償","セゾン");

tom2011
質問者

補足

初心者でですいません ご指摘の [Q0303 売上月保険種類集計].社員ID,を一つ削除しても 同じエラーが出ます。

  • cicibo
  • ベストアンサー率34% (190/558)
回答No.2

推測ですが、「Q0303」はクエリですね。 Q0303を構成しているテーブルで「社員ID」があるテーブルが2つ以上ありますね。 ご質問のクエリのSQLを表示させます。 JOIN句の中に、 [社員ID] = [社員ID] という記述があるので、 [Q0303 売上月保険種類...].[社員ID] = [T0501 支払い手数料...].[社員ID]と テーブル名(もくしくクエリ名).(どっと)[社員ID]としてみてください。 ※ちなみに、テーブル名やクエリ名の中に空白はあまり指定しない方がよいと思います。 ACCESSの中で空白をデリミターとして用いている箇所があるかもしれないので。 このような時は、「T0201_保険種類」という具合にアンダーバーを使うとよいと思います。 (よけいなお世話ですみません)

tom2011
質問者

補足

ご指南ありがとうございます ところが  PARAMETERS [Forms]![F0601 レポート印刷]![combo0] Short; TRANSFORM Sum([Q0303 売上月保険種類集計].合計金額の合計) AS 売上金額の合計の合計 SELECT [Q0303 売上月保険種類集計].売上月, [Q0303 売上月保険種類集計].氏名, [Q0303 売上月保険種類集計].社員ID, Sum([Q0303 売上月保険種類集計].合計金額の合計) AS [合計 売上金額の合計], Sum((Nz([合計金額の合計],0)*[歩合給率])) AS 歩合制支給額 FROM ([Q0303 売上月保険種類集計] INNER JOIN [T0201 保険種類] ON [Q0303 売上月保険種類集計].保険種類ID = [T0201 保険種類].保険種類ID) INNER JOIN [T0501 支払い手数料変更履歴] ON [Q0303 売上月保険種類集計].社員ID = [T0501 支払い手数料変更履歴].社員ID WHERE ((([Q0303 売上月保険種類集計].売上月) Between [Forms]![F0601 レポート印刷]![TEXT6] And [Forms]![F0601 レポート印刷]![TEXT8]) AND ((IIf(IsNull([Forms]![F0601 レポート印刷]![Combo0]),9999,[社員ID]))=[Forms]![F0601 レポート印刷]![combo0] Or (IIf(IsNull([Forms]![F0601 レポート印刷]![Combo0]),9999,[社員ID]))=9999)) GROUP BY [Q0303 売上月保険種類集計].売上月, [Q0303 売上月保険種類集計].氏名, [Q0303 売上月保険種類集計].社員ID, [Q0303 売上月保険種類集計].社員ID, [T0501 支払い手数料変更履歴].歩合給率 PIVOT [T0201 保険種類].保険種類 In ("一般損害","日本興亜","強制賠償","セゾン"); と ありません

  • kkkkkm
  • ベストアンサー率66% (1733/2603)
回答No.1

下にある抽出条件のところで社員IDを指定しているところがあるのではないでしょうか。その場合どちらの社員IDなのか指定する必要があります。 【Access】エラー: 指定されたフィールド'[XYZ]’がSQLステートメントのFROM句にある複数のテーブルを参照しました https://buralog.jp/access-error/

関連するQ&A

専門家に質問してみよう