SQL Server 2008 のリンク テーブルで Access 2010 を使用しています。レコードセットを使用して入力するフォームがあり、このフォームのテキスト ボックスのコントロール ソースはレコードセットのフィールドに設定されています。フォーム上の 16 のレコードすべてをナビゲートでき、フォームが正しく読み込まれますが、[メモ] テキスト ボックスを編集できません。編集可能である必要があります。テキストボックスには Enabled=True と Locked=False があります。フォームの AllowEdits プロパティが true に設定されています。クエリ内のすべてのテーブルには主キーがあります。それで、それは私のクエリですか-それには右結合と内部結合があるので? 問題は、テキストボックスに入力できないことです。
ちょっとした背景として、このフォームのレコードソースとしてクエリを使用しようとしましたが、[保存] ボタン イベントによって行われた更新と挿入に加えて、Access の自動保存機能が不完全なレコードを結果テーブルに挿入することがわかりました。これを回避する唯一の方法が、ナビゲートするたびに変更を保存するかどうかをユーザーに尋ねることである場合、それはエンド ユーザーにとって非常にイライラします。そのため、VBA を使用して ADO レコードセットを使用して入力するバインドされていないフォームを使用する必要がありました。
ちなみに、DocID 列と DocumentType 列は編集できますが、クエリのフィールドは変更できません (QCNote)
これが私の Form_Open イベントのコードです。また、適用できないカテゴリの [送信] ボタンを無効にする Form_Current イベントもあります。
Private Sub Form_Open(Cancel As Integer)
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = CurrentProject.AccessConnection
Set rs = New ADODB.Recordset
With rs
Set .ActiveConnection = cn
DocID = [Forms]![QCDocAttributes]![DocID]
DocumentType = [Forms]![QCDocAttributes]![Document Type]
strSQL = "SELECT " & DocID & " AS DocID,'" & DocumentType & "' AS DocumentType, QC_QCDecisionPoint.Description, QC_QCDecisionPoint.QCDecisionPointID , QC_QCResultDecisionPoint.QCNote FROM QC_QCResultDecisionPoint RIGHT JOIN ((QC_QCAttribute INNER JOIN QC_QCAttributeDecisionPointAsc ON QC_QCAttribute.QCAttributeID = QC_QCAttributeDecisionPointAsc.QCAttributeID) INNER JOIN QC_QCDecisionPoint ON QC_QCAttributeDecisionPointAsc.QCDecisionPointID = QC_QCDecisionPoint.QCDecisionPointID) ON QC_QCResultDecisionPoint.QCDecisionPointID = QC_QCDecisionPoint.QCDecisionPointID WHERE (((QC_QCAttribute.Description)= '" & [Forms]![QCDocAttributes]![AttributesDropdown] & "' ));"
.Source = strSQL
.LockType = adLockOptimistic
.CursorType = adOpenKeyset
.Open
End With
Set Me.Recordset = rs
Set rs = Nothing
Set cn = Nothing
End Sub