フォームモジュール
Option Compare Database
Option Explicit

Const strDbAdd = "c:\db1.mdb" '外部MDBの場合
Const T_sample = "T_sample" 'テーブル名
Dim strSQL As String

'************************************************************************************
'フォームロード時のデータ読込み
'************************************************************************************
Private Sub Form_Load()

    strSQL = "select * from " & T_sample
    Call SelectData(strSQL)

End Sub

'************************************************************************************
'Select発行
'************************************************************************************
Private Sub SelectData(strSQL)

    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset

    cn.Open CurrentProject.Connection '内部MDBの場合
    'cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDbAdd '外部MDBの場合

    rs.CursorLocation = adUseClient
    rs.Open strSQL, cn, adOpenForwardOnly, adLockReadOnly

    Set Me.Recordset = rs.Clone '自フォーム
    'Set Me.サブフォーム名.Controls.Parent.Recordset = rs.Clone 'サブフォーム

    rs.Close: Set rs = Nothing
    cn.Close: Set cn = Nothing

End Sub
  • 参照設定 "Microsoft ActiveX Data Objects X.X Library"
  • Select発行を同フォームモジュール内の他処理で使いまわすために別Subとした
  • Select発行を標準モジュールに置くと処理が遅くなったのでフォームモジュールに含めた(大体15ms→40ms)
  • フォームビューからデザインビューに変更した時、マシン'<マシン名>' のユーザー 'Admin' がデータベースを開けない状態、またはロックできない状態にしています。のエラーが出力される。Connectionの書き方を変えることで回避可能。原因等→http://www.accessclub.jp/bbs6/0004/das705.html
ロック対策(内部MDBの場合)
Dim cn As ADODB.Connection 'NEWを削除
Set cn = CurrentProject.Connection '内部MDBの場合
ロック対策(外部MDBの場合)
Dim cn As New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDbAdd '外部MDBの場合

{
<pre class="brush: html;">

表題1

パラグラフ
引用
列1 列2 列3 列4
a b c d
a b c d
</pre>
}
最終更新:2013年07月19日 15:19