• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C# OleDb SQL JOIN すると例外)

C# OleDb SQL JOIN でのエラーについての質問

このQ&Aのポイント
  • C#のOleDbを使用してSQLのJOINを実行するとエラーが発生します。
  • 具体的には、テーブルAとテーブルBをJOINしようとすると、列名でアクセスできず例外が発生します。
  • エラーコード80070057が表示されるため、正しい方法でアクセスできていないのではないかと疑っています。

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

  • ベストアンサー
回答No.2

>この SQL では、結果を項目名で取得しようとすると、 >A,B両方のテーブルにある値でないとだめなのでしょうか。 実際にこのSQLコマンドに対してAccessが何を返すのかを、Accessのクエリーを作って試してみてはどうでしょう? >ちなみに、dtRow[0] のように添え字でアクセスすると、取得できるようです。 番号でアクセスした場合はフィールド名に関係なく、Accessが返したフィールドにアクセスできます。

ogu-ne
質問者

お礼

お礼が遅くなりました。 あれからいろいろと試行錯誤をしたところ、できました。 Accessのクエリーも試してみました。 すると、クエリーではきちんと結果が返ってくるものの、 やはりプログラムでは動作しませんでした。 結果として dtRow["A.TagID"] ではだめで、やはり dtRow["TagID"] でした。 クセなのでしょうか。 こういうもの、と解釈しています。 アドバイスいただき、どうもありがとうございました。

その他の回答 (1)

回答No.1

複数のテーブルから取得しているので SELECT されたフィールド名は 「A.TagNo」「B.TagNo」「A.~」「B.~」のようになっています。 「TagNo」ではどのフィールドかを決定できません。

ogu-ne
質問者

お礼

ありがとうございます。 試してみましたところ、dtRow["A.TagNo"] として TagNo は取得できました。 ところが、TagID は dtRow["A.TagID"] としても結果が変わりません。 同じ例外が発生します。 この SQL では、結果を項目名で取得しようとすると、 A,B両方のテーブルにある値でないとだめなのでしょうか。 ちなみに、dtRow[0] のように添え字でアクセスすると、取得できるようです。

関連するQ&A