2016-04-06 8 views
0

アイテムテーブルに対してクエリがあります。これは、図書、DVD、CDなどの図書館のすべてのアイテムです。MS Access:結果セットをテキスト値または行数で複数に分割

これらのすべてのアイテムに関するデータを含むタブ区切りのファイルを送信する必要があります。

100,000以上のアイテムがあります。

私はMS Accessを使用しています。

アクセスはすべてのデータをプルすることができますが、大きすぎる(65,535行を超えるため、結果セットを電子メールで送信できません。2007年以降のExcelのそれ以降のバージョンではさらに多くの行を保持できますが、 )。 すべての列がテキストデータです。したがって、通常の関係演算子は動作しません(私は試しました)。

Excelからアクセスするには、結果セットを2つまたは3つの結果セットに分割する必要があります。 Excelの必要性は、これがベンダーが期待する方法であり、出荷前にいくつか調整する必要があるということです。

どうすれば分けることができますか?

私はそれを取得最初60,0000行を使用するようにアクセスを伝えることができ、行を数えることができるなら、私は、少なくとも2つの方法

  1. と考えています。どのようにしてそれを行うのか、次に60,000を超えるすべての行の2番目のセットだけをフェッチします。私はこれを行う方法を考え出していない。
  2. フィールドに基づいて除算します。一意の唯一のフィールドは、バーコード(例えば、「30001001672906」)である。通常、バーコードの長さは14である。私はwhere句でStrCompを使用して実験しましたが、問題があります。

バーコードはフェッチされる前にソート順ではありません。 "Order by"は、データが選択される前の処理方法ではなく、結果セットで機能します。

大きな目標を達成する方法については、私は迷っています。これは重要なものです.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

答えて

0

私はその上の2

SELECT barcode FROM items ORDER BY barcode 

オープンレコードセットに問題があることを理解していない、取得、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 & "'" 

2番目のファイルにエクスポートしてください。あなたは以上の2つのファイルを必要とする場合

、代わりにstrBarcodeの配列を使用して行う

myQuerydef.SQL = "SELECT * FROM items WHERE barcode > '" & Barcode(i) & _ 
       "' AND barcode <= '" & Barcode(i+1) & "'" 
関連する問題