Frage

Ich verwende Access 2003 auf einer Duo-Core-Maschine mit 4 GB RAM, Windows XP (Service Pack 3) [5.1.2600]

Von Zeit zu Zeit habe ich einen Fehler msg bekommen „Es ist nicht genügend Speicherplatz, um diese Operation auszuführen. Schließen Sie nicht benötigte Programme und versuchen Sie es erneut.“

Eine Überprüfung der Task-Manager zeigt an, dass es genügend freier Speicherplatz ist. Schließen Sie andere geöffnete Programme macht keinen Unterschied.

Dies geschieht sporadisch, und unter anderen Umständen. Manchmal während Speicher Formular-Design oder VBA Codeänderungen, manchmal, wenn mehrere Formulare geöffnet sind und in Gebrauch

Wenn Sie versuchen, Entwurfsänderungen zu speichern, und dieser Fehler auftritt, werden die Access-Objekte beschädigt und kann nicht wiederhergestellt werden können.

Irgendwelche Vorschläge auf, was dieses verursachen könnte, wäre sehr willkommen.

MTIA

War es hilfreich?

Lösung 6

Wie ich weiß, dass es entweder Formulare oder Berichte ist, die höchstwahrscheinlich beschädigt wird, habe ich eine neue mdb, und nur importierte Tabellen (siehe Anhang), Abfragen, Scripts (nur eine), Module und Menüs. Dann habe ich LoadFromText zu importieren Formulare und Berichte über eine Funktion, und tat dann die übliche decompile / Kompilierung und compact / Reparatur etc.

Bisher Touch Holz, ich habe nicht ein anderen Absturz in einigen Tagen hatte, so dass ich wahrscheinlich mit dieser Wiederherstellungsmethode haftet.

Vielen Dank allen für Ihre Anregungen.

Andere Tipps

Das VBA-Projekt in Ihrem Frontend ist wahrscheinlich beschädigt. Sie müssen es von Grund auf neu erstellen und dann die richtige Zugang Codierpraktiken verwenden:

  1. in VBE-Optionen deaktivieren KOMPILIEREN ON DEMAND (siehe Michael Kaplan Artikel über DEKOMPILIEREN für Details, warum).

  2. in VBE Optionen, aktivieren Sie Variablendeklaration erforderlich.

  3. in der VBE, die Symbolleiste anpassen, so dass die COMPILE Taste leicht zugänglich ist (es ist auf dem Debug-Menü). Ich empfehle auch die CALL-Taste STACK Hinzufügen (aus dem Menü Ansicht), wie es für das Debuggen von Fehlern im Pause-Modus praktisch ist. Der Punkt hier ist, um das Debuggen und so einfach wie möglich zu kompilieren.

  4. Nachdem Sie Ihre Umgebung einrichten, gehen durch alle Module in Ihrem neu gewonnene Projekt und fügen Sie Option Explicit an die Spitze jedes Modul, das es fehlt. Dann kompilieren. Sie werden schnell herausfinden, wo Sie ungültigen Code haben, und Sie werden es beheben müssen.

  5. von jetzt an, bei der Programmierung, häufig kompilieren, nach jeweils zwei oder drei Zeilen Code. Ich wahrscheinlich mein Projekt 100 oder mehrmals am Tag kompilieren, wenn Codierung.

  6. periodisch decompile Ihr Projekt und kompakt und neu kompilieren. Dies wird reinigt jede crud dass ansammelt während der normalen Entwicklung.

versichern Diese Praktiken, dass der Code in einem nicht-korrupten Projekt Aufenthalten in so sauber einen Zustand, wie möglich. Es wird nichts tun, um ein bereits beschädigtes Projekt zu gewinnen.

Im Hinblick darauf, wie das Projekt neu zu erstellen, ich glaube, ich den drastischen Weg gehen würde, alle Objekte mit Application.SaveAsText exportieren und sie in eine neue leere Datenbank mit Application.LoadFromText importieren. Das ist besser als einfach von Ihrem vorhandenen beschädigten Front-End zu importieren, da der Import korrupte Strukturen importieren kann, die keine SaveAsText / LoadFromText Zyklus überleben.

I-Programm täglich in Access, die Arbeit mit nicht-triviale Anwendungen, dass die Verwendung viel Code, darunter viele eigenständige Klassenmodule. Ich habe nicht ein Objekt Code Korruption in mehr als 5 Jahren verloren, und das war wieder in dem Tag, als ich noch A97 benutze.

Nachdem über diese alte Post von mir ausgelöst, und zu sehen, es ist ein gutes Stück von Interesse hat, dachte ich, vielleicht ein Update, um sein würde?

So 2 Jahre auf der Bahn zu tun, viel 2007 app Arbeit sowie älter 2003 (und sogar '97) Apps, ich finde, dass 2007 weniger anfällig für wirklich böse Abstürze als 2003 - in der Access-Objektdefinitionen (Formulare und Berichte esp.) würden leicht beschädigt.

ich noch den Vorschläge 1-6 (siehe oben) durch David-W-Fenton religiös obwohl folgen, sowie die Verwendung von Application.SaveAsText (siehe Tony Toews' Vorschlag und Link oben).

In diesen Tagen, ob es 97, 2003 oder 2007 arbeite ich an, wenn Zugang gibt alle Hauch von „ ist seltsam | Krachen | unerklärliche Fehler werfen “etc, ich die folgenden:

  1. Unmittelbar schließen Sie die App
  2. Backup der mdb / accdb Datei
  3. Öffnen Sie erneut die App bei gedrückter [Shift], so dass nichts läuft
  4. Export alle Objekte als Text mit Application.SaveAsText (als ein anderes Backup)
  5. Schließen und erneuten Öffnen der App, den / decompile Schalter mit
  6. Recompile der VBA-Code
  7. Führen Sie eine Compact / Reparatur.

Das ist nicht alles zu lösen, aber es ist deutlich die Anzahl der Verfälschungen von Access reduziert Objekte von dem, was ich bin in der Lage zu beobachten.

Oh mein.

arbeite ich in einem Geschäft seit vielen Jahren, den Zugang als Plattform der Wahl eingesetzt. Die Anwendung schließlich so groß bekam, dass es begann eine interne Speicherzugriffsbeschränkungen treffen 2003. Sie begann genau das gleiche Problem auftritt, dass Sie haben. Wie Sie bemerkt haben, gibt es keinen externen Hinweis auf Probleme mit dem Speicher, wenn dies geschieht.

Das Unternehmen sprach ausführlich mit Microsoft über das Problem, und ich glaube, Microsoft versorgen sie schließlich mit einem Patch. So möchten Sie vielleicht Microsoft darüber sprechen, wenn es wie eine ähnliche Situation klingt, was Sie erleben, wie sie in der Lage sein, können Sie mit dem gleichen Patch zu liefern.

Letztendlich ist die langfristige Lösung ist die Anwendung in kleinere Stücke zu brechen. Der Umzug in Access 2007 nicht helfen; in der Tat, machte es noch schlimmer, weil Access 2007 mehr beweglichen Teile hat.

Schnelle Lösung; garantiert Arbeit:

Öffnen VBA (Alt-F11) In unmittelbarer Fenster geben Sie die folgende:

Application.SaveAsText acForm, "corrupt form name here", CurrentProject.Path & "\zzTempRevive"

dann

Application.LoadFromText acForm, "corrupt form name here", CurrentProject.Path & "\zzTempRevive"

Das ist es :) Hoffe, das hilft anderen!

Dies ist auch die Standard-Fehlermeldung, wenn Access keine Ahnung hat, was das Problem tatsächlich ist. Nun, wenn Ihr MDB besonders groß ist, sagen mehr als 800 Formulare und Berichte mit Modulen dann, ja die MDB zu groß sein könnte, obwohl, dass Sie gab eine Nachricht, wenn Sie ging MDEs zu erstellen. ACC2000: "Microsoft Access konnte keine MDE-Datenbank erstellen" Fehlermeldung

Ich habe dies gelegentlich selbst geschehen habe. Und meine aktuellen MEB sind nicht ganz so groß. Beachten Sie, dass kompakte und Reparatur nicht erkennt Fehler in anderen Objekten als Tabellen, Indizes oder Beziehungen. So in einer anderen MDB Import ist der einzige Weg, um diese Fehler zu korrigieren.

Arbeiten Sie an diesem MDB über das Netzwerk? Das ist das einzige, was ich daran denken kann, könnte dieses Problem verursachen.

Ich habe dieses Problem oft begegnet und fand schließlich eine Lösung, die funktioniert. Ich weiß nicht, was das Problem verursacht, aber ich weiß, wie es zu lösen.

In der Regel tritt der Fehler auf, wenn Sie ein Formular öffnen. Was Sie tun müssen, ist völlig diese Form neu erstellen. Der einfachste Weg, dies zu tun ist, zunächst den Export der Form in eine Textdatei mit der undokumentierte Funktion Application.SaveAsText. Dann löschen Sie das Formular aus Ihrer Datenbank und re-load mit Application.LoadFromText.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top