Вам нужно изменить тип источника строки поля со списком на «Таблица / Запрос». Затем в «источнике строк» нажмите «...», чтобы открыть Query Builder. Выберите таблицу, которую вы хотите. Добавьте столбцы, которые вы хотите. Я бы предложил первичный ключ таблицы PetID, а затем любые другие поля - в вашем случае хотя бы PetName. Вы также можете отсортировать по PetName, чтобы пользователю было легче пролистывать. Закройте Query Builder и сохраните изменения. Измените значение ColumnCount поля со списком на 2 и установите для ширины столбца значение «0 см; 6 см» (если ширина первого столбца равна 0, это означает, что он не отображается для пользователя).
Теперь переместите TextBox и установите для параметра «Источник управления» значение:
=[Combo0].Column(1)
Обратите внимание, что столбцы в поле со списком имеют индекс 0, поэтому первый столбец - это столбец 0, второй (в вашем случае, содержащий PetName) это столбец 1.
Поскольку вы на самом деле хотите отображать имена полей, а не данные в поле со списком, вам нужно будет установить RowSourceType как «Список полей», а затем выбрать имя таблицы как RowSource.
Затем вам понадобится небольшой кусочек VBA для поиска значения этого поля в таблице для текущей записи:
Sub sListFieldData()
If Not IsNull(Me!Combo0) Then
Me!Text2 = DLookup(Me!Combo0, "tblPet", "PetID=" & Me!PetID)
Else
Me!Text2 = ""
End If
End Sub
И затем вам нужно будет вызвать эта процедура в событии AfterUpdate поля со списком (для отслеживания, когда оно было изменено пользователем), а также в событии Current формы (для отслеживания, когда пользователь перемещается между записями):
Private Sub Combo0_AfterUpdate()
Call sListFieldData
End Sub
Private Sub Form_Current()
Call sListFieldData
End Sub
С уважением,