【问题标题】:Access 2013 - sequential numbering without autonumberAccess 2013 - 没有自动编号的顺序编号
【发布时间】:2016-06-02 20:10:33
【问题描述】:

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

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

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

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

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

有什么想法吗?

【问题讨论】:

    标签: ms-access database-design


    【解决方案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。

    【讨论】:

    • 好的。我会尝试一下。我在想我可以用VB做一个循环,i = 0
    • @jdwk6 这也很好。试图给你非代码选项。
    • 抱歉不习惯 cmets 部分,我试图在我的评论中输入更多信息并意识到我无法按 Enter。我不确定是否要创建另一个表,因为我的数量会有很大差异。它可能是少量到大量,所以我必须创建一个包含大量数字的表格,以防我们得到一个数量很大的订单。我会尝试这个选项。谢谢。
    • @jdwk6 好的,如果您绝对需要代码并需要帮助,请告诉我,我将提供 VBA 解决方案
    • 这很好用。它现在可以,但我想获得一个 VBA 解决方案,因为我想自动化这个任务。有没有办法在我运行查询时选择当前项目和数量而无需在弹出框中重新输入信息?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多