- PR -

DataSetについて

1
投稿者投稿内容
ジェミニ
常連さん
会議室デビュー日: 2003/08/26
投稿数: 33
投稿日時: 2003-11-17 15:44
こんにちわ。
いつも参考にさせて頂いております。
今回、下記の事で困っており何か情報を頂ければと思い書込みいたしました。

現在ASP.NETとACCESS2000のDBで開発を行っているのですが
あるFormでOleDataAdapterを使いデータを読込もうとしているのですが、なかなか
うまくいってくれません。

クエリビルダを使い3つのTBLでリレーションをはろうとしているのですが
下記のエラーが出てDataSetが作成できません。

TBL-A     TBL-B   TBL-C
| |___________|      |
|____________________|

クエリビルダで

SELECT * From TBL-A INNER JOIN TBL-B ON
TBL-B.Koumoku1 = TBL-A.Koumoku1
INNER JOIN TBL-C ON
TBL-C.Koumoku2 = TBL-A.Koumoku2

としています。

普通にOKとし、DataSetを生成しようとすると

OleDbDataAdapter1のスキーマの取得に失敗しました。
クエリ式 TBL-B.Koumoku1 = TBL-A.Koumoku1 INNER JOIN TBL-C ON
TBL-C.Koumoku2 = TBL-A.Koumoku2 の構文エラーです。
演算子がありません。

となってしまいます。
別々にクエリビルダに書くとエラーにはならないのですがDataGridで
どうしてもリレーションをとった値が必要なので困っております。

まさかとは思うのですが、クエリビルダでは3つのリレーションはとれないのでしょうか?
その辺りの情報、どなたかご存知ないでしょうか?

よろしくお願いいたします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-11-17 16:02
 クエリビルダのオプションで、INSERT, UPDATE, DELETE文の生成をOFFにするとどうなりますか?

 デフォルトではこれらも自動生成するようになっています。ところが、複数テーブルからの取得からINSERT文他を生成するのはサポート外になっています。そこのところが関係していると思うのですが。
ジェミニ
常連さん
会議室デビュー日: 2003/08/26
投稿数: 33
投稿日時: 2003-11-17 16:21
Jittaさんいつも、いつもありがとうございます。

一応オプションでINSERT,UPDATE,DALETEの生成をOFFにしてやってみましたが
結果はやはり同じエラーが出てダメでした。

もう一度見直してみます。
ジェミニ
常連さん
会議室デビュー日: 2003/08/26
投稿数: 33
投稿日時: 2003-11-17 17:29
自己スレです。
うまくいったのでご報告まで。

なんと括弧をつけないとダメだったようです。

下に変更したSQL文をのせておきます。

SELECT * From (TBL-A INNER JOIN TBL-B ON TBL-B.Koumoku1 = TBL-A.Koumoku1)
INNER JOIN TBL-C ON TBL-C.Koumoku2 = TBL-A.Koumoku2

ただし、クエリビルダで括弧を追加しても勝手に消えてしまいます。
僕はソースに直接括弧を追加しました。

うーん、不思議だ。
1

スキルアップ/キャリアアップ(JOB@IT)