Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 如何在access vb中引用自动编号字段并能够将其用于计算_Ms Access_Vba - Fatal编程技术网

Ms access 如何在access vb中引用自动编号字段并能够将其用于计算

Ms access 如何在access vb中引用自动编号字段并能够将其用于计算,ms-access,vba,Ms Access,Vba,我在一个表中有一个自动编号,用于订单id。我制作了一个表单,将此订单id的行项目输入到该表中。我想要一个功能,可以让我点击我的“添加到订单按钮”,它将继续使用相同的订单id为每个记录,直到我完成订单。我在单击“添加记录”按钮的子按钮上的中尝试了以下操作me.txt\u Orderid=me.txt\u Orderid-1,但这自然不起作用。我是一个相当新的访问,所以访问vba是绊倒了我。想法?如果您想要对字段进行多条记录,则不应在字段上使用自动编号。而是创建一个新字段并将其用于orderid。创

我在一个表中有一个自动编号,用于订单id。我制作了一个表单,将此订单id的行项目输入到该表中。我想要一个功能,可以让我点击我的“添加到订单按钮”,它将继续使用相同的订单id为每个记录,直到我完成订单。我在单击“添加记录”按钮的子按钮上的
中尝试了以下操作
me.txt\u Orderid=me.txt\u Orderid-1
,但这自然不起作用。我是一个相当新的访问,所以访问vba是绊倒了我。想法?

如果您想要对字段进行多条记录,则不应在字段上使用自动编号。而是创建一个新字段并将其用于orderid。创建新订单时,您需要获取该字段的最大值,然后添加一个。见下文

On Error Resume Next
DoCmd.GoToRecord , "", acNewRec
If (MacroError <> 0) Then
    Beep
    MsgBox MacroError.Description, vbOKOnly, ""
End If

'This is where you assign new order numbers.
Me.OrderIDFormControl = (DMax("OrderIDField", "OrderTable") + 1)
出错时继续下一步
DoCmd.GoToRecord,“,acNewRec
如果(宏错误0),则
嘟嘟声
MsgBox宏错误。说明,vbOKOnly,“”
如果结束
'这是分配新订单号的地方。
Me.OrderIDFormControl=(DMax(“OrderIDField”、“OrderTable”)+1)
这将获得相同的结果,但更好。你可以有它的副本


一旦您确定了ID,那么每次添加订单行项目时,您只需获取订单的ID,并将其分配给新记录。

将有两个表TBLonder,它们将成为订单的主表。在此表中,您可以使用OrderID作为自动编号。第二个表是tblOrderItems,这是一个细节表,它有多个订单项的OrderID的重复值

创建一个绑定到tblOrder的表单frmOrder,创建另一个绑定到tblOderItem的表单。现在在设计模式下打开订单,按F11键查看数据库中的其他表单,拖放正在创建的FRMORDIETEM。现在,此表单将成为主订单表单中的子表单。 子窗体属性、设置主字段、子字段属性。您将被要求设置相关字段,它将是来自两个表/表单的OrderID

在将数据插入tblOrderItem时,可以使用此表单,而无需编写代码来获取OrderID。Access为您获取价值并添加


如果出于任何原因希望在代码中包含OrderID,或者编码未绑定的表单/子表单,则仍然如此。您可以从frmOrder表单获取OrderID的值。在frmOrder代码中的任意位置引用此tbOrderID文本框控件时,可以只使用tbOrderID.value,但如果要引用子表单中的文本框,请记住使用表单名称或从子表单的父属性获取,例如表单![frmOrder].tbOrderID.value,以防您要与家长一起使用,例如Me.Parent.form.tbOrderID.value

感谢您的帮助。谢谢!这就是我一直想做的,没问题。一开始,我很难理解自动编号字段的真正用途,但后来才发现我完全错了。自动编号只能用于行标识。它们不应该有任何与您的数据相关的含义。如果您还有其他问题,请随时告诉我。一开始,独自一人访问有点挑战性!