Все еще работаю с Access 365, у меня есть 4 таблицы и 1 форма
Table Plant {PID(key), Name};
Table Provider {VID(key), Company};
Table Contractor {CID(key), Plant, Provider};
Table KPI {KID(key), ServiceID, KPI1, KPI2}.
Их отношение:
Plant.PID = Contractor.Plant,
Provider.PID = Contractor.Provider,
Contractor.CID= KPI.ServiceID
Форма KPI связана с таблицей KPI, чтобы упростить способ вводаПо данным, я создал вкладку управления «TabCtl64» с 2-мя страницами - «KPI» и «Detail».На странице "KPI" есть поле со списком "cbxPlantID", поле со списком "cbxProviderID" и текстовое поле "ServiceID".Что я хочу: когда пользователь выбирает завод из «cbxPlantID», а провайдер из «cbxProviderID», он ищет CID из таблицы «Подрядчик», а затем извлекает значение в поле «ServiceID».
Я пытался так:
Private Sub cbxProviderID_AfterUpdate()
ServiceID = DLookup("[CID]", "Contractor", "[Plant]= " & [Forms]![KPI]![cbxPlantID] & " And [Provider] =" & [Forms]![KPI]![cbxProviderID])
End Sub
Затем появляется сообщение об ошибке: не удается найти запись в таблице Исполнитель с ключом, совпадающим с полем ServiceID.Но есть запись.И я создал другую форму без Tab Control, тот же код может работать - поэтому я думаю, что проблема может быть связана с преобразованием имен в Dlookup комбинированных списков cbxPlantID и cbxProviderID: [Forms]! [KPI]! [CbxPlantID] не подходит для поляво вкладке контроль формы.Но я не могу найти, как исправить.Кто-нибудь знает это?