ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

ADOデータベース!コミュのADOテンプレート

  • mixiチェック
  • このエントリーをはてなブックマークに追加
お決まりの文です。コピペして使ってください。

Sub ()

On Error GoTo Close_section

'変数の定義
Dim myCon As ADODB.Connection
Dim myRs As ADODB.Recordset
Dim constr As String
Dim ファイル名 As String
Dim テーブル名 As String

'接続の設定(ACCESSの場合)
ファイル名 = '(開きたいDBファイルの名前)
constr = "Provider = Microsoft.JET.OLEDB.4.0;" _
& "Data source= " & ファイル名

Set myCon = New ADODB.Connection
Set myRs = New ADODB.Recordset

With myCon
.ConnectionString = constr
.Open
End With

'テーブルを開く(ビューも可)
テーブル名 = '(開きたいテーブルの名前)
With myRs
   'ソートやカウントを使う時は.CursorLocation = adUseClient
.Open テーブル名, myCon
End With

'ここに本文を書く!

'切断処理
Close_section:
myRs.Close
Set myRs = Nothing
Set myCon = Nothing

End Sub

コメント(9)

(;´Д`)/先生!!Connection は Close しないのですか?あとRecordset のカーソルやロックの指定はしないのですか?

φ(..)ついでにカーソルについて調べたことをメモメモ代わりに。間違ってたら教えてください。
adOpenForwardOnly: 前方参照カーソル。進むしかできない。
 一度読むだけなら有利だが、何度も読み返すと何度も実表を参照するので不利。
adOpenDynamic: 動的カーソル。進んだり戻ったりブックマークをつけたり自由自在。
 実表を参照するので他人の変更も見逃さない。
adOpenKeyset: キーセットカーソル。結果の 行ID の部分だけメモリ上(や tempdb)にコピーする。
 行ID 以外の列は実表を見るので他人の変更はわかるが、追加した行はわからない。
adOpenStatic: 静的カーソル。結果の表をすべてメモリ上(や tempdb) にコピーする。
 常にコピーを見るので他人の変更や追加はわからない。
 実表を一切見ないのでカーソル処理をする場合に効率的。

 Keyset と Static は結果の一部または全部のコピーを保持するので、RecordCount で行数がわかる。
ForwardOnly は全部読んでみるまで何行あるかはわからない。
Dynamic はプロバイダの実装によるらしい。
>Sophiaさん
おっしゃる通りです。
myRs.close の下に
myCon.close を追加して下さい・・・

カーソルの種類ごとの振る舞いについては、知りませんでした。
レコードを変更するときにはDynamic、それ以外はデフォルトでやってました(Keysetだったと思います)。

ありがとうございます。

>メンソールさん
勉強になります。ありがたや。
(゚Д゚;)シラナンダ!!いつもMDBしか相手にしていないから…。こちらは一度なめるだけや、追加するだけの時は ForwardOnly で、何度もフィルタをかけたりループするときは Static で、Keyset と Dynamic はほとんど使わずにやっております。
 そもそも Keyset ってどういう使い方をすると(゚д゚ )ウマーいんでしょうね。件数だけ手っ取り早く知りたい時や、結果セットが巨大で Static にするには不安がある場合でしょうか。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

ADOデータベース! 更新情報

ADOデータベース!のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。