Как использовать флажок в форме для добавления записи в подчиненную форму в Microsoft Office Access? - PullRequest
2 голосов
/ 03 февраля 2009

У меня есть база данных для ковровой компании. У меня есть форма, которая позволяет пользователю составлять ценовое предложение, в том числе выбирать клиента и т. Д. Существует также подчиненная форма, связанная с продуктами и дополнительными услугами, с количествами и ценами за единицу. Чтобы указать, требует ли пользователь подгонки, есть флажок. Когда отмечен галочкой, я бы хотел добавить в подчиненную форму один из продуктов. Продукты обычно выбираются вручную с использованием раскрывающегося списка.

Важными свойствами являются:
Название формы: Заказы
Имя подчиненной формы: Информация о заказе Подчиненная форма
Название флажка: Фитинг
Название поля для продуктов: Код продукта
Подформа связана с таблицей: Детали заказа
Форма связана с таблицей: Заказы

Я предполагаю, что нужен VBA или конструктор макросов.

В любом случае, спасибо заранее !!

Ответы [ 3 ]

2 голосов
/ 03 февраля 2009

Я думаю, что самый простой способ - использовать запрос на добавление.

If Me.Fitting Then
   strSQL="INSERT INTO [Order Details] (ProductID,OtherTextField) Values ("
         & Me.ProductID & ",'" & Me.OtherTextField & "')"
   CurrentDB.Execute strSQL, dbFailOnError

   Me.[Subform control name here].Form.Requery
End If
1 голос
/ 03 февраля 2009

В элементе управления флажка вы собираетесь добавить [Процедура обработки события] в событие После обновления для флажка (см. Окно свойств). Это заглушит код VBA, нажмите на многоточие ("..."), чтобы перейти к коду VBA.

Вы можете использовать код Рему (после моды), чтобы вставить новый продукт:

If Me.Fitting Then
    strSQL="INSERT INTO [Order Details] (ProductID,OtherTextField) " & _
        "Values (" & _
        Me.ProductID & ",'" & Me.OtherTextField & "')"
    CurrentDB.Execute strSQL, dbFailOnError

    Me.[Subform control name here].Form.Requery
End If
'[code not tested]

Однако вы, вероятно, также хотите проверить, что Продукта для Заказа еще не существует (допускает ли в ваших бизнес-правилах планирование нескольких фитингов), и вы также можете разрешить удаление продукта Фиттинга. когда он не отмечен - вы можете сделать это с условием else для if перед «end if»:

if 'blah
     'blah blah
else
    strSQL="Delete [Order Details] " & _
        "where ProductID = " & Me.ProductID & " " & _
            "and OtherTextField = 'fitting' " 
    CurrentDB.Execute strSQL, dbFailOnError

    Me.[Subform control name here].Form.Requery
end if
'[code not tested]

Вам также нужно будет взломать свою форму «Продукты», чтобы, если вы удалите из нее продукт «Фитинги», вы обновили флажок (или чтобы таким образом нельзя было удалить Фитинги).

Опять же, может быть, вы не хотите использовать флажок, и просто выберите вариант как другой выпадающий список, как и другие продукты. Вы всегда можете быть уверены, что он автоматически заполняется в [Детали заказа] каждый раз, когда создается новый Заказ, чтобы его нельзя было забыть. Это будет более соответствовать остальному пользовательскому интерфейсу выбора продукта.

0 голосов
/ 04 февраля 2009

Это не кодовое решение:

Снимите флажок Фитинг. Сделайте примерку продукта и добавьте его, как и все остальные. Если вы хотите узнать, требует ли заказ примерки (я полагаю, поэтому у вас есть флажок), вы можете создать запрос, чтобы увидеть, является ли пример одним из продуктов в ваших отчетах / счетах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...