- PR -

ROWSTATEの変更

投稿者投稿内容
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 2007-10-12 14:27
お世話になります。
VB2005の環境です。

DataTable+DataAdapterでの更新で
DataTableをコピーして別のテーブルに更新しようとしていますが
必ずINSERTにしたい為、ROWSTATEを全てADDの状態にしたいのですが
可能でしょうか?(ReadOnlyと出てきます)

無理ならと思いまして
ImportRowを使い
DataTable.ImportRow(Dataset.Tables("TBLNAME").Rows(0))
としましたが,行の状態もコピーされてしまいます。

不可能なのでしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-10-12 15:29
SQLの中でやっちゃうほうが早くないですか?

DataRowの中に所属するDataTableを持っているので、そいつをひっぺがす必要があります。関連するクラスのメンバを調べてみてください。
あとは、もうひとつのDataTableに、新しいDataRowを追加していく。
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 2007-10-12 16:09
ご返答ありがとうございます。
  
1 Insert,Update,Deleteコマンド全て INSERT INTOにする
 
2 DataAdapterを諦めて、DataTable をLOOPしてINSERT INTO TBL (XX,YY) VALUE DataTableの値
   のようなSQL文を実行する。 

 のようなことも考えてみました。

「 DataTableに、新しいDataRowを追加していく。」
 となると、1つの項目ずつセットしていくしかないですよね。

 このテストをしていて
DA.InsertCommand.Transaction = tran
DA.UpdateCommand.Transaction = tran
DA.DeleteCommand.Transaction = tran
DA.Update(DataTable1)

DA.Update(DataTable2)

と実行してもデータが DA.Update(DataTable2)の分しか
追加されないのですが、追加されなくて当然なのでしょうか??

DA.Update(DataTable2)をコメントにすると  DA.Update(DataTable1)の分がINSERT されます。

 2つINSERT できないのでしょうか?
   
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-10-12 17:17
INSERT INTO b SELECT * FROM a
のような SQL じゃだめですか?
(長いことさわってないので忘れた。)

アダプターで取ったDataTable の別インスタンスを用意する。それぞれ ta, tb とする。
ta の全行をループ
tb.NewRow
値をコピー
tb に追加


じゃだめですか?
LANVIN
大ベテラン
会議室デビュー日: 2007/03/12
投稿数: 211
投稿日時: 2007-10-12 18:02
Jittaさん、resありがとうございます。

tb.NewRowして1項目ずつ値をコピーしtb に追加ということは
DataTable.Copyは諦めるということですよね。

INSERT INTO b SELECT * FROM a
ですが、テーブルaも更新し
その更新前と更新後の内容もbに追加したいのです。
となると、aテーブルのDataTableをLOOPし
INSERT文を実行した方が..

Copyは諦める結論だけ出したいものです。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-10-13 00:09
TableAの更新前というのは、前回の更新の、更新後ではないでしょうか?
本当に取っておく必要がありますか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-10-13 00:12
JSOK対応?

だとしたら、データベースにトリガを作って、そっちでやるほうがよくないですか?
ugaya
会議室デビュー日: 2006/08/03
投稿数: 18
投稿日時: 2007-10-13 04:03
DataRowにはSetAddedっていうメソッドがありますよ。
私も一度はまったことがあります。

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