Как создать / обновить набор записей в форме со сложными связями таблиц в Microsoft Access - PullRequest
0 голосов
/ 25 июня 2019

У меня есть эти таблицы:

  • tblOrders ('OrderId', 'Date', 'Client')
  • tblOrderDetails («Id», «OrderId», «Product», «Qty», «Price»)
  • tblPriceList («PriceId», «From Date», «To Date», «Клиент ',' Продукт, 'Цена')

Я создал форму на основе tblOrders , где пользователь может ввести: «Дата» и «Клиент».Затем я сделал подчиненную форму, основанную на tblOrderDetails , где пользователь вводит: «Product» и «Qty» для каждой строки заказа.Теперь мне нужно отобразить каждую «Цену» рядом с «Кол-во», которая зависит от «Продукта», «Клиента» и «Даты» строки заказа, как указывает tblPriceList .Также, когда я изменяю клиента или дату в форме, мне нужно, чтобы эти значения 'Price' автоматически обновлялись в форме, а также в таблице tblOrderDetails .

Мне удалось создать запросприсоединяясь к этим 3 таблицам, но потом я не смог создать новый набор записей в форме из-за его сложных отношений.Я также попытался создать текстовое поле в подчиненной форме tblOrderDetails с помощью Dlookup, который получает правильную 'Price' из tblPricelist для каждой строки заказа.Но тогда я не нашел способа сохранить эти значения в поле 'Price' из tblOrderDetails .

Есть ли способ решить эту проблему?Может быть, изменение в дизайне базы данных?

1 Ответ

0 голосов
/ 25 июня 2019

Предположительно, при создании новой детали заказа, пользователь сначала выбирает продукт (из выпадающего списка?), И по умолчанию кол-во равно 1.

o в событии AfterUpdate (с использованием VBA) для раскрывающегося списка «Продукт», введите

Price = DLookup("Price","tblPriceList","Product = " & Me.Product & _ 
                                      " AND Client = " & Parent.Client & _ 
                                      " AND Date() Between [From Date] and [To Date]")

Я предполагаю, что идентификатор клиента появляется в родительской форме где-то в элементе управления с именем «Клиент». Также поместите ту же функцию в AfterUpdate Qty, тогда все будет в порядке.

Нет необходимости использовать сложный запрос для деталей заказа, просто основывайте подчиненную форму на таблице и используйте отношение Master / Child для управления ею.

Вы не хотите использовать VBA?

  • Это просто, просто щелкните правой кнопкой мыши выпадающий элемент управления Product, выберите Properties, затем вкладку Events
  • затем нажмите AfterUpdate и выберите elipsis. Нажмите «Построитель кода» и введите свой Me.Price = бла-бла-бла.
  • Сделайте то же самое для элемента управления Qty.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...