根据字段值访问创建重复记录

时间:2019-03-04 21:27:09

标签: sql ms-access

我有一个Access表,其中包含以下名为tReOrder的字段:

  • 条形码(数字)
  • 重新订购数量(数量)
  • 项目说明(长文本)
  • 供应商(短文本)
  • 每单位项目数(短文本)
  • 类别(短文本)
  • 子类别(短文本)

我正在尝试创建一个脚本或查询,该脚本或查询将通过“重新订购数量”中的任何值来复制记录。

我尝试了多个查询,脚本,花了几个小时进行谷歌搜索,却找不到解决方案。

这是为了让我们能够自动打印出足够的标签,以标记我们对股票的重新订购。

请让我知道是否需要更多数据。

2 个答案:

答案 0 :(得分:1)

以下是对我有用的查询。它使用隐藏的表MSysObjects,该表实际上可以确定具有足够的记录。

SELECT tReOrder.*
FROM tReOrder, 
   (SELECT DISTINCT [Tens]+[Ones] AS Factor, 10*Abs([Deca].[id] Mod 10) AS Tens, Abs([Uno].[id] Mod 10) AS Ones 
    FROM MSysObjects AS Uno, MSysObjects AS Deca) AS F
WHERE F.Factor<[ReOrder Qty]
ORDER BY Barcode;

答案 1 :(得分:1)

  • 使用名为 Long Integer 数据类型的单个字段numbers创建一个名为id的表:

    enter image description here

  • 使用整数 0 9 填充此表:

    enter image description here

  • 然后,以下查询将产生数字1-1000:

    select 100*n100.id+10*n10.id+n1.id+1 as n from numbers n1, numbers n10, numbers n100
    

    如果您的数量不太可能超过100,则可能变为:

    select 10*n10.id+n1.id+1 as n from numbers n1, numbers n10
    

    如果您的数量可能超过1000,则以下内容将产生10000条记录:

    select 1000*n1000.id+100*n100.id+10*n10.id+n1.id+1 as n 
    from numbers n1, numbers n10, numbers n100, numbers n1000
    

    (将模式扩展/收缩为适合您数据的数量级)

  • 您现在可以将此数字表用作cross joincartesian product的一部分,以便创建一个查询,该查询将返回给定记录数(最多记录数)由上述SQL返回),用于另一个表中的每个记录。

    对于您的表,这样的查询可能是:

    select tReOrder.* 
    from tReOrder, 
    (select 100*n100.id+10*n10.id+n1.id+1 as n from numbers n1, numbers n10, numbers n100) t
    where t.n <= tReOrder.[ReOrder Qty]
    

    如果您的表包含以下记录,请使用此查询:

    enter image description here

    您将收到以下结果:

    enter image description here