Access 2013 - 没有自动编号的顺序编号

时间:2016-06-02 20:10:33

标签: ms-access database-design

此网站的新功能和访问权限。 我正在尝试创建一个数据库来跟踪主日志。需要顺序编号方面的帮助。我目前有以下表格。

PO表    POID - 自动编号(PK)
   PODate - 日期/时间
  供应商 - 字符串

项目表   ItemID - 自动编号(PK)
  POID - Ingeter(FK)
  ItemDescription - 字符串
 数量 - 整数

MasterLog表   MasterLogID - 自动编号(PK)
  ItemID - 整数(FK)
  PieceNumber - 整数(1,2,3 ......等)
  MFG - 字符串
 过程 - 字符串
 长度 - 整数
  MfgIDNum - 字符串(ABD123XTY-1234)

我正在尝试自动化PieceNumber字段的数据输入。因此,当您输入新的采购订单并向其添加项目时,一旦收到。它会在masterlog表中添加一行,从1号开始到我们有多少件。我们根据我们购买的商品对这些商品进行编号(即第1项,我们购买了100件。所以我将第1项至第1项。)然后我们可以将其他数据添加到表中。只是尝试减少一些数据输入时间并避免在该字段的编号中出现一些错误。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这样的事情是一种非常简单的方法。您必须拥有一个名为Numbers的预定义表格,其中整数从1开始到您可能拥有的数量很高:

INSERT INTO MasterLog (ItemID, PieceNumber)
SELECT Item.ItemID, Numbers.Number
FROM Item, Numbers
WHERE (Item.ItemID = Forms!Items!ItemID) AND 
   (Numbers.Number <= Item.Quantity) 
ORDER BY Numbers.Number 

如果您想逐个添加各个部分,可以默认相关表单上的PieceNumber字段。确保您也默认使用MasterLog.ItemID:

=Nz(DMax("[PieceNumber]","[MasterLog]","[ItemID] = " & Forms!Items!ItemID), 0) + 1

对于VBA解决方案,请尝试以下方法:

Dim db As Database
Dim strSQL As String
Dim frm As Form
Dim i As Integer

    Set db = CodeDb()
    Set frm = Forms!Items

    If frm!Quantity > 0 Then
        For i = 1 To frm!Quantity
            strSQL = "INSERT INTO MasterLog (ItemID, PieceNumber) " & _
                "SELECT " & frm!Item & " AS ItemID, " & _
                i & " AS PieceNumber"
            db.Execute strSQL, dbFailOnError
        Next i
    End If

    Set db = Nothing

所有这些都假定一个表单显示当前名为Items的项目。