- - PR -
複数テーブルの更新について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-06-03 12:13
はじめまして。
現在、ある管理システムを作成しているのですが更新の部分で煮詰まっています。 初歩的な質問だと思いますがどなたかご教授頂ければと思い書き込みました。 =================================== 開発環境 Windows2000 or XP VB.NET Oracle8i =================================== 作業手順としては 1.DBサーバーにある複数のテーブルを内部結合させる 2.OleDbDataAdapterを使用し、DataSetに読み込む 3.DataGridにDataSetを表示 という感じです。 現状でデータを表示・検索することは出来たのですが DataGridのセルに直接、値を書き込んでデータベースを更新することが出来ません。 単独のテーブルであれば *以下コード* Private Sub BTN_SAVE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTN_SAVE.Click UpdateDatabase() End Sub Private Sub UpdateDataBase() If Not DataSet.HasChanges() Then Return If MsgBox("データベースを修正しますか?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then OleDbDataAdapter1.Update(DataSet) End If End Sub *ここまで* のように出来たのですが、複数のテーブルだと・・・ いくつか自分でも検討してみたのですが思うように進まず作業に遅れが出ています。 周りにVB.NETに詳しい人がいないのでどなたか解る方がいらっしゃいましたら よろしくお願いします。 | ||||
|
投稿日時: 2004-06-03 12:31
思いつき:
UpdateCommandを、セミコロンで2つのupdate文にしてみたら?? 確実: 更新可能なビューを作り、ビューから持ってきて、ビューを更新する。 | ||||
|
投稿日時: 2004-06-03 12:34
さらに思いつき: UpdateCommandを、ストアドの呼出にする、ってのは出来ないんでしょうか? | ||||
|
投稿日時: 2004-06-03 13:20
Jittaさん、きくちゃんさん お返事ありがとうございます。
更新可能なビューを作り、ビューから持ってきて更新するとのことで 早速ビューを作成したのですが主キーが見つからないというエラーが表示され UpdateCommandが自動生成されませんでした。 ビューの作成は CREATE VIEW ビュー名 AS SELECT 〜 FROM 複数テーブル(5つ) WHERE 内部結合条件 という型で行いました。 ビューの中にはグループ関数、GROUP BY句、DISTINCTキーワード ROWNUM擬似列、式によって定義された列のような更新の実行を妨げるようなものは 入っていないのですが・・・ ビュー作成の方法が間違っているのでしょうか? | ||||
|
投稿日時: 2004-06-04 08:16
いや、メッセージの通り「主キー」がないからです。ビューなので、「主キー」がありません。自動生成ではなく、自分で組み立ててください。 そういえば、自動生成に関する質問を散見するが、自動生成を利用する方が多いのかな?私は「自動」を信用していないので、自力でやるんだけど。 [ メッセージ編集済み 編集者: Jitta 編集日時 2004-06-04 08:18 ] | ||||
|
投稿日時: 2004-06-07 10:00
Jittaさん、お返事ありがとうございます。 自動生成ではなく、自分で組み立てるというのはSQLのUPDATE文を自分で考えて コマンドテキストに入れてやるということでよろしいのでしょうか? (実際それがわからなくて困っているというのもありますが・・・) ちなみに私も「自動」は信用していないのですが、プログラムをはじめて数ヶ月な もので、どうしても「自動」に頼ってしまうところがあります。 | ||||
|
投稿日時: 2004-06-07 11:15
そういうことです。 #自動でやると、変更したくないところも変更できるように組み立ててくれるから… |
1