- - PR -
DataGridの値の取得
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-06-07 14:02
DataSetを使用し、DataGridに表示をしており、そのDataGridの値が変更されたら
DBに反映するようなプログラムを考えています。 知りたいことは DataGrid内で値が変更されたCellはどこのCellなのか? 値が変更されたCell内の値を取得する方法は? の2点です。 DataGrid.Item()で指定をしてやれば値の取得は出来るのですが 変更されるCellが一定とは限らないので・・・ かれこれ1週間以上MSDNと格闘しているのですがよくわかりません。 知っている方がいらっしゃいましたらご教授ください。 開発環境 ============================== Win2000 or XP VB.NET Oracle8i ============================== | ||||
|
投稿日時: 2004-06-07 15:00
DataSetと連結しているんですよね?だったら、DataGridのどこかを知る必要はありません。DataSetに反映されています。
DataSet、というか、DataRowにはRowStateというプロパティがあって、これを見ることでどの行が変更されたのか、知ることができます。また、DataAdapterクラスのUpdateメソッドを使うと、自動的にDataRow.RowStateの値によって、何もしない、削除する、挿入する、更新する、処理が行われます。 | ||||
|
投稿日時: 2004-06-07 15:16
Jittaさん早速のお返事ありがとうございます。
前回も複数テーブル更新の件でお世話になりました。
はい、連結しています。 ですのでOleDbDataAdapter.Update(DataSet)といった形で更新をかけてみたのですが 複数テーブルを結合したビューのためか更新がうまくいきません。 その辺をご教授頂けると(もしくは参考となるような部分)非常に助かります。 自分でも前回の件を含め検索等をしているのですが、探し方がよくないのか いまいち「これだっ」と思うものが見つからず、作業予定も遅れる一方です・・・ 質問ばかりで申し訳ありませんがよろしくお願いします。 | ||||
|
投稿日時: 2004-06-07 17:41
OleDbDataAdapter.Update(DataSet, TableName As String)か、OleDbDataAdapter.Update(DataTable)を使ってください。DataSetを引数に取るのは、確かに、うまく動作しませんでした。 | ||||
|
投稿日時: 2004-06-08 11:18
Jittaさん、お返事ありがとうございます。
一度その方法で試してみたいと思います。 | ||||
|
投稿日時: 2004-06-08 16:09
上記のように実行してみたのですが以下のようなメッセージが出て更新できませんでした。
エラーメッセージ---------------------------------------- ORA-01776: 結合ビューを介して複数の基本表を変更できません ------------------------------------------------------- あるHPで 1:INSERT INTO テーブル名 2:SERECT * FROM テーブル名 3:WHERE 1=2; というSQL文を発行し、エラーが出る場合は更新できないといったことが 書いてあったのですが・・・ やはり複合ビューの更新は不可能なのでしょうか? | ||||
|
投稿日時: 2004-06-08 17:56
『J06261-02 Oracle9i SQLリファレンス』は、お手元にありますか?なければOTN Japanからダウンロードしてください。ダウンロードには、費用はかかりませんが、登録が必要です。 → Oracle Technology Network > ドキュメント > Oracle9i Database これのP16-47に、更新可能なビューについて説明があります。これを読んで、更新可能なビューを作成してください。 #あれ?どこかでそう書いたよね? これに該当するビューを作成できない場合、一時表とPL/SQLによるストアドプロシージャで対応することになります。 あと、思いつきで書いた、セミコロンでUPDATE文を複数記述するは、ダメでしたか? | ||||
|
投稿日時: 2004-06-11 11:15
お返事遅くなり申し訳ありません。
すいませんそうでした・・・ INSTEAD OF トリガーを作成して、いざ実行と思ったら権限不足(ORA-01031)で 作成することができず、権限の付与をお願いしたのですが、それ以外の方法で 作るよう指示があり振り出しに戻ってしまいました。 で考えたのですが 1.複数テーブルに対し、各々アダプターを使用してデータを取得 2.それらのデータを一つのデータセットに格納 3.そのデータセットをグリッドに表示 とすれば更新も問題ないのではと考えたのですが アイデアとして浮かんだだけで実装可能かどうかもよく解りません。 こういったことは可能なのでしょうか? また出来るのであればどういった形で行えばよいのでしょうか? (DataTableとかTableMappingとかを使用するのかと思ったのですが・・・) |
1