2016-04-06 3 views
0

Ich habe eine Abfrage gegen eine Item-Tabelle. Dies sind alle Elemente unserer Bibliothek, z. B. Bücher, DVDs, CDs usw.MS Access: Ergebnismenge in mehrere Teile teilen nach Textwert oder Anzahl der Zeilen

Ich muss eine tabulatorgetrennte Datei senden, die Daten zu allen diesen Elementen enthält.

Es gibt über 100.000 Elemente.

Ich bin mit MS Access fest.

Der Zugriff kann alle Daten abrufen, aber das Ergebnis kann nicht per E-Mail gesendet werden, da es zu groß ist (über 65.535 Zeilen; mir ist bewusst, dass spätere Versionen von Excel nach 2007 mehr Zeilen enthalten können, aber das hilft mir nicht). Alle Spalten sind Textdaten. Also normale relationale Operatoren funktionieren nicht (ich habe es versucht).

Ich muss die Ergebnismenge in zwei oder drei Ergebnismengen aufteilen, um es von Access zu Excel zu erhalten. Die Notwendigkeit für Excel ist, dass dies der Verkäufer erwartet, und es muss einige vor dem Versand optimiert werden.

Wie kann ich es teilen?

Ich habe mindestens zwei Möglichkeiten gedacht

  1. Wenn ich Reihen zählen kann, kann ich Zugang sagen die ersten 60,0000 Zeilen zu verwenden, wird es. Wie sage ich es, mache das und hole dann nur den zweiten Satz aller Zeilen nach 60.000. Ich habe nicht herausgefunden, wie das geht.
  2. Aufteilung basierend auf einem Feld. Das einzige Feld, das einzigartig ist, ist der Barcode, z. B. "30001001672906". Normalerweise ist der Barcode 14 Zahlen lang. Ich habe experimentiert mit StrComp in einer Where-Klausel, aber ich habe ein Problem:

Die Barcodes sind nicht in sortierter Reihenfolge, bevor sie abgerufen werden. "Sortieren nach" funktioniert auf der Ergebnismenge, nicht wie die Daten verarbeitet werden, bevor sie ausgewählt werden.

Ich bin ratlos, wie ich mein großes Ziel erreichen kann. Das ist die eine Sache, die zählt, nicht die besondere Art, mein SQL zu reparieren, um es zu bekommen. Ich habe mir einige Seiten angeschaut, zB die unten genannten, aber keine Lösung gefunden.

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

Antwort

0

Ich verstehe nicht das Problem mit dem 2.

SELECT barcode FROM items ORDER BY barcode 

Öffnen Sie ein Recordset auf das, bewegen 60000 aufzeichnen, erhalten den Barcode

rst.Move 60000 
strBarcode = rst!barcode 

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

Dann erstellen Sie Ihre Abfragen dynamisch.

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

Exportieren Sie die Abfrage z.B. mit DoCmd.TransferSpreadsheet

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

In zweite Datei exportieren.

Wenn Sie mehr als zwei Dateien benötigen, verwenden Sie ein Array statt strBarcode und tun

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