Office: (Office 2000) Nicht genügend Stapelspeicher

Helfe beim Thema Nicht genügend Stapelspeicher in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo allerseits, ich bekomme die Fehlermeldung "Nicht genügend Stapelspeicher". (Die Suche im Forum nach o.g. Fehlermeldung hat mir nicht viel... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Acham, 22. Januar 2008.

  1. Nicht genügend Stapelspeicher


    Hallo allerseits,

    ich bekomme die Fehlermeldung "Nicht genügend Stapelspeicher".
    (Die Suche im Forum nach o.g. Fehlermeldung hat mir nicht viel weitergeholfen)

    Beschreibung:
    In einer DB habe ich ca. 20 Paradox und DBase Datenbanken verknüpft. Diese
    Datenbanken sollen in ACC-tabellen kopiert werden.

    Der Start verläuft über ein Popup-Formular.

    So nun zu der eigentlichen Problembeschreibung.
    Diese Aktualisierung funktionierte schon jahrelang auf mehreren Rechnern (ohne Probleme), egal ob WIN 98, Win XP SP2, mit Off2000 SR oder ohne.
    Meine Kollegin hat jetzt einen neuen Rechner bekommen (1,5 GB RAM)
    und dort kommt nach ungefähr der 6. Aktualisierung o.g. Fehlermeldung.

    Diese Fehlermeldung kann ich mir überhaupt nicht erklären. Kann mir da jemand weiterhelfen?


    Code:
    :)
     
  2. Wäre es wohl möglich, dass du dort, wo du den Stapelüberlauf bekommst, sehr viel mehr Daten kopieren möchtest?
    Ist das nämlich der Fall solltest du über die Benutzung von LIMIT (oder in Access glaube ich TOP) nachdenken, also einfach dafür sorgen, dass weniger Datensätze auf einmal kopiert werden.
     
    Grumbler85, 23. Januar 2008
    #2
  3. Mit der Größe des RAM hat das nichts zu tun. Die Größe des Stacks (Stapelspeicher) legen die Anwendung und Windows fest.
    Normal kommt diese Meldung nur, wenn der Stapel überläuft, was in VBA meist heißt, dass zuviele Funktionsaufrufe stattfanden, ohne dass zurückgekehrt wurde. Sowas passiert, wenn man Prozeduren rekursiv aufruft; also etwa Prozedur 1 ruft Prozedur 2 auf, und die Prozedur3, aber Prozedur 3 ruft wieder Prozedur 1 auf, so dass ein Kreislauf entsteht, in dem sich nie ein End Sub oder End Function ereignet. Die Rücksprungsadressen werden dabei auf den Stapel zwischengespeichert, der so immer größer wird.
    Mit diesem Code, in dem Test1() ausgeführt werden sollte, lässt sich das nachstellen:
    Code:
    Aus deinem Code oben lässt sich nicht klar erkennen, ob sowas passieren könnte. Mag auch an fehlerhafter Installation von Access liegen?
    Mir fällt allerdings auf, dass die Funktion fctkaufmannrunden() in den Insert-Abfragen drin steckt. Ersetze die mal testweise durch ROUND().

    Ciao, Sascha
     
    Sascha Trowitzsch, 23. Januar 2008
    #3
  4. Nicht genügend Stapelspeicher

    Vielen Dank für eure Antworten.

    Wie limitiere ich das Kopieren (zu LIMIT oder TOP habe ich in der Hilfe nichts gefunden) ? Die größte Datenmenge die in eine Tabelle kopiert werden sind ca. 110.000 Datensätze.

    Das mit dem ROUND habe ich ausprobiert, aber es gab keine Veränderung.
    Die Funktion fctkaufmannrunden ist nur dazu da, dass Werte kaufmännisch gerundet werden.
    Rekursive Aufrufe gibt es auch nicht, denn ich habe, wie bei meinem Code-Beispiel, nur die eine Hauptfunktion Aktualisieren() und dann die anderen Unterfunktion genauso aufgebaut wie die anderen 2 Funktionen.

    Ich habe auch mal die Reihenfolge der Aktualisierungen vertauscht, und es gab außer der Fehlermeldung mit dem Stapelüberlauf eine neue Fehlermeldung "1 Parameter wurde erwartet oder es wurden zu wenig übergeben".

    Ich würde sagen, dass an diesem PC Access nach einer bestimmten Anzahl von Aktualisierungen abbricht ???, denn durch die Änderung der Reihenfolge der Aktualisierungen, fällt auf dass die Meldung mit dem Stapelüberlauf bei jeweils anderen Aktualisierungen kommt, die Meldung mit dem Parameter ist zufällig.

    Anscheinend komme ich wohl um eine Neuinstallation nicht drumherum, denn die Aktualisierung funktioniert ja auf anderen PC's einwandfrei.

    Gibt es in der Registrierung Werte zur Stapelgröße?
     
  5. Das steht nicht in der Registry.
    Die Anwendung sieht pro Thread einen Wert von sich aus vor, der von außen nicht zu beeinflussen ist. Beim Erzeugen von Threads (CreateThread-API) der Anwendung muss dazu ein vom Standard 1 MB abweichender Wert angegeben werden. ( http://msdn2.microsoft.com/en-us/lib...74(VS.85).aspx )Ich weiß allerdings nicht, woher VBA seinen Speicher bezieht, ob es also den Stack mit Access teilt, oder einen eigenständigen hat. Sprich, ob die Aktionen unter Access/JET auch den unter VBA verfügbaren Seicher beeinflussen.
    In meiner Testroutine oben ist nach 6800 Aufrufen Schluss. Daraus lässt sich aber nicht der Speicherbedarf errechnen, weil unklar ist, was VBA bei einem Funktionsaufruf alles auf den Stack rettet.

    Nach deiner Beschreibung der Prozedur scheint es sich mir doch um eine Macke von VBA zu handeln, die evtl. mt Reparaturinstallation zu beheben geht. Ist aber nicht auszuschließen, dass der schwarze Peter auch bei Windows liegt.
    Ich kann leider nicht mehr dazu sagen.
    Hier noch ein Link:
    http://msdn2.microsoft.com/en-us/lib...4a(VS.80).aspx
    Kannst auch nach "out of stack space vba" googlen.

    Ciao, Sascha
     
    Sascha Trowitzsch, 24. Januar 2008
    #5
  6. Ich hatte den gleichen Effekt kürzlich bei einer Kopierfunktion und habe folgende Ursache gefunden:

    Wenn ich eine beliebige Anzahl von Datensätzen kopiere, bekomme ich den Laufzeitfehler nicht. Wenn ich aber mit "Do ... Loop" mehrere Datensätze nacheinander bearbeiten will, aber tatsächlich nur ein einziger Datensatz vorhanden ist, die Schleife also eigentlich überflüssig ist, dann tritt bei mir der Fehler auch auf.
     
  7. Das ist ein ziemlich mühsamer Fehler. Habe ich manchmal auch wenn die Anwendung lange läuft, bzw. viele Daten mittels Recordsets bearbeitet werden.

    Ein restlos klares Muster konnte ich aber, ausser bei nem Rekursiven aufruf wie von Sascha erwähnt, noch nicht nachvollzieh.

    Ich vermute, dass Access irgend etwas nicht sauber ausm Speicher löscht. Ich habe bei gewissen Aktionen, trotz sauberen Close-Methoden und Set Nothing immer ein bissel mehr Ram-Auslastung im TaskManager. Bei X-Aktionen und wenn die RAM ca ungefähr über 120MB geht bekomme ich diesen Fehler.

    Überprüfe auf alle Fälle ob du recordset.Close immer ausführst und möglichst bald auch das Set nothing.

    Wo ich meine ihn auch schon gehabt zu haben ist bei der Verwendung von bissel umfangreicheren Queries wenn Access sie nimmer peilt und den Fehler "zu Komplex" feuert wenn man sie in Formulare verwedet, als abfrage aber noch funktionieren. Da lags dann meistens an Outer-Join Verknüpfungen mit NullWerten im ForeignKey. In VBA in der Verwendung von Recordsets wurde dann öfter der Stapelspeicherfehler gefeuert, wenn ich das richtig in Erinnerung habe.

    Damit zusammen hängt noch ein anderer Fehler mit den geöffneten Datenbanken, der tritt auch häufig in Verbindung mit den Recordsets und dem Stapelfehler auf, und zwar dann, wenn sie nicht sauber mit Close geschlossen wurde.

    Alles in allem konnte ich aber wie erwähnt noch kein wirkliches Muster erkennen ausser das es eben "häufig" mit der Verwendung von Recordsets und CurrentDb irgendwie zusammenhängt. Durch programmtechnische Änderungen kriegt man ihn aber meistens irgendwie weg indem man einfach nen anderen weg geht sofern irgendwie möglich. Beheben lässt es sich glaub leider auch nur mit dem Neustart der DB.
     
    WeinGeist, 23. Oktober 2008
    #7
  8. Nicht genügend Stapelspeicher

    Schuss ins Blaue:
    Bei Verwendung von CurrentDb wird ja jedes mal eine Instanz der Datenbank erzeugt. Ob die Instanz in diesem Fall erhalten bleibt (soll angeblich nur beim Erstellen von Recordsets so sein) und ob dabei etwas im Stack hängenbleibt, keine Ahnung.
    Alternativ könntest du es jedenfalls mit
    Code:
    oder aber mit
    Code:
    versuchen ?
     
    Marsu65, 23. Oktober 2008
    #8
  9. Vielen Dank Marsu65 für deine Vorschläge.
    Der besagte PC (von meiner Kollegin) hat jetzt nichts mehr mit den Aktualisierungen zu tun.
    Deshalb kann ich deine Vorschläge auch nicht ausprobieren.
    Auf meinem PC funktioniert ja die Aktualisierung ohne Probleme. Aber ich werde deine Vorschläge berücksichtigen, falls ich bei einem PC wieder mal vor diesem Problem stehen sollte.
     
Thema:

Nicht genügend Stapelspeicher

Die Seite wird geladen...
  1. Nicht genügend Stapelspeicher - Similar Threads - genügend Stapelspeicher

  2. Excels Langsamkeit trotz viel RAM

    in Microsoft Excel Hilfe
    Excels Langsamkeit trotz viel RAM: Hallo Liebe Leute, ich dachte mir heute nach vielen vielen Jahren Excel, ich checke mal ob ich nicht selbst das Problem (vor dem Rechner) bin. Für mein uraltHobby Statistik ist Excel natürlich...
  3. Laufzeitfehler 3035 Nicht genügend Systemressourcen

    in Microsoft Access Hilfe
    Laufzeitfehler 3035 Nicht genügend Systemressourcen: Hallo zusammen. Ich bin Systemadministrator in einem Unternehmen und zwei Mitarbeiter stoßen auf ein Problem auf das ich einfach keine Lösung finde. Die Mitarbeiter sind vor kurzem auf Windows...
  4. #ÜBERLAUF! Fehler: nicht genügend Arbeitsspeicher

    in Microsoft Excel Tutorials
    #ÜBERLAUF! Fehler: nicht genügend Arbeitsspeicher: #ÜBERLAUF! Fehler: nicht genügend Arbeitsspeicher Excel für Microsoft 365 Excel für Microsoft 365 für Mac Excel für das Web Excel für iPad Excel Web App...
  5. Office 365 Nicht genügend Arbeitsspeicher

    in Microsoft Excel Hilfe
    Office 365 Nicht genügend Arbeitsspeicher: Hallo, es ist zum wahnsinnig werden. Warum hat man bei Microsoft mit neuen Programmen Fehler die vorher nie da waren. Nennt man das Fortschritt? Eine Kollegin aus der Finanzbuchhaltung hat von...
  6. Laufzeitfehler'28': Nicht genügend Stapelspeicher

    in Microsoft Excel Hilfe
    Laufzeitfehler'28': Nicht genügend Stapelspeicher: Hallo Excelfreunde Ich habe ein Problem welches ich alleine nicht Lösen kann, und erhoffe mir hier im Forum Hilfe. Es handelt sich hierbei um eine Tabelle welche ich zum Dartspielen verwenden...
  7. nicht genügend Systemressourcen beim komprimieren

    in Microsoft Access Hilfe
    nicht genügend Systemressourcen beim komprimieren: Hallo zusammen, ich hab letzte Tage von meinem Arbeitgeber ein neues Laptop bekommen. 32 GB RAM und 1 TB Platte als SSD. Office 365 Heute habe ich mal versucht eine meine Access Datenbanken (250...
  8. Nicht genügend Speicher beim tippen

    in Microsoft Access Hilfe
    Nicht genügend Speicher beim tippen: Hallo, die Fehlermeldungen mit Nicht genügend Speicher gibt es ja an allen Möglichen Stellen. Ich habe hier aktuell eine Datenbank da kommt die Meldung wenn ich Änderungen am Quellcode vornehmen...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden