【问题标题】:Automatically generate numbers自动生成数字
【发布时间】:2013-10-31 20:21:03
【问题描述】:

我需要一个自动生成的跟踪号。

我在“插入前”操作中添加了这个(见下文),但在数字 9 之后我遇到了问题。

我![Tracking#] = Nz(DMax("[Tracking#]", "[TblTrackingNum]"), 0) + 0.01

我的跟踪号始终以 89669 开头。此代码一直有效,直到达到数字 10。

跟踪号应该这样做: 89669.1... 89669.2... 89669.3... 89669.4... 89669.5.....

但在 9 之后,它会将数字更改为 89670。我需要它说 89669.10。

有什么建议吗?

【问题讨论】:

  • 89669.1 + 0.01 = 89669.11 但您似乎表明它应该是 89669.2 。你真正想要什么?
  • 我同意@HansUp 的观点,即您当前形式的问题令人困惑。听起来您实际上可能想要将数字字符串粘合在一起(而不是增加带小数位的数值)。如果是这样,那么我的另一个答案 here 可能会感兴趣。
  • 那么您正在寻找创建一个文本值。如果那是一个数字,那么 89670.1 和 89670.10 将是同一个数字。如果这只是您的错字,而您的意思是 89670.01、89670.02 等...,那么您只需将数字格式化为显示 2 位小数。
  • 此跟踪号用于跟踪对我们采购部门的报价请求。 89669 是项目编号,因此它应该始终保持不变(这就是我们知道请求绑定到哪个项目的方式)。每次我们发送请求时,我只需要它增加一位。最终可能有一千个请求,所以在这种情况下应该是 89669.1000。下一个请求将是 89669.1001 等等。我在网上搜索帮助时找到了我之前列出的字符串……它可能是错误的。

标签: ms-access vba


【解决方案1】:

在只包含一行数据的表中创建一个字段:

NextTrackNum Long

将 NextTrackNum 初始化为 1。

生成您的号码时,请执行以下操作:

function generateNumber() as double
    dim nextnum as long
    nextnum = dlookup("NextTrackNum", "yourTable", filter...)
    generateNumber = CDbl("89669." & trim(nextnum))
end function

【讨论】:

    【解决方案2】:

    首先,跟踪号需要是一个字符串,正如 Johnny Bones 在 cmets 中已经提到的那样。
    所以final字段需要是字符串,但实际增加的数字需要是数字类型(为了适当增加)

    将一个自增字段放入表中(并使其成为主键)
    这将成为您跟踪号的增加部分。

    然后,有多种方法可以从该自动增量字段中生成您的跟踪号:

    1) 在 MS Access 中创建一个从表中选择并生成跟踪号的查询。

    SELECT "89669." & [ID] AS TrackingNumber, YourTable.*
    FROM YourTable
    

    永远不要直接使用表,总是来自查询的SELECT

    SELECT * FROM qryYourTable WHERE ...
    

    2) 在表中创建一个名为 TrackingNumber 的附加文本字段。
    每次在表中插入新行时,从您的代码中调用一个查询,用正确的值填充该字段:

    Public Function FillTrackingNumbers()
    
        CurrentDb.Execute "UPDATE YourTable SET TrackingNumber = '89669.' & [ID] WHERE TrackingNumber Is Null"
    
    End Function
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-07
      • 1970-01-01
      • 2019-09-25
      • 2021-01-17
      相关资源
      最近更新 更多