Как настроить форму MS Access, чтобы создать новую строку в таблице и установить одно поле в качестве значения по умолчанию? - PullRequest
0 голосов
/ 21 октября 2019

Так что я не уверен, что даже задаю правильный вопрос, но здесь он идет. В настоящее время у меня есть форма MS Access, созданная для того, чтобы кто-то мог ввести новое рабочее задание. Вы можете указать компанию, требуемый номер детали, количество, а номер рабочего заказа - это автоматически сгенерированное значение, которое я использую для своего первичного ключа. Все это прекрасно работает и успешно добавляет новую строку в таблицу «Рабочие задания». Однако, когда эта форма используется для создания нового рабочего задания, я хочу, чтобы последнее поле в таблице «Рабочие задания», которое называется «Статус», было установлено на «Не начато».

Я успешно выполнил запрос на обновление, который запрашивает номер рабочего задания, и для поля «Состояние» установлено значение «Не начато». Вот код для этого:

UPDATE 03A_WorkOrderList 
SET 03A_WorkOrderList.Status = "Not Started"
WHERE ((([03A_WorkOrderList].WO_Num)=[WO_Num:]));

Если вы даете номер заказа на выполнение запроса на обновление, все работает отлично, и поле "Статус" обновляется.

Итак, вернемся к форме, которую я решилприкрепить запрос на обновление к событию сборки, где обновление происходит после создания новой строки. Кажется, это тоже сработало, за исключением того, что запрашивается номер рабочего задания. Я полностью понимаю почему, потому что это код, который находится в запросе на обновление: WHERE ((([03A_WorkOrderList].WO_Num)=[WO_Num:]));

Что я не могу понять, так это как заставить его получить номер рабочего задания, который был автоматически сгенерирован, и использовать его длязапрос на обновление.

Если я все сделаю неправильно, пожалуйста, дайте мне знать. ТИА.

Ответы [ 2 ]

1 голос
/ 21 октября 2019

В Ms Access откройте таблицу [Work order] в режиме конструктора. Выберите поле Status и в разделе property ниже вы можете установить Default value равным Not started. Таким образом, вам не нужно выполнять обновление, и все новые заказы будут автоматически иметь статус Not started.

или в форме добавления заказа, событие On before update, вы можете установить status = 'Not started'

0 голосов
/ 22 октября 2019

Мне удалось получить требуемую функциональность с помощью следующего запроса UPDATE:

UPDATE 03A_WorkOrderList SET 03A_WorkOrderList.Status = "Not Started"
WHERE [03A_WorkOrderList].WO_Num=(SELECT MAX(WO_Num) FROM 03A_WorkOrderList);

Поскольку WO_Num генерируется автоматически, и я хочу отредактировать тот же, над которым я работал,Я мог бы просто искать МАКС (WO_Num). Затем я сделал этот запрос UPDATE отдельно от события сборки формы заказа.

...