<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 |
|
あとは、項目別にMSでお勉強かな? ◆ マイクロソフト サイトの歩き方 ◇ How-To インデックス ◇ FAQ インデックス ◇ スキルレベル別おすすめコンテンツ ◇ テクノロジ マップ ◇ テーマ別技術資料一覧 |
| ※種類が豊富で探し易いです。※在庫ありが48時間以内発送が急ぎで資料や書籍がほしい時、とても助かります。 お奨め本の目次を見るだけでも勉強になったり |