- - PR -
ROWSTATEの変更
1|2|3|4
次のページへ»
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-10-12 14:27
お世話になります。
VB2005の環境です。 DataTable+DataAdapterでの更新で DataTableをコピーして別のテーブルに更新しようとしていますが 必ずINSERTにしたい為、ROWSTATEを全てADDの状態にしたいのですが 可能でしょうか?(ReadOnlyと出てきます) 無理ならと思いまして ImportRowを使い DataTable.ImportRow(Dataset.Tables("TBLNAME").Rows(0)) としましたが,行の状態もコピーされてしまいます。 不可能なのでしょうか? |
|
投稿日時: 2007-10-12 15:29
SQLの中でやっちゃうほうが早くないですか?
DataRowの中に所属するDataTableを持っているので、そいつをひっぺがす必要があります。関連するクラスのメンバを調べてみてください。 あとは、もうひとつのDataTableに、新しいDataRowを追加していく。 |
|
投稿日時: 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 できないのでしょうか? |
|
投稿日時: 2007-10-12 17:17
INSERT INTO b SELECT * FROM a
のような SQL じゃだめですか? (長いことさわってないので忘れた。) アダプターで取ったDataTable の別インスタンスを用意する。それぞれ ta, tb とする。 ta の全行をループ tb.NewRow 値をコピー tb に追加 じゃだめですか? |
|
投稿日時: 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は諦める結論だけ出したいものです。 |
|
投稿日時: 2007-10-13 00:09
TableAの更新前というのは、前回の更新の、更新後ではないでしょうか?
本当に取っておく必要がありますか? |
|
投稿日時: 2007-10-13 00:12
JSOK対応?
だとしたら、データベースにトリガを作って、そっちでやるほうがよくないですか? |
|
投稿日時: 2007-10-13 04:03
DataRowにはSetAddedっていうメソッドがありますよ。
私も一度はまったことがあります。 |
1|2|3|4
次のページへ»