• ベストアンサー

ADO.NETのOleDbAdapterに設定するSelect文

http://oshiete1.goo.ne.jp/kotaeru.php3?q=1345496に関連して・・・ テーブル名:項目名 部屋:科目、部屋 教科書:科目、値段 上記のようなテーブルがあり、以下のようなSelect文によりデータを データセットに取得したいのですが、 コンパイルは通り、実行するとFillメソッドでエラーになります。 try~catchをしてエラーの内容を見てみると「FROM句の構文エラー」と出ています。 Fillメソッドの2つめのパラメータにどちらのテーブル名を入れても、 同じエラーになります。 UNION句でつないだSelect文をAdapterに設定した場合、 2つ目のパラメータは一体なんなのでしょうか。 Fillメソッドのパラメータがおかしいのでなければ、 SELECT文のどこがおかしいでしょうか。 教えてください。よろしくお願いいたします。 ---------------------------------------------------------------- Dim oleCn As OleDb.OleDbConnection = New OleDb.OleDbConnection Dim dataSet = New DataSet oleCn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;"~ Dim oDataAdapter As New OleDb.OleDbDataAdapter("SELECT 科目 FROM 部屋" & _ "UNION SELECT 科目 FROM 教科書 WHERE (値段 > 1000)", oleCn) oDataAdapter.Fill(dataSet)

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

  • ベストアンサー
  • iiikkk
  • ベストアンサー率37% (92/247)
回答No.1

これをそのまま読むと下記のようなのですが? 部屋UNION SELECT "部屋"と"UNION"の間にスペースが必要です。

rufas
質問者

お礼

ありがとうございます。 盲点でした。ご指摘の通りでした。 これで問題なく出来たのですが、 Fillメソッドの第二パラメータに設定するものは、 どのようなものなのでしょうか、 今回の場合、「部屋」か「教科書」にした場合、どのような違いがあるのでしょうか。

その他の回答 (2)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.3

もう一個の方にも今、答えました。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1345496 #2さんが述べられているように、重複しないように、好きにマッピングするためのもので、意識はしなくていいです。 おそらく最初にあった質問から、「二つのテーブル」というのを強く意識しているのだと思うのですが、Accessだから、2テーブルからの取得はUnionでしか実現できないので、第二引数を利用する意味はあまり感じられません。

回答No.2

>Fillメソッドの第二パラメータに設定するものは、 どのようなものなのでしょうか、 DataAdapter内に作られるDataSetを識別する名前です。 通常は1つのテーブルからDataSetが作られるのでそのテーブル名がデフォルトになります。 しかし実在するテーブル名にする必要は無く、好きな名前を付けることができます。 例えば、「人名」テーブルからDataSetを作る場合、DataSetの使用目的に応じて myDataAdapter.Fill(myDataSet,"男子") とか myDataAdapter.Fill(myDataSet,"既婚者") とかできます。 ところで、ヘルプは見ない主義なのでしょうか? MSDNを見れば1分で見つかるのに。

rufas
質問者

お礼

ありがとうございます。 主義と言いますか・・・。 もちろん最初にヘルプを見ています。 でも知識が浅すぎて書いてあることが理解できないのと、ピンポイントで質問の答えが書いてあるところが見つからないのです。 それからサイトと過去の質問で調べて、 最終的に双方向のやり取りができるココで質問をしています。

関連するQ&A