Sql 如何设置MS Access窗体以在表中创建新行并将一个字段设置为默认值?

Sql 如何设置MS Access窗体以在表中创建新行并将一个字段设置为默认值?,sql,vba,ms-access,Sql,Vba,Ms Access,所以我不确定我问的是正确的问题,但我想说的是。我目前有一个MS Access表单,以便有人可以输入新的工作订单。您可以设置公司、所需零件号、数量和工作订单号,这些都是我用于主键的自动生成值。所有这些都非常有效,并成功地将一个新行添加到表“Work Orders”中。但是,当使用此表单创建新工单时,我希望将表“工单”中称为“状态”的最后一个字段设置为“未启动” 我成功地进行了更新查询,该查询要求输入工单编号,并将“状态”字段设置为“未启动”。以下是代码: UPDATE 03A_WorkOrderL

所以我不确定我问的是正确的问题,但我想说的是。我目前有一个MS Access表单,以便有人可以输入新的工作订单。您可以设置公司、所需零件号、数量和工作订单号,这些都是我用于主键的自动生成值。所有这些都非常有效,并成功地将一个新行添加到表“Work Orders”中。但是,当使用此表单创建新工单时,我希望将表“工单”中称为“状态”的最后一个字段设置为“未启动”

我成功地进行了更新查询,该查询要求输入工单编号,并将“状态”字段设置为“未启动”。以下是代码:

UPDATE 03A_WorkOrderList 
SET 03A_WorkOrderList.Status = "Not Started"
WHERE ((([03A_WorkOrderList].WO_Num)=[WO_Num:]));
如果您提供更新查询工作订单编号,则一切正常,“状态”字段将更新

因此,回到表单,我决定将更新查询附加到生成事件,在该事件中,更新在新行创建之后发生。这似乎也起了作用,只是它要求提供工作订单号。我完全理解原因,因为它是更新查询中的代码:
WHERE(([03A\u WorkOrderList].WO\u Num)=[WO\u Num:])

我不知道如何让它提取自动生成的工单编号,并将其用于更新查询


如果我在这件事上做错了,请让我知道。TIA。

在Ms Access中,以设计模式打开您的
[工作单]
表。选择
状态
字段,在下面的
属性
部分,您可以将
默认值
设置为
未启动
。这样,您就不需要执行更新,所有新订单将自动处于
未启动
状态


或者在您的“添加订单”表单中,在“更新前打开”
事件中,您可以设置
状态=“未启动”
我可以通过以下更新查询获得我想要的功能:

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,所以我可以只查找最大值(WO_Num)。然后,我将此更新查询与订单的生成事件分开。

因此,我可以将默认值设置为“Not Started”,这将适用于此场景。不过,稍后我还有另一个过程,我将创建一个报告,为生产车间的工人提供指导。单击按钮创建报告时,我希望状态更新为“WIP”。基本上是相同的情况,但我无法通过为“状态”字段设置默认值来摆脱这种情况。至于您的报告,您需要在VBA中嵌入一些代码,以将基础记录的状态更新为“WIP”。