MS-Access: Es ist nicht genügend Arbeitsspeicher zum ausführen dieses Vorgangs
Ich benutze Access 2003 auf einem duo-core-Maschine mit 4GB RAM, mit Windows XP (Service Pack 3) [5.1.2600]
Regelmäßigen Abständen, erhalte ich eine error-msg "nicht genügend Arbeitsspeicher zum ausführen dieses Vorgangs. Schließen Sie nicht benötigte Programme und versuchen Sie es erneut."
Einer überprüfung der Task-Manager zeigt an, dass es viel freien Speicher. Schließen Sie andere Programme öffnen, macht keinen Unterschied.
Dies geschieht sporadisch, und unter anderen Umständen: manchmal, während das speichern-Formular-design oder VBA-code verändert, manchmal, wenn mehrere Formulare geöffnet sind und im Einsatz.
Wenn Sie versuchen, speichern Sie änderungen am Entwurf, und dieser Fehler Auftritt, wird die Access-Objekte sind beschädigt und können nicht wiederhergestellt werden.
Irgendwelche Vorschläge, was könnte die Ursache sein, wäre sehr willkommen.
MTIA
- Du meinst wohl 4GB RAM, 4MB nicht.
- James - Details, details. <smile>
- Wenn es 4MB, das wäre ein no-brainer Frage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das VBA-Projekt in Ihren front-end ist wahrscheinlich beschädigt. Müssen Sie es neu erstellen von Grund auf, und verwenden Sie dann die richtige Access-Codierungsverfahren:
in den VBE-Optionen, schalten Sie bei BEDARF KOMPILIEREN (siehe Michael Kaplans Artikel über DEKOMPILIEREN für details, warum).
in den VBE-Optionen, schalten Sie Variablendeklaration ERFORDERLICH.
in der VBE, passen Sie Ihre Symbolleiste, so dass der COMPILE-button ist leicht erreichbar (es ist im Menü Debuggen). Ich empfehle auch das hinzufügen der CALL-STACK-Taste (Menü ANSICHT), wie es ist nützlich für debugging-Fehler in den Pause-Modus. Der Punkt hier ist, um das Debuggen und kompilieren, so einfach wie möglich.
dass Ihre Umwelt, gehen durch alle Module in Ihre neu wiederhergestellte Projekt, und fügen Sie "OPTION EXPLICIT" an den Anfang des jeweiligen Moduls, fehlt es. Dann kompilieren. Sie werden schnell herausfinden, wo Sie ungültigen code, und Sie müssen, um es zu beheben.
ab jetzt, beim Programmieren, kompilieren Sie Häufig, nach jeden zwei oder drei Zeilen code. Ich wahrscheinlich kompiliere mein Projekt 100 oder mehr mal am Tag bei der Codierung.
regelmäßig zu dekompilieren Ihr Projekt und kompakt und kompilieren Sie es. Dies wird reinigen, keine crud, die sich während der normalen Entwicklung.
Diese Praktiken versichern, dass der code in einer nicht-korrupten Projekt bleibt in einem ebenso sauberen Zustand wie möglich. Es wird nichts tun, um die Wiederherstellung eines bereits beschädigten Projekt.
In Bezug auf, wie Sie das Projekt neu erstellen, ich denke, ich würde gehen, den drastischen Weg der Export aller Objekte, die mit der Anwendung.SaveAsText und importieren in eine neue leere Datenbank mit der Anwendung.LoadFromText. Diese überlegen ist, einfach importieren Sie Ihre bestehenden beschädigte front-end, da die import-importieren kann korrupten Strukturen, die nicht überleben ein SaveAsText/LoadFromText-Zyklus.
Ich das Programm täglich im Zugriff, das arbeiten mit nicht-trivialen apps, die viel code, darunter viele eigenständige klassenmodule. Ich habe nicht verloren, ein Objekt-code der Korruption in 5 Jahren, und das war wieder in den Tag, wenn ich war immer noch mit A97.
Haben stolperte über diesen alten post von mir, und zu sehen, es hatte ein gutes Stück von Interesse, ich dachte, vielleicht ein update würde in Ordnung sein?
Also 2 Jahre auf die Spur, dabei eine Menge von 2007-app sowie ältere 2003 (und auch '97) apps, ich finde, dass 2007 weniger anfällig für wirklich böse Abstürze als 2003 - dem Access-Objekt-Definitionen (Formulare und Berichte esp.) wäre leicht beschädigt.
Ich noch befolgen Sie die Vorschläge, 1-6 (oben) von David-W-Fenton religiös aber plus den Einsatz.SaveAsText (siehe Tony Toews' Vorschlag und link oben).
Diesen Tagen, ob es 97, 2003 oder 2007 habe ich auf Arbeit bin, wenn ein Zugang alle Hauch von "als seltsam | Absturz | werfen unerklärliche Fehler" etc, ich Tue das folgende:
Dies nicht alles lösen, aber es erheblich reduzieren die Anzahl von Beschädigungen an Access-Objekte aus, was ich in der Lage bin, zu beobachten.
Oh mein.
Arbeitete ich in einem Geschäft für viele Jahre, verwendet Access als Ihre Plattform der Wahl. Die Anwendung schließlich so groß, dass es begann zu schlagen, eine interne Speicher-Beschränkung von Access 2003. Sie begann erleben genau das gleiche problem, das Sie haben. Wie Sie sicher bemerkt haben, gibt es keine externen Anzeichen für Probleme mit dem Speicher, wenn dies geschieht.
Das Unternehmen Sprach ausführlich mit Microsoft über das problem, und ich glaube, dass Microsoft schließlich versorgt Sie mit einem patch. So möchten Sie vielleicht, um zu sprechen, um Microsoft über dieses, wenn es klingt wie eine ähnliche situation zu dem, was Sie erleben, wie Sie möglicherweise in der Lage zu liefern Sie mit dem gleichen patch.
Letztlich die langfristige Lösung ist das aufteilen der Anwendung in kleinere Stücke. Umzug in Access 2007 nicht helfen; in der Tat, es machte alles noch schlimmer, weil Access 2007 hat mehr bewegliche Teile.
Schnelle Lösung, die garantiert funktioniert:
Öffnen VBA (
Alt-F11
)Im Direktfenster, geben Sie Folgendes ein:
dann
Ist es 🙂 Hoffe, dies hilft anderen!
Application.LoadFromText acForm, "corrupt form name here", CurrentProject.Path & "\zzTempRevive"
Aussage einige Fehler können gefunden werden in errors.txt. Fehler beheben, dann laufen die Aussage wieder.Dies ist auch der Standard-Fehler-Nachricht, wenn der Zugang hat keine Ahnung, was das problem eigentlich ist. Nun, wenn Sie Ihre MDB-ist besonders groß, sagen mehr als 800 Formulare und Berichte mit Modulen, die dann ja die MDB werden konnte, zu großen obwohl, Ihr habt eine Nachricht, wenn Sie ging zum erstellen von MDE-Geräten. ACC2000: "Microsoft Access konnte keine MDE-Datenbank" Fehlermeldung
Ich habe dies geschieht gelegentlich selbst. Und meine aktuelle MDBs sind nicht ganz so groß. Beachten Sie, dass kompakte und Reparatur erkennt nicht die Fehler, die in anderen Objekten als Tabellen, Indizes oder Beziehungen. So importieren in eine andere MDB ist der einzige Weg, diese Fehler zu beheben.
Arbeiten Sie auf diese MDB über das Netzwerk? Das ist ungefähr das einzige was ich mir vorstellen kann, dass möglicherweise dieses problem verursachen.
Da ich weiß, dass es entweder die Formulare oder Berichte, die am ehesten beschädigt, ich habe eine neue mdb, und nur die importierten Tabellen (im Anhang), Abfragen, Skripts (nur) die Module und Menüs. Dann habe ich LoadFromText importieren von Formularen und Berichten über eine Funktion, und habe dann die üblichen dekompilieren/kompilieren und kompakt/Reparatur usw.
Bisher, touch wood, ich habe nicht einen anderen Absturz in einigen Tagen, so dass ich wahrscheinlich mit dem stick das recovery-Methode.
Vielen Dank an alle für Eure Vorschläge.
Habe ich auf dieses problem viele Male und schließlich eine Lösung gefunden, die funktionierte. Ich weiß nicht, was das problem verursacht, aber ich weiß wie es zu lösen.
In der Regel der Fehler Auftritt, wenn Sie ein Formular öffnen. Was Sie tun müssen, ist vollständig neu zu erstellen, die form. Der einfachste Weg, dies zu tun ist, exportieren Sie zuerst das Formular, um eine text-Datei mit der undokumentierten Funktion Anwendung.SaveAsText. Dann löschen Sie das Formular aus der Datenbank und re-laden Sie es mit der Anwendung.LoadFromText.