- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C# OleDb SQL JOIN すると例外)
C# OleDb SQL JOIN でのエラーについての質問
このQ&Aのポイント
- C#のOleDbを使用してSQLのJOINを実行するとエラーが発生します。
- 具体的には、テーブルAとテーブルBをJOINしようとすると、列名でアクセスできず例外が発生します。
- エラーコード80070057が表示されるため、正しい方法でアクセスできていないのではないかと疑っています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>この SQL では、結果を項目名で取得しようとすると、 >A,B両方のテーブルにある値でないとだめなのでしょうか。 実際にこのSQLコマンドに対してAccessが何を返すのかを、Accessのクエリーを作って試してみてはどうでしょう? >ちなみに、dtRow[0] のように添え字でアクセスすると、取得できるようです。 番号でアクセスした場合はフィールド名に関係なく、Accessが返したフィールドにアクセスできます。
その他の回答 (1)
- Hayashi_Trek
- ベストアンサー率44% (366/818)
回答No.1
複数のテーブルから取得しているので SELECT されたフィールド名は 「A.TagNo」「B.TagNo」「A.~」「B.~」のようになっています。 「TagNo」ではどのフィールドかを決定できません。
質問者
お礼
ありがとうございます。 試してみましたところ、dtRow["A.TagNo"] として TagNo は取得できました。 ところが、TagID は dtRow["A.TagID"] としても結果が変わりません。 同じ例外が発生します。 この SQL では、結果を項目名で取得しようとすると、 A,B両方のテーブルにある値でないとだめなのでしょうか。 ちなみに、dtRow[0] のように添え字でアクセスすると、取得できるようです。
お礼
お礼が遅くなりました。 あれからいろいろと試行錯誤をしたところ、できました。 Accessのクエリーも試してみました。 すると、クエリーではきちんと結果が返ってくるものの、 やはりプログラムでは動作しませんでした。 結果として dtRow["A.TagID"] ではだめで、やはり dtRow["TagID"] でした。 クセなのでしょうか。 こういうもの、と解釈しています。 アドバイスいただき、どうもありがとうございました。