フォームモジュール
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