MS Access:按文本值或行数将结果集分成多个部分

时间:2016-04-06 00:48:51

标签: sql comparison ms-access-2007

我对Item表进行了查询。这是我们图书馆的所有项目,例如书籍,DVD,CD等。

我必须发送一个制表符分隔的文件,其中包含所有这些项目的数据。

有超过100,000件物品。

我遇到了使用MS Access的问题。

Access可以提取所有数据,但是它无法通过电子邮件发送结果集,因为它太大了(超过65,535行;我知道2007年以后的Excel版本可以容纳更多行,但这对我没有帮助) 。 所有列都是文本数据。所以正常的关系运算符不起作用(我试过)。

我需要将结果集拆分为两个或三个结果集,以便从Access访问Excel。对Excel的需求是供应商对它的期望,并且在发货之前需要对其进行一些调整。

我该怎么分呢?

我至少想过两种方式

  1. 如果我可以计算行数,我可以告诉Access使用它获得的前60,000行。我如何告诉它这样做,然后只获取超过60,000的所有行的第二组。我还没弄明白怎么做。
  2. 根据字段划分。唯一唯一的字段是条形码,例如“30001001672906”。通常,条形码的长度为14个数字。我在where子句中尝试过使用StrComp,但是我遇到了一个问题:
  3. 条形码在获取之前不按排序顺序排列。 “排序依据”适用于结果集,而不是在选择数据之前如何处理数据。

    我对如何实现我的目标感到茫然。这是重要的,而不是修复我的SQL来获得它的特定方法。我查看了一些页面,例如下面的页面,但没有找到解决方案。

    https://support.office.com/en-us/article/Table-of-operators-e1bc04d5-8b76-429f-a252-e9223117d6bd#__toc272228349 MS ACCESS count/sum number of rows, with no duplicates http://www.techonthenet.com/access/functions/string/strcomp.php

1 个答案:

答案 0 :(得分:0)

我不明白2的问题。

SELECT barcode FROM items ORDER BY barcode

打开一个Recordset,移至记录60000,获取条形码

rst.Move 60000
strBarcode = rst!barcode

请参阅https://msdn.microsoft.com/en-us/library/bb243789%28v=office.12%29.aspx

然后动态构建您的查询。

myQuerydef.SQL = "SELECT * FROM items WHERE barcode <= '" & strBarcode & "'"

导出查询,例如与DoCmd.TransferSpreadsheet

myQuerydef.SQL = "SELECT * FROM items WHERE barcode > '" & strBarcode & "'"

导出到第二个文件。

如果您需要两个以上的文件,请使用数组而不是strBarcode并执行

myQuerydef.SQL = "SELECT * FROM items WHERE barcode > '" & Barcode(i) & _
                 "' AND barcode <= '" & Barcode(i+1) & "'"