我有一个Access表,其中包含以下名为tReOrder的字段:
我正在尝试创建一个脚本或查询,该脚本或查询将通过“重新订购数量”中的任何值来复制记录。
我尝试了多个查询,脚本,花了几个小时进行谷歌搜索,却找不到解决方案。
这是为了让我们能够自动打印出足够的标签,以标记我们对股票的重新订购。
请让我知道是否需要更多数据。
答案 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
的表:
使用整数 0 至 9 填充此表:
然后,以下查询将产生数字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 join或cartesian 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]
如果您的表包含以下记录,请使用此查询:
您将收到以下结果: