• 締切済み

ADOレコードセットのコピー

http://blog.moug.net/archives/51335290.htmlにレコードセット のコピーについて書かれているのですが、フィルターで絞りを かけた後のレコードセットを別のレコードセットに代入というのは できないものでしょうか?

みんなの回答

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.3

私はこのような作業が必要なときはSQLをADOのコネクションで実行させています。 CON.EXECUTE "INSERT INTO TABLE2 SELECT FROM TABLE1 WHERE FIELD1 = 'HOGE'" のような感じで。

  • tazukadan
  • ベストアンサー率68% (15/22)
回答No.2

WHERE句の後ろにそのフィルタの文字列を入れれば絞り込んだレコードセットになります。 ↓フォームモジュールの例 myRS.Open "SELECT * FROM 商品tbl WHERE " & Me.Filter , myCN 'レコードセットを開く フォームのモジュール以外の時は「Me.Filter」を「Forms!フォーム名.Filter」に変更すると取得できます。

wakaranai_kun
質問者

補足

いい例がありました。 http://www.geocities.jp/cbc_vbnet/ADO/append.html このような、Tableに基づかないレコードセットを他の レコードセットにフィルターをかけた後にコピーしたいのです。 例のようにループさせて代入すればいいのですが、 http://blog.moug.net/archives/51335290.html のようにSetで代入できないものかと思いました。

  • tazukadan
  • ベストアンサー率68% (15/22)
回答No.1

テーブル名のかわりに、条件を指定したクエリ名、または、SQLのSelect文を指定すれば、抽出されたレコードを対象にできます。 myRS.Open "商品tbl", myCN 'レコードセットを開く ↓ myRS.Open "クエリ名", myCN 'レコードセットを開く OR myRS.Open "SELECT * FROM 商品tbl WHERE コード = '0001'", myCN 'レコードセットを開く こんな感じで。

wakaranai_kun
質問者

補足

ありがとうございます。 その方法もわかりますが、今回はFilterをかけた 後のレコードセットをコピーする必要があるもので。

関連するQ&A

  • Access2000のADOのレコードセットに先頭一致SQLを指定できない

    お世話になっています。 さて、住所録があって、その住所の先頭と一致するレコードをSQLで抽出してその結果をレコードセットに代入したいのですが。 SQLは "SELECT 住所録.住所 FROM 住所録 WHERE 住所録.住所 Like '" & str住所検索 & "*';" というような感じです。(もうちょっといろいろあるけど) それで、 rst.Open strSQL, CurrentProject.Connection, adOpenStatic, adLockReadOnly, adCmdText rstはADOのレコードセットで、strSQLには上記のSQL文が代入されています。str住所検索には、検索したい住所の一部が代入されています。 これを実行すると、レコードセットにレコードが抽出されません。 WHERE句を 住所録.住所 = '" & str住所検索 & "';" と完全一致にすると抽出します。 しかし、全部の住所が一致するレコードを集めたいわけではないので、これでは困ります。 ちなみに、クエリーで実行するとちゃんと集まります。 なんとか、レコードセットにあいまい検索の抽出結果を代入できないでしょうか? ADOのレコードセットにはLike演算子は使えないのでしょうか? よろしくお願いいたします。

  • ADOでループすると1レコードずつ飛ばしてしまう

    アクセスなのですが Sub test() Set cn = CurrentProject.Connection rs.Open "テーブル", cn, adOpenKeyset, adLockOptimistic rs.Filter = "(店名 = '" & str店名 & "') And (URL = '未')" For j = 1 To rs.RecordCount rs("URL") = "http" rs.Update rs.MoveNext Next rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub このようにして、既存のレコードにフィルタをかけて該当のレコードの値を更新しているのですが rs.MoveNext をいれると、 1レコード目、3レコード目、5レコード目・・・と言う順番になってしまい、 最終的にrs.RecordCountの数を越したレコードを指定してしまい 実行時エラー 3021 「BOFとEOFのいずれかTRUEになっていか、または現のレコードが要求された操作には、現在のレコードが必要です。」 となってしまいます。 だからって rs.MoveNextをいれないと、rs.RecordCountに達するまで、 いつまでも同じレコードをループしてしまいます。 1レコードずつ順番にデータを掴む方法を教えてください。

  • VB.NET データセットとADOレコードセットについて。

    最近.NETの勉強を始めました。質問なのですが (1)参考書として買った本にはデータセットが基本の構文がずらりと載っているのですが、 (2)勉強用に貰ったVBデータはADOで基盤が作ってあり、データセットは1つも出てきていません。例えばデータグリッド等は無しです。 (1)と(2)は、今後プログラムを書くにあたり、どうとらえていけばよいんでしょうか? 大きいシステムの流れはVBデータでつかめますが、細かい、(例えば、コンボボックスの値をデータから抽出したい)等の事が分からなくてネットでも見つける事ができません。データグリッドも使いたいのですが。 参考書には載っていますが、全てデータセットを使ってあります。 データセットとADOレコードセットは共に書くことは不可なのですか? テーブルごと仮で持ってくる時、こっちはデータセットでこっちは違うとかだやはり困りますよね。 実際のお仕事の現場ではどのようにされていますか? 明確なADOの使い道(こんな時はADOだ。など)も簡単に教えていただけるとありがたいです。

  • Accessコンボボックスにレコードセット代入について質問です。

    Accessコンボボックスにレコードセット代入について質問です。 コンボボックスにレコードセットの値と代入したいと考えています。 Set Me![コンボボックス名].Recordset = rs で代入できたのですが、連結列をどうしても代入できません。 | ID | MachineName | | 1 | MachineA | | 2 | MachineB | | 3 | MachineC | の様なレコードセットをコンボボックスに代入したいです。 保存列はIDフィールドです。 どなたかご存じの方がおられましたら、アドバイスよろしくお願いいたします。 m(_ _)m

  • MS-ACCESSで、レコードセットを取得したい。

    MS-ACCESS2000での質問です。 VBAのコードで、任意のテーブルから、レコードセットを取得して、ADO.Recordset変数に代入したいのですが、どのような記述をすれば、出来ますでしょうか? 最終的にはそのレコードセットの各レコードに操作をしたいのです。 よろしくお願いします。

  • レコードセットとデータセットの違い

    こんにちは。Access VBAの本を読んでいたらデータはレコードセットで取得すると書いてあります。 ネットで.NETの記事を読んでいたらデータはデータセットで取得と書いてありました。 このレコードセット、データセットの違いは平たく言うとなんでしょうか? 私はAccess VBAが少しわかる程度のレベルです。

  • VB上でのレコードセットの扱いについて

    お世話になっています。 現在VB6+SQLSERVERで開発をしているんですが、SQLで取得したレコードセットオブジェクトの扱いについての質問です。 取得したレコードセットオブジェクトをループ文等で使う場合、一旦配列に代入して使うのと、そのままMoveNext文で使うのでは、速さでは違いはありますか?

  • レコードセット検索

    excel vbaでレコードセットの中身を検索して レコードセット内の別フィールドのデータを取得する方法がわかりません。やりたいことは、 |店舗名称|店番号|  渋谷店   01  池袋店   02  目黒店   03 というレコードセットがあって渋谷店を コンボボックスで選択したときに、店番号の"01"が 別のコンボボックスで表示されるようにしたいのですが うまくいきません。どなたか分かる方教えてください。 お願いします。

  • 【VBA】レコードセットからグラフを作成

    Excel2002とAccess2002を使っています。 (1)Accessから取得したレコードセットをデータソースにして  グラフを作成する事はできますでしょうか?  (シートにレコードセットを格納せずに) (2)上記が実現不可なら、レコードセットを配列に代入し、  その配列をデータソースにしてグラフを作成する事はできますでしょうか? レコードセットを一度シートに吐き出す事は考えていません。 (1)、(2)とも具体的なコードを書いて頂けると助かります。 よろしくお願いします。

  • 構造体からレコードセットへの代入

    下のような構造体があり、その値をレコードセットに代入したいと思います。 構造体内の変数名とレコードセットのフィールド名が同じなので名前を 利用して簡潔に書けないかと思うのですが、これは可能でしょうか? '構造体 Type Product  Price As Long  Name As String  Size As Single End Type '変数の宣言 Dim Car As Product 'レコードセットへの代入 With Product  RS("Price").Value = .Price  RS("Name").Value = .Name  RS("Size").Value = .Size End With