- PR -

テーブルを丸ごとコピー

1
投稿者投稿内容
やま
会議室デビュー日: 2002/04/02
投稿数: 10
投稿日時: 2005-08-12 15:00
VB.NET2003を使用しています。
汎用DataAdapter(OleDbDataAdapter)を使い、テーブル1(4件ほど)からテーブル2(空)へ
丸ごとデータをコピーをしようとしています。
下記のようにやりましたが、エラーにもならずデータは追加されなく終わってます。
 1.OleDbConnection  入力側接続
 2.OleDbDataAdapter  入力側DataAdapter
 3.Fill        入力側DataTable
 4.OleDbConnection  出力側接続
 5.OleDbDataAdapter  出力側DataAdapter
 6.Fill        出力側DataTable
 7.出力側DataAdapter.Update(入力側DataTable)
NewRow〜Addのやり方では問題はないのですが.......
Loopをさせないで1回で追加できる方法はないのでしょうか?

よろしくお願いします。
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2005-08-12 15:08
INSERT INTO  コピー先テーブル SELECT * FROM 元テーブル

oracleならこれでコピーできますが
やま
会議室デビュー日: 2002/04/02
投稿数: 10
投稿日時: 2005-08-12 15:32
七味唐辛子さん、ありがとうございます。

このやり方は知ってますが使えないです。
入力と出力は別マシンとも考慮してるので.....
できればDataAdapterで......
YKC
会議室デビュー日: 2005/08/10
投稿数: 4
投稿日時: 2005-08-12 15:54
引用:

やまさんの書き込み (2005-08-12 15:32) より:

入力と出力は別マシンとも考慮してるので.....
できればDataAdapterで......


別マシンでしたら、
引用:

INSERT INTO  コピー先テーブル SELECT * FROM 元テーブル


の元テーブルを、DB link で参照するようにすれば、上手くいくと思います。
やま
会議室デビュー日: 2002/04/02
投稿数: 10
投稿日時: 2005-08-12 16:05
YKCさん、ありがとうございます。

Insert〜Selectは、仕様により使えない事になってます。(リンクなどで同一マシン上と思わせるのもダメ)
なのでSQL文は使わない方法で行なってます。(DataAdapter内では自動生成されてるとは思います)
やっぱ難しいんですかね。
trapemiya
大ベテラン
会議室デビュー日: 2005/07/30
投稿数: 102
投稿日時: 2005-08-12 16:41
DataSet2.Tables.Add("DataTable1")
みたいな感じでいけませんでしょうか?(未確認です)

コピー元とコピー先テーブルのスキーマが違うとアウトですが。
水谷
会議室デビュー日: 2004/05/07
投稿数: 17
お住まい・勤務地: 福島県
投稿日時: 2005-08-12 17:32
入力側 DataTable の DataRow の RowState はどうなっているでしょうか?
Update メソッドは RowState の値によって INSERT/UPDATE/DELETE を実行する/しないはずです。

あと、出力側 DataAdapter の InsertCommand 等が適切に設定されてるかどうかも気になりますが…。
1

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