【问题标题】:MS Access: divide result set into multiple pieces by text value or number of rowsMS Access:按文本值或行数将结果集分成多个部分
【发布时间】:2016-04-06 00:48:50
【问题描述】:

我有一个针对 Item 表的查询。这是我们图书馆的所有物品,例如书籍、DVD、CD 等。

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

有超过 100,000 项。

我无法使用 MS Access。

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

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

怎么分?

我至少想到了两种方法

  1. 如果我可以计算行数,我可以告诉 Access 使用它获得的前 60,0000 行。我如何告诉它这样做,然后只获取超过 60,000 的所有行的第二组。我还没想好怎么做。
  2. 根据字段进行划分。唯一唯一的字段是条形码,例如“30001001672906” 通常,条形码长度为 14 个数字。我已经尝试在 where 子句中使用 StrComp,但我遇到了一个问题:

条码在提取之前未按排序顺序排列。 “排序依据”适用于结果集,而不是在选择数据之前如何处理数据。

我不知道如何实现我的大目标。这才是最重要的,而不是修复我的 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

【问题讨论】:

    标签: sql comparison ms-access-2007


    【解决方案1】:

    我不明白 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) & "'"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-12
      • 2018-01-15
      • 2011-09-24
      • 2021-12-09
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      • 2017-10-03
      相关资源
      最近更新 更多