Maximale Anzahl von Datensätzen in MS Access 2010

2434
Philip Sobolik

Ich habe ein VBA-Programm, das in Access 2010 geschrieben wurde. Es erstellt und füllt eine Tabelle aus einer Textdatei. Bisher gab es insgesamt weniger als 20.000 Datensätze. Mit dem aktuellen Datensatz bekomme ich einen Überlauf, wenn versucht wird, den 32.769. Datensatz (32 K + 1) hinzuzufügen. Ich habe versucht, es zu stoppen, nachdem es den 32.768. Datensatz hinzugefügt hat, und es funktioniert einwandfrei (ohne Überlauffehler). Sobald ich das Maximum auf 32.769 erhöht habe, erhalte ich den Überlauffehler. Gibt es eine maximale Anzahl von Datensätzen, die über VBA hinzugefügt werden können? Ich verwende die Standard-DAO-Aufrufe - CreateDatabase, OpenDatabase, OpenRecordset usw. Ich kopiere vorhandene Tabellen aus einer anderen Datenbank, um die Tabellen zu erstellen. Dann eine .AddNew, xxx = yyy ... und .Update-Kette, um die Datensätze hinzuzufügen. Ich verwende ein Windows 7 64-Bit-Betriebssystem. Jemand schlug vor, ADO anstelle von DAO zu verwenden, aber ich konnte nicht herausfinden, wie das geht. Es scheint, als Erstes muss ein Verweis auf System.Data.OleDb.dll importiert oder hinzugefügt werden. Das konnte ich nicht finden. Jede Hilfe wäre dankbar. Ich könnte am Ende das Ganze in C # neu schreiben.

Phil

0

2 Antworten auf die Frage

1
krowe2

Das Problem ist mehr als wahrscheinlich, dass Sie eine Ganzzahl verwenden, um die Zeile anzugeben. Verwenden Sie stattdessen ein langes. Dies sollte Sie ein wenig weiter bringen, bevor es stirbt.

Sie sind lang. Ich teilte sie sogar in mehrere Zähler auf und verwende verschiedene, wenn sie einen bestimmten Betrag erreichten. 200.000, 23.300, 38.800. All dies sind Bruchteile der 2 Milliarden, die die längste ist. Philip Sobolik vor 9 Jahren 0
Dies ist in der Tat die Grenze einer ganzen Zahl. Wenn ein Long nicht funktioniert, versuchen Sie es mit einem Double. Siehe auch: http://cis.poly.edu/~mleung/CS394/f06/VBA/essentialElements/dataTypes.html. Beachten Sie auch, dass Sie sie speziell definieren müssen, solange VBA zwischen verschiedenen Typen wechselt. Dim MyVar wird so lange MyVar lange halten. LPChip vor 9 Jahren 0
Sie werden explizit als lang gedimmt. Ich glaube, ich habe sogar einmal die Zähler herausgenommen. Nur um sie als Problem zu beseitigen. Ich denke, so habe ich festgestellt, dass sie nicht das Problem waren. Philip Sobolik vor 9 Jahren 0
0
Rob Sedgwick

Doppelte werden nicht helfen Longs sollte gut sein. Es muss immer noch irgendwo eine Ganzzahl verwendet werden, wenn bei 32769 ein Überlauf auftritt. Überprüfen Sie Ihren Code sorgfältig auf Ganzzahlen, Varianten und unverstellte veriables. Stellen Sie sicher, dass Sie Option Explicit oben in allen Modulen haben, da Sie möglicherweise einen Variablennamen anders geschrieben haben, als er abgeblendet ist. In diesem Fall wird es eine Ganzzahlvariante sein, nicht lang, wenn Sie mit klein beginnen Zahlen.

Option Explicit ist an der Spitze. Es sind 3 Ganzzahlen im Programm. Einer wird für den Rückgabewert und die Argumente von InStr () verwendet. Die anderen 2 sind Dateinummer für FreeFile. 4 Bytes, 3 Varianten, 1 Boolean. Der Rest sind Strings, Datenbanken und Recordsets. Philip Sobolik vor 9 Jahren 0
Was sind die Varinanten? Rob Sedgwick vor 9 Jahren 0
Welche Codezeile schlägt tatsächlich fehl, ist es die Update-Anweisung? Könnten Sie nur die Zeile kopieren und einfügen, in der sie hier fehlschlägt? Rob Sedgwick vor 9 Jahren 0
Das ist etwas schwierig. Ich bin wahrscheinlich der .Update-Aufruf - der 32K'te. Philip Sobolik vor 9 Jahren 0
Die Variante enthält das Ergebnis eines Lesens aus einer Textdatei Philip Sobolik vor 9 Jahren 0
Wenn Sie die Einstellung in "Bei allen Fehlern aufheben" ändern, können Sie die Zeile sehen, in der der Fehler auftritt, und dann hoffentlich sehen, welche Variable das Problem verursacht. Rob Sedgwick vor 9 Jahren 0
Die anderen 2 Varianten sind ein Array von 3 Zeichenfolgen der Länge 1 und einer der Werte des Arrays Philip Sobolik vor 9 Jahren 0
Nun, es hat sich gelohnt, ständig zu bestätigen, welche Zeile den Überlauffehler verursacht hat. Es war in einem anderen Fn, der einen anderen Wert las, der letztendlich eine Ganzzahl in einer Tabelle war. Ganz hinter den Kulissen. Jedenfalls muss ich zu dem Programm zurückverfolgen, das diese Datenbank verwendet, um genau herauszufinden, was zu tun ist. Philip Sobolik vor 9 Jahren 0