- - PR -
クエリしたデータをDataGridで更新する方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-02-08 15:32
環境です。
VB.NET2003 Windowsアプリ OLE DB プロバイダ: Jet 4.0 OLE DB Provider データベース: Access2000 お世話になります。 DataGridを使ってクエリを更新出来るようにする方法が分かりません。 レコード1 レコード2 商品No 名称 商品No 購入日 001 トマト 003 1/15 002 にんじん 001 1/20 003 レタス 002 1/30 004 きゅうり 001 2/1 VB.netの「データアダプタ構成ウィザード」を使って クエリ ビルダでテーブルを追加・関連づけて DataGrid上で下記のように表示させます。 商品名称 購入日 レタス 1/15 トマト 1/20 にんじん 1/30 トマト 2/1 DataGrid上で購入日を更新したいのですが、更新がうまく行きません。 ウィザードの過程の際に UPDATEステートメントは生成されました。 !元のクエリには、複数のテーブルの列を含む、SELECT一覧が指定されています。この種類のクエリに対しては、ステートメントは自動生成されません。 と表示されて、これが原因だと考えています。 自分で解決できず、お力を借りたく投稿させて頂きました。 参考書籍やサイト、ヒントをいただければ幸いかと思います。 よろしくお願い致します。 [ メッセージ編集済み 編集者: たにくん 編集日時 2005-02-08 15:36 ] |
|
投稿日時: 2005-02-08 16:14
こんにちは。
自動生成出来なかったデータアダプタの UpdateCommandプロパティを自分で記述すればいいと思います。 |
|
投稿日時: 2005-02-08 22:02
とっても重要なことです。用語は、広く通用するものを使いましょう。
誤:レコード1 正:テーブル1 誤:クエリを更新できるように 正:データを更新できるように それで、問題の更新がうまくいかない理由ですが、メッセージのとおりです。 『複数のテーブルの列を含む、SELECT一覧が指定されています。この種類のクエリに対しては、ステートメントは自動生成されません。』 自動生成できるのは、単一テーブルからの引用のみです。このケースでは、テーブル1(商品Noと名称)とテーブル2(商品Noと購入日)の2つのテーブルからSELCTしているため、自動生成ではどの列がどのテーブルのどの列に対応するかがわからないのです。 ですから、自分で構成しましょう。 その他、自動生成には頼るべきではありません。効率の悪いSQL文が生成されます。 UPDATE テーブル2 SET 購入日=? WHERE 商品No = (SELECT 商品No FROM テーブル1 WHERE 名称 = ?) パラメータの設定も必要です。 _________________ |
|
投稿日時: 2005-02-09 13:15
返事が遅れて申し訳ありません。
ありがとうございます。 用語の使い方には以後注意します。 どうしてもソフトに頼ろうとするところがあるみたいで。。 自分で生成する方法しかないようなので、勉強して出直したいと思います。 まずはSQLから勉強を。。 とても助かりました。 Milan様、Jitta様ありがとうございました。 |
1