編集さらに調査した結果、一度に1つのレコードしか参照できないため、バインドされていないフォームで連続フォームを使用できないことがわかりました。質問を変更したことを考えると...
データを引き出して仲介者としてテーブルに入力するサンプルフォームがあります。
最初はフォームがバインドされておらず、2つのメインレコードセットへの接続を開きます。リストボックスのレコードセットをそれらの1つに等しく設定し、フォームのレコードセットをもう1つに等しく設定しました。
問題は、レコードを追加したり、既存のレコードを更新したりできないことです。フィールドにキー入力しようとしても、フィールドがロックされているかのようには何も起こりません(ロックされていない場合)。レコードセットの設定は、OpenKeysetとLockPessimisticです。
テーブルはリンクされていません。テーブルはこのプロジェクトとは別の外部アクセスデータベースからのものであり、そのままにしておく必要があります。データを取得するためにadodb接続を使用しています。プロジェクトからのデータの分離がこれを引き起こしている可能性がありますか?
フォームからのサンプルコード
Option Compare Database
Option Explicit
Private conn As CRobbers_Connections
Private exception As CError_Trapping
Private mClient_Translations As ADODB.Recordset
Private mUnmatched_Clients As ADODB.Recordset
Private mExcluded_Clients As ADODB.Recordset
//Construction
Private Sub Form_Open(Cancel As Integer)
Set conn = New CRobbers_Connections
Set exception = New CError_Trapping
Set mClient_Translations = New ADODB.Recordset
Set mUnmatched_Clients = New ADODB.Recordset
Set mExcluded_Clients = New ADODB.Recordset
mClient_Translations.Open "SELECT * FROM Client_Translation" _
, conn.RBRS_Conn, adOpenKeyset, adLockPessimistic
mUnmatched_Clients.Open "SELECT DISTINCT(a.Client) as Client" _
& " FROM Master_Projections a " _
& " WHERE Client NOT IN ( " _
& " SELECT DISTINCT ClientID " _
& " FROM Client_Translation);" _
, conn.RBRS_Conn, adOpenKeyset, adLockPessimistic
mExcluded_Clients.Open "SELECT * FROM Clients_Excluded" _
, conn.RBRS_Conn, adOpenKeyset, adLockPessimistic
End Sub
//Add new record to the client translations
Private Sub cmdAddNew_Click()
If lstUnconfirmed <> "" Then
AddRecord
End If
End Sub
Private Function AddRecord()
With mClient_Translations
.AddNew
.Fields("ClientID") = Me.lstUnconfirmed
.Fields("ClientAbbr") = Me.txtTmpShort
.Fields("ClientName") = Me.txtTmpLong
.Update
End With
UpdateRecords
End Function
Private Function UpdateRecords()
Me.lstUnconfirmed.Requery
End Function
//Load events (After construction)
Private Sub Form_Load()
Set lstUnconfirmed.Recordset = mUnmatched_Clients //Link recordset into listbox
Set Me.Recordset = mClient_Translations
End Sub
//Destruction method
Private Sub Form_Close()
Set conn = Nothing
Set exception = Nothing
Set lstUnconfirmed.Recordset = Nothing
Set Me.Recordset = Nothing
Set mUnmatched_Clients = Nothing
Set mExcluded_Clients = Nothing
Set mClient_Translations = Nothing
End Sub