- PR -

複数テーブルの更新について

1
投稿者投稿内容
TOKI
会議室デビュー日: 2004/06/03
投稿数: 8
投稿日時: 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に詳しい人がいないのでどなたか解る方がいらっしゃいましたら
よろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-06-03 12:31
思いつき:
UpdateCommandを、セミコロンで2つのupdate文にしてみたら??

確実:
更新可能なビューを作り、ビューから持ってきて、ビューを更新する。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-06-03 12:34
引用:

Jittaさんの書き込み (2004-06-03 12:31) より:
思いつき:
UpdateCommandを、セミコロンで2つのupdate文にしてみたら??


さらに思いつき:
UpdateCommandを、ストアドの呼出にする、ってのは出来ないんでしょうか?
TOKI
会議室デビュー日: 2004/06/03
投稿数: 8
投稿日時: 2004-06-03 13:20
Jittaさん、きくちゃんさん お返事ありがとうございます。

更新可能なビューを作り、ビューから持ってきて更新するとのことで
早速ビューを作成したのですが主キーが見つからないというエラーが表示され
UpdateCommandが自動生成されませんでした。

ビューの作成は

CREATE VIEW ビュー名 AS SELECT 〜 FROM 複数テーブル(5つ)
WHERE 内部結合条件

という型で行いました。
ビューの中にはグループ関数、GROUP BY句、DISTINCTキーワード
ROWNUM擬似列、式によって定義された列のような更新の実行を妨げるようなものは
入っていないのですが・・・

ビュー作成の方法が間違っているのでしょうか?

Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-06-04 08:16
引用:

TOKIさんの書き込み (2004-06-03 13:20) より:

更新可能なビューを作り、ビューから持ってきて更新するとのことで
早速ビューを作成したのですが主キーが見つからないというエラーが表示され
UpdateCommandが自動生成されませんでした。


 いや、メッセージの通り「主キー」がないからです。ビューなので、「主キー」がありません。自動生成ではなく、自分で組み立ててください。


 そういえば、自動生成に関する質問を散見するが、自動生成を利用する方が多いのかな?私は「自動」を信用していないので、自力でやるんだけど。

[ メッセージ編集済み 編集者: Jitta 編集日時 2004-06-04 08:18 ]
TOKI
会議室デビュー日: 2004/06/03
投稿数: 8
投稿日時: 2004-06-07 10:00
引用:

Jittaさんの書き込み (2004-06-04 08:16) より:

 いや、メッセージの通り「主キー」がないからです。ビューなので、「主キー」がありません。自動生成ではなく、自分で組み立ててください。



Jittaさん、お返事ありがとうございます。

自動生成ではなく、自分で組み立てるというのはSQLのUPDATE文を自分で考えて
コマンドテキストに入れてやるということでよろしいのでしょうか?
(実際それがわからなくて困っているというのもありますが・・・)
ちなみに私も「自動」は信用していないのですが、プログラムをはじめて数ヶ月な
もので、どうしても「自動」に頼ってしまうところがあります。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-06-07 11:15
引用:

TOKIさんの書き込み (2004-06-07 10:00) より:

自動生成ではなく、自分で組み立てるというのはSQLのUPDATE文を自分で考えて
コマンドテキストに入れてやるということでよろしいのでしょうか?


 そういうことです。
#自動でやると、変更したくないところも変更できるように組み立ててくれるから…
1

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