<Access DAO Recordset = Me.RecordsetClone>
どうも、三流プログラマーのKen3です。 今回は、 Access97で、フォームのレコードセット複製を使って、遊んでみたいと思います。 たいした解説、回答内容じゃないのですが。/* * 1.今回のキッカケ */
VBA系の掲示板 http://www.ken3.org/cgi-bin/bbs/vba/wforum.cgi で、下記の質問をもらいました。 ---- >>Access97だと、レコードセットを直接、 >>フォームの元に出来ないので(出来ないと思います) > >やはり、駄目でしたか。 >どうしてもAccess97の環境で動かす必要があるのですが、対応していないので >あれば仕方がないです。 > >>何らかの事情があって、 >>Me.RecordSourceにセットしていないとは思いますが。 > >このような仕組みを考えたのは、元になるクエリーが重くて、せっかく開いたク >エリーの結果をExcelの作成にそのまま使いたかったからです。 >今動かしているのは、フォーム上にExcelのボタンがあり、そこからExcelに吐き >出すために再度同じクエリーを動かしています。 >Accessのフォーム用とExcelのシート用と、同じ結果を出すために一つのクエリ >ーを二回動かしているイメージです。 >そこでレコードセットにすることで、一回のクエリーの結果で二つのフォーム >とシートに出力できないものかと考えました。 >もっとスマートな方法がありそうなのですが、知識がなくて先に進めません。 >もし何らかのヒントでもあればアドバイスしていただければ助かります ---- やりたいことは、重たいクエリーを2回走らせたくないかぁ。/* * 2.調べごと、下準備 */
フォームに表示しているデータを取れないかなぁ・・・と探すと。 .RecordsetCloneなんてのが見つかる。 ヘルプを見ると、 >フォームの "RecordSource/レコードソース" プロパティに設定されている >テーブルまたはクエリの Recordset オブジェクトを参照します。 となっています。 下記、Access97でテストした結果。
Private Sub コマンド8_Click()
Dim rs As Recordset 'フォームのレコードセットのクローンをもらう
Set rs = Me.RecordsetClone 'レコードセットのクローンを代入
MsgBox rs.RecordCount
End Sub |
Private Sub コマンド40_Click()
'Access2000の場合、DAOの参照設定を入れて使用する
Dim rs As DAO.Recordset 'フォームのレコードセットのクローンをもらう
Set rs = Me.RecordsetClone 'レコードセットのクローンを代入
MsgBox rs.RecordCount
End Sub |
Private Sub コマンド9_Click()
On Error GoTo Err_コマンド9_Click
Dim oApp As Object
Dim y As Integer
Set oApp = CreateObject("Excel.Application")
oApp.Visible = True
'Only XL 97 supports UserControl Property
oApp.UserControl = True
'ブックを作成
oApp.Workbooks.Add '新規ワークブックの追加
'フォームのレコードセットを代入する
Dim rs As Recordset 'フォームのレコードセットのクローンをもらう
Set rs = Me.RecordsetClone 'レコードセットのクローンを代入
rs.MoveFirst '先頭行へ移動
y = 1
While rs.EOF = False
'フィールドを転記
oApp.Cells(y, "A") = rs![ID]
oApp.Cells(y, "B") = rs![F_TITLE]
oApp.Cells(y, "C") = rs![F_MEMO]
'次のレコードへ移動
rs.MoveNext 'レコードセット移動
y = y + 1 'セット位置を移動
Wend
'クローンを破棄する
Set rs = Nothing
Exit_コマンド9_Click:
Exit Sub
Err_コマンド9_Click:
MsgBox Err.Description
Resume Exit_コマンド9_Click
End Sub |
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
|
気になったジャンル↓を選択してください。 人気記事(来場者が多いTOP3): Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など 開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う] 仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力] ※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。 |
Blogとリンク:[三流君の作業日記]/
[VBAやASPのサンプルコード]/
広告-[通販人気商品の足跡]