1・テーブルAの一部をレコードセットに取り込みます
2・テーブルAのデータを全てデリートします
3・テーブルB(フィールド名など構成は同じTEMPテーブル)のレコードを
テーブルAに挿入します
4・1で取り込んだレコードセットの内容をテーブルAに挿入します
ということをやりたいのですが
STRSQLコマンド = "SELECT * FROM テーブルA WHERE 項目 LIKE '*当月*'"
Set rs当月バックアップ = DBデータベース.OpenRecordset(STRSQLコマンド, dbOpenSnapshot)
DBデータベース.Execute ("DELETE FROM テーブルA")
DBデータベース.Execute ("INSERT INTO テーブルA SELECT * FROM テーブルB")
DBデータベース.Execute ("INSERT INTO テーブルA SELECT ???????????????")
?????の部分にレコードセットを指定したいのですが可能でしょうか?
可能ならばご教授願います・・・
テーブルAから削除する意味が分かりませんが、
DBデータベース.Execute ("INSERT INTO テーブルA SELECT * FROM テーブルB")
だけでいいんじゃないですか?
※ 上の訂正
削除するのに、条件が付いていましたね。
DBデータベース.Execute ("DELETE FROM テーブルA WHERE 項目 NOT LIKE '*当月*'")
DBデータベース.Execute ("INSERT INTO テーブルA SELECT * FROM テーブルB")
で良いのでは?
とろさんレスさんくす
確かにそれでできますね
ただメインとしてお聞きしたいのは
レコードセットオブジェクトを????の部分に指定できるかな?
ということなんです・・・
私の上記例の経緯はおかしいものがありますが・・・
その辺は無視ということで
変な質問ごめんなさい・・・
> レコードセットオブジェクトを????の部分に指定できるかな?
> ということなんです・・・
OLE DB Providerの多くは、そのような動作はサポートしていないようです。
ただし、OLE DB Providerの中には、文中に他のレコードセット名を
指定できるものが無いわけでもありません。
有名どころでは、データシェイププロバイダ(Provider=MSDataShape)がそれです。
データシェイプの場合は、Recordsetオブジェクトの
RS.Properties("Reshape Name").Value
が返す値を使って、それをレコードセットの別名として使うことで、
その名前を問い合わせ文の中に含める事ができます。
あるいは、(SQL文などの)問い合わせ文中に、他のレコードセットを
指定するという形ではなく、受信したデータをXMLのDOMDocumentや
ADOのStream等にパーシストしておき、それを使って、別テーブルへ
一括挿入できるような動作であれば、若干のプロバイダがサポートしているようです。
また、ADOではありませんが、Oracle Objects for OLEで使われるような、
バインド配列オブジェクトなどを使うことで、バッチ更新処理を
サポートしているようなミドルウェアもあります。
なるほどなるほど・・
ちゅことは生では難しいということですね
魔界の仮面弁士さん
とろさん
どうもありがとうございました
ツイート | ![]() |