collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 68
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 1
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 14542
  • stats Beiträge insgesamt: 72938
  • stats Themen insgesamt: 9848
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 443

Autor Thema: Nicht genügend Systemressourcen  (Gelesen 466 mal)

Offline herb54

  • Access-Profi
  • **
  • Beiträge: 102
Nicht genügend Systemressourcen
« am: Juni 26, 2019, 14:44:23 »
Hallo ,
ich erhalte auf meinem Rechner Lenovo ideapad320 folgende Fehlermeldung beim Ausführen einer Abfrage:
Nicht genügend Systemressourcen

Die Abfrage sieht in SQL so aus:
SELECT tblMPU.Rechnungsdatum, tblMPU.RNr, tblMPU.Nachname, tblMPU.Vorname, tblMPU.Sonstiges, tblMPU.Straße, tblMPU.PLZ, tblMPU.Ort, tblMPU.Vereinbarter_Preis, tblMPU.DatumB, tblMPU.BetragB, DatePart("q",[DatumB]) AS Qaurtal, Year(Date())-1 AS Ausdr1, DateSerial(Year(Date())-1,12,31) AS Ausdr2
FROM tblMPU
WHERE (((tblMPU.Rechnungsdatum)>2016) AND ((tblMPU.DatumB)>DateSerial(Year(Date())-1,12,31)) AND ((DatePart("q",[DatumB]))=[Bitte geben Sie das Quartal ein: (1=Jan,Feb,Mär)]))
ORDER BY tblMPU.Nachname;

Was sehr merkwürdig ist, das die Abfrage auf meinem anderen Rechner einem Lenovo Yoga einwandfrei funktioniert. Ich arbeite mit dieser Abfrage nun schon seit zwei Jahren auf dem Lenovo ideapad320 und bisher gab es noch nie Probleme (außer das die Anzahl der Dateisperrungen überschritten wurde - hier habe ich in der regedit bei MaxLocksPerFile den Wert mittlerweile auf 30000 stehen). Die Abfrage bezieht sich auf die Tabelle tblMPU die ca. 18000 Datensätze enthält.
Was auch merkwürdig ist: Wenn ich "Datenbank komprimieren und reparieren zweimal" durchführe funktioniert die Abfrage plötzlich wieder. Einen defekt an der Datenbank wäre das wahrscheinlichste - aber warum funktioniert die Abfrage auf dem Lenovo Yoga einwandfrei?
Was ich bisher außerdem durchgeführt habe:
- versucht in der msconfig den Wert des MaximalenSpeicher (Systemkonfiguration - Start - Erweiterte Optionen - MaximalerSpeicher) erhöhen - das funktioniert überhaupt nicht beim ideapad320 - der Wert verändert sich ständig d.h. gebe ich den maximalen Wert von 8192 ein und gehe auf OK und Übernehmen - Neustart, dann ist dieser Wert beim nächsten Mal auf einer beliebigen Zahl d.h. ich kann diesen Wert gar nicht korrigieren (sehr seltsam). Ich habe jetzt das Kontrollkästchen dort nicht selektiert bei "Maximaler Speicher"d.h. der Speicher dürfte nicht begrenzt werden (so ist die Einstellung auch beim Lenovo Yoga).

Der einzige Unterschied zum Yoga ist der, dass ich beim Lenovo sämtliche Windows 10 Updates installiert habe.
Auch bei älteren Programmdateien vom April 2019 (ich mache regelmäßig Kopien) funktioniert die Abfrage auf dem Lenovo plötzlich nicht mehr.
Wäre super wenn mir jemand einen Tipp geben könnte!
Grüße
Herbert
 

Online DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23948
Re: Nicht genügend Systemressourcen
« Antwort #1 am: Juni 26, 2019, 20:10:43 »
Hallo,

was mir zunächst auffällt:


Zitat
tblMPU.Rechnungsdatum)>2016

ist "Rechnungdatum" wirklich ein Integer/Long-Datentyp?


Zitat
Der einzige Unterschied zum Yoga ist der, dass ich beim Lenovo sämtliche Windows 10 Updates installiert habe.

Dann bring halt den "Yoga" auf neuesten OS-Stand...

Offline herb54

  • Access-Profi
  • **
  • Beiträge: 102
Re: Nicht genügend Systemressourcen
« Antwort #2 am: Juni 26, 2019, 22:09:56 »
Hallo Franz,
oh nein jetzt habe ich hier auch noch eine falsche Version eingestellt (muss wohl was mit der Hitze zu tun haben). Dies hier ist die Version der Abfrage  die auf dem Yoga läuft und auf dem ideapad320 nicht:

SELECT tblMPU.Rechnungsdatum, tblMPU.RNr, tblMPU.Nachname, tblMPU.Vorname, tblMPU.Sonstiges, tblMPU.Straße, tblMPU.PLZ, tblMPU.Ort, tblMPU.Vereinbarter_Preis, tblMPU.DatumB, tblMPU.BetragB, DatePart("q",[DatumB]) AS Qaurtal, Year(Date())-1 AS Ausdr1, DateSerial(Year(Date())-1,12,31) AS Ausdr2
FROM tblMPU
WHERE (((tblMPU.DatumB)>DateSerial(([Bitte geben Sie das Jahr an:])-1,12,31)) AND ((DatePart("q",[DatumB]))=[Bitte geben Sie das Quartal ein: (1=Jan,Feb,Mär)]))
ORDER BY tblMPU.DatumB;

Eigentlich ist es ja so, dass auf dem Rechner der alle Updates hat das Ganze nicht läuft - das ist ja das seltsame!
Danke für den Hinweis!
Grüße
Herbert
 

Online DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23948
Re: Nicht genügend Systemressourcen
« Antwort #3 am: Juni 27, 2019, 12:31:52 »
Hallo,

dann versuch, schrittweise das Problem einzugrenzen:

zuerst nur Selectliste ohne berechnete Felder und ohne Kriterien,  dann berechnete Felder nacheinander hinzu, dann einfaches (Test-)Kriterium hinzu, dann erstes Parameter-Kriterium hinzu, zuletzt beide Kriterien hinzu.....

Offline herb54

  • Access-Profi
  • **
  • Beiträge: 102
Re: Nicht genügend Systemressourcen
« Antwort #4 am: Juni 27, 2019, 18:11:28 »
Hallo Franz,
ich habe schrittweise die Abfrage durchgeführt wie von Dir beschrieben. Der Ressourcenfehler kam trotzdem: Wenn ich nur die Auswahlfelder ohne Berechnung nehme erscheint kurz die richtige Anzeige und anschließend wird alles mit "#" aufgefüllt und die Fehlermeldung kommt trotzdem.
Ich glaube jedoch den Fehler gefunden zu haben:
Die Tabellenfelder der Tabelle tblMPU auf die sich die Abfrage bezieht wurden vorher über VBA über ein Recordset aufgebaut. Dazu wurde diese Tabellenfelder vorher gelöscht (über VBA) und anschließend über ein Recordset neu erstellt. Im Prinzip ist dies doch exakt die Vorgehensweise (nur manuell über VBA) wie bei einer Tabellenerstellungsabfrage (denke ich mal?).
Wie ich jetzt nachgelesen habe wird dabei der Speicherplatz nach dem Löschen jedoch erst freigegeben (entgültig gelöscht) durch "Datenbank komprimieren und reparieren" - was ich jetzt vorher auch nicht gewusst habe. Bei 18478 Datensätzen kommt dann natürlich allerhand was zusammen. Daher funktionierte das Ganze auch nach zweimaligem Durchführen von
"Datenbank komprimieren und reparieren" (einmal nach dem Löschen und einmal nach dem Erstellen). Ich habe jetzt die tblMPU verkleinert und ein Archiv für ältere Versionen angelegt. In der verkleinerten Version funktioniert die Abfrage sogar ohne "Datenbank komprimieren und reparieren". Für Deine Hilfe noch mal vielen Dank!
Gruß
Herbert
PS: Noch eine kurze Nachfrage: Gibt es die Möglichkeit "Datenbank komprimieren und reparieren" über VBA durchzuführen?
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 2236
Re: Nicht genügend Systemressourcen
« Antwort #5 am: Juni 27, 2019, 18:50:47 »
Hallo Herb,
Schau mal hier http://www.donkarl.com?FAQ6.6
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline ebs17

  • Access Guru
  • ****
  • Beiträge: 1197
Re: Nicht genügend Systemressourcen
« Antwort #6 am: Juni 27, 2019, 19:25:44 »
Wenn man während der Laufzeit komprimieren muss, hat man im Vorfeld schon etwas falsch gemacht.

Die gezeigten einfachen Abfragen mit 18k Datensätzen geben nichts her, was auf einen Speicherüberlauf schließen lassen könnte. Eher werden im Vorfeld Leichen vergraben, wo es dann vielleicht nur einen kleinen Anstoß braucht.

Zitat
Die Tabellenfelder der Tabelle tblMPU auf die sich die Abfrage bezieht wurden vorher über VBA über ein Recordset aufgebaut. Dazu wurde diese Tabellenfelder vorher gelöscht (über VBA) und anschließend über ein Recordset neu erstellt.
Das klingt sehr umständlich und birgt Gefahren (offen gelassenes Recordset), wäre also wert, näher beleuchtet zu werden => Sinn, Ablauf, technische Ausführung.
Mit freundlichem Glück Auf!

Eberhard
 

Offline herb54

  • Access-Profi
  • **
  • Beiträge: 102
Re: Nicht genügend Systemressourcen
« Antwort #7 am: Juni 28, 2019, 19:24:06 »
Hallo zusammen,
Ekkehard:
Schade, dass dies über VBA nicht einfacher geht mit der Komprimierung.

Eberhard:
Hatte mir das mit einer Tabellenstellungsabfrage überlegt, aber irgendwie fand ich die Lösung über Recordset einfacher. Hier mal ein Auszug (Ende des Recordsets):

xs!BetragB = vs!Bezahlt11
xs.AddNew
xs.Update
vs.MoveNext
Loop ' Dies ist eine größere Schleife mit Berechnungen und Zuordnungen
End If

xs.Requery

xs.Close
Set xs = Nothing
vs.Close
Set vs = Nothing

Meldung = MsgBox("Alle Datensaätze erstellt", vbOKOnly)
'Err_Befehl26_Click:
'MsgBox Err.Description
'Resume Exit_Befehl26_Click
End Sub

Eigentlich geht die Abfrage jetzt nach Verkleinerung der Tabelle tblMPU jetzt einwandfrei - sogar ohne Komprimierung. Schon etwas merkwürdig!

Grüße und vielen Dank!
Herbert
 

Offline ebs17

  • Access Guru
  • ****
  • Beiträge: 1197
Re: Nicht genügend Systemressourcen
« Antwort #8 am: Juni 28, 2019, 22:50:07 »
xs.AddNew
xs.Update
Fehlt da nicht etwas, oder ist Selbstbeschäftigung Programm?

xs.RequeryWozu braucht man das?

Zitat
Hier mal ein Auszug
Wenn Du meinst, dieses Fragment ist bereits der kritische Teil, dann ändere das doch. Ansonsten: Fein, dass man sich mit dem "Werk" in Gänze nicht auseinandersetzen muss.

Vielleicht sollte man aber noch die Überlegung in hinreichender Form voranstellen, wozu man überhaupt eine neue Tabelle braucht.
« Letzte Änderung: Juni 29, 2019, 09:24:36 von ebs17 »
Mit freundlichem Glück Auf!

Eberhard
 

Offline Milvus

  • Access-Profi
  • **
  • Beiträge: 136
Re: Nicht genügend Systemressourcen
« Antwort #9 am: Juli 01, 2019, 08:45:47 »
SELECT tblMPU.Rechnungsdatum, tblMPU.RNr, tblMPU.Nachname, tblMPU.Vorname, tblMPU.Sonstiges, tblMPU.Straße, tblMPU.PLZ, tblMPU.Ort, tblMPU.Vereinbarter_Preis, tblMPU.DatumB, tblMPU.BetragB, DatePart("q",[DatumB]) AS Qaurtal, Year(Date())-1 AS Ausdr1, DateSerial(Year(Date())-1,12,31) AS Ausdr2
FROM tblMPU
WHERE (((tblMPU.DatumB)>DateSerial(([Bitte geben Sie das Jahr an:])-1,12,31)) AND ((DatePart("q",[DatumB]))=[Bitte geben Sie das Quartal ein: (1=Jan,Feb,Mär)]))
ORDER BY tblMPU.DatumB;

Herbert

Ich glaube das Problem liegt in der Abfrage. Dort werden mehrfach Umformatierungen vorgenommen. Zuerst im SELECT, dann in der WHERE. Und dann wird noch nach Datum sortiert, auch kein Performance-Liebling.

Ich würde folgendes Versuchen:

Eine Abfrage vorschalten, in denen alle Datumswerte einmalig korrekt formatiert usw. werden. In der zweiten dann wieder das Select auf die bereits berechneten Felder (ist erst mal ne Nullsumme). Der eigentliche Vorteil liegt in der Where, da dort dann nicht mehr kalkuliert werden muss. Kann mir vorstellen, dass das Szenario ungünstig ist. Ich meine insbesondere die Doppelkalkulation bei Date-Part, dass kann man sich mit einer Vorabfrage mit einmaliger Kalkulation sparen.

Lass mal OrderBy weg und betrachte den Unterschied (Zeit messen).

was auch noch helfen kann: Den gesamten Datenoutput (ohne Where aber mit berechneten Feldern) in eine Temptabelle zwischen speichern. Ich kenne Kollegen, die machen das furchtbar gerne. ich persönlich bin aber der Ansicht, dass das in dem meisten Fällen nicht notwendig ist und die Komplexität unnötig erhöht, hat man doch erst mal verstanden, dass jedes Select eine - wenn auc h virtuelle - Tabelle liefert, also das was man braucht. Jedenfalls die Tabelle dann wieder mit der WHERE neu abfragen.

Meine Prohezeihung: Kein Unterschied zu einem direkten Select.
 

 

Kann aktuellen DS nicht drucken

Begonnen von cyco7Board Formular

Antworten: 8
Aufrufe: 4426
Letzter Beitrag Juli 17, 2011, 16:49:03
von TMC
Objekterstellung durch ActivX-Komponente nicht möglich

Begonnen von -Tom-Board Access Programmierung

Antworten: 6
Aufrufe: 6882
Letzter Beitrag März 04, 2011, 19:29:49
von database
DB Absichern klappt nicht richtig

Begonnen von ThomMBoard Access-Hilfe

Antworten: 4
Aufrufe: 4632
Letzter Beitrag Mai 06, 2010, 10:24:07
von ThomM
Kunden auslesen, welche nicht ware von einem Lieferanten bekommen haben.

Begonnen von GuidoBoard Tabelle/Abfrage

Antworten: 9
Aufrufe: 7282
Letzter Beitrag Mai 11, 2010, 10:35:10
von Guido
Objekt Date and Time Picker wird nicht erkannt

Begonnen von Muhtar99Board Access-Hilfe

Antworten: 2
Aufrufe: 6334
Letzter Beitrag Mai 12, 2010, 08:07:43
von Muhtar99

Advertisment / Werbung - Amazon Affiliate Links