引用:
操作用accdbのデータシートフォームにデータ保管用accdbにあるテーブルを表示させたいです。
[データ保管用accdb]にあるテーブルを参照するリンクテーブルを
[操作用accdb]に設けた上、そのリンクテーブルをレコードソースとする
フォームを作成された方が最も手っ取り早いと思いますが。
(コードを書くまでもない)
(フォームモジュール)
---------------------------------------------------------------
Option Compare Database
Option Explicit
Private adoCn As ADODB.Connection
Private adoRs As ADODB.Recordset
Private Sub Form_Open(Cancel As Integer)
On Error GoTo Err_Form_Open
Me.Painting = False
Dim strSourceFilePath As String
strSourceFilePath = "C:\FolderName\FileName.accdb"
Set adoCn = New ADODB.Connection
With adoCn
.CursorLocation = adUseClient
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & strSourceFilePath
.Open
End With
Dim strSQL As String
strSQL = "SELECT * FROM [テーブル名]"
Set adoRs = New ADODB.Recordset
With adoRs
Set .ActiveConnection = adoCn
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Source = strSQL
.Open
End With
Set Me.Recordset = adoRs
Exit_Form_Open:
Me.Painting = True
Exit Sub
Err_Form_Open:
Dim strTitle As String
Dim strMsg As String
strTitle = "実行時エラー(" & Me.Name & ".Form_Open)"
strMsg = Err.Number & ": " & Err.Description
Debug.Print strTitle & vbCrLf & strMsg
MsgBox strMsg, vbCritical, strTitle
Call ReleaseObjects
Cancel = True
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call ReleaseObjects
End Sub
Private Sub ReleaseObjects()
On Error Resume Next
If Not adoRs Is Nothing Then
If adoRs.State = adStateOpen Then
adoRs.Close
End If
Set adoRs = Nothing
End If
If Not adoCn Is Nothing Then
If adoCn.State = adStateOpen Then
adoCn.Close
End If
Set adoCn = Nothing
End If
End Sub
---------------------------------------------------------------
ADODB.Recordset オブジェクトとフォームを連結させたいなら
大体こんな感じで。
これとは別に、各コントロールのコントロールソースの設定も
必要です。