ここにアクセスするのは初めてで、すでにこの問題を解決するために多くの時間を費やしているので、ここで背景を説明します。
注:すでにこれを確認しました:ComboBoxではアイテムを選択できませんが、必要な回答は提供されませんでした。
フォームを介して顧客の詳細を入力および保存できるデータベースがあり、現在、次の関係を持つ3つのテーブルがあります。
顧客 -CustomerID(PK)-FirstName-LastName
プロセス -ProcessID(PK)-詳細-PartsUse-
Job -JobID(PK)-CustomerID(FK)-ProcessID(FK)-MachineDetail-
顧客はジョブと1-Mの関係を持っていますが、拡張すると(理由はわかりません)プロセスもジョブと1-Mの関係を持っています。したがって、ここでの目的は、顧客が多くのジョブを持つことができ、ジョブには1つのプロセスのみが必要であるということです(後でそれを修正する必要があります)。
これが、NewJobフォームでComboBoxをバインドするコードです。その目的は、フォームが開いたときにComboBoxに顧客のすべての名前を入力し、顧客が選択された後にのみユーザーがジョブの詳細を入力できるようにすることです。
Private Sub Form_Open(Cancel As Integer)
Dim db As Database
Dim recordSet As DAO.recordSet
Dim sql As String
sql = "SELECT [Customer].[CustomerID], [Customer].[FirstName] & [Customer].[LastName] FROM Customer ORDER BY [CustomerID];"
'clear all fields
ClearJobFormFields
'disable all controls until a customer is selected
DisableJobFormControls
With cmbCustomer
.ControlSource = "Customer"
.RowSource = sql
.ColumnCount = 2
.ColumnWidths = "1cm; 3cm"
.BoundColumn = 0
End With
cmbCustomer.ControlSource = "Customer"
cmbCustomer.RowSource = sql
End Sub
注意点として、各フォームは独立しています。私はサブフォームを使用していません。これがオンになっているフォーム(NewJob)はAllowEdit
yesに設定されており、フォームはそれRecordSource
にバインドされていません。
ComboBoxは正しく入力されますが、アイテムを選択しようとするたびに、「コントロールを編集できません。不明なフィールドCustomerにバインドされています」というエラーが表示されます。
そして、それがすべてです。これが一般的で解決しやすい問題である場合は申し訳ありませんが、それは何日も私を悩ませてきました。