Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank (https://www.delphipraxis.net/194009-fehler-zu-wenig-arbeitsspeicher-beim-fuellen-der-datenbank.html)

p80286 5. Okt 2017 21:40

AW: Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank
 
Da eigentlich alles wichtige schon geschrieben wurde, noch eine Kleinigket, es fehlt das "Closefile".

Gruß
K-H

hoika 5. Okt 2017 21:45

AW: Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank
 
Hallo,
vielleicht hilft ja auch ein

form1.DataSet1.DisableControls

aber wie schon vorher gesagt -> TQuery benutzen

jobo 5. Okt 2017 22:36

AW: Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank
 
Zitat:

Zitat von hoika (Beitrag 1382733)
Hallo,
vielleicht hilft ja auch ein

form1.DataSet1.DisableControls

Also das DisableControls wäre das Minimum. Wer will 100T Datensätzen beim Import zusehen?
Und wer will sie nachher sehen? (EnableControls nach Import)

Eine UI Bindung gehört da gar nicht hin. Ist aber ja auch nur Spekulation, dass eine da ist.

TigerLilly 6. Okt 2017 08:36

AW: Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank
 
Was hat dein Dataset denn für einen Typ?
Wie sieht die Datenbankanbindung aus?

Thomas2017 6. Okt 2017 11:56

AW: Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank
 
Hallo,
ich habe die Hinweise von euch entsprechend ausprobiert/getestet.

1. alle 1000 Datensätze ein Transaction1.Commit -> Fehler tritt weiterhin auf
2. -> form1.DataSet1.DisableControls -> Fehler tritt auch auf

Nur zur Info:
An dem Dataset hängt nichts mehr dran.
Ich habe das MiniProgramm lediglich zum Befüllen der Datenbank mit Daten aus der besagten Textdatei.

@TigerLilly
Ist ein TIBDataSet, ein TIBDatabase und ein TIBTransaction, wenn Du das meintest mit der Frage.

TigerLilly 6. Okt 2017 12:20

AW: Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank
 
Ich vermute, dass dein TIBDataSet immer alle Datensätze enthält, die du appended hast, auch wenn du es zwischendurch schließt + wieder öffnest (was steht denn im SelectSQL?).

Setze das SelectSQL mal auf select .... Where 1<>1. Damit lädt das SelectSQL nach dem schließen/öffnen keine Sätze aus der DB + enthält nur die Sätze, die du angefügt hast.

Alternative:
Anstelle des TIBDataSets kannst du dir ja die insert-statements selber bauen und sie via IBSQL direkt in die Datenbank schreiben. Das geht auch flotter.

hoika 7. Okt 2017 09:01

AW: Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank
 
Hallo,
die Alternative mit der Query wurde bereits gesagt (von mir :))

TigerLilly 7. Okt 2017 09:45

AW: Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank
 
Zitat:

die Alternative mit der Query wurde bereits gesagt (von mir )
Ja, eh, aber erst wenn ich es sage, stimmt es auch. 8-)

Nein, im Ernst, sorry, ich wollte nur extra nochmal darauf hinweisen + nicht mit deinen Lorbeeren hausieren.

Uwe Raabe 7. Okt 2017 10:04

AW: Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank
 
Wenn es wirklich daran liegt, daß die Embedded DB zuviel Speicher braucht, könnte man mal versuchen, die Connection zwischendurch zu schließen und wieder neu zu öffnen.

Bernhard Geyer 7. Okt 2017 11:23

AW: Fehler "Zu wenig Arbeitsspeicher" beim Füllen der Datenbank
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1382781)
Wenn es wirklich daran liegt, daß die Embedded DB zuviel Speicher braucht, könnte man mal versuchen, die Connection zwischendurch zu schließen und wieder neu zu öffnen.

Es muss primär verhindert werden das die gesamte Tabelle in den Speicher geladen wird.
Bei MS Access gabs über ADO die Option Serverseitige Curser zu verwenden damit bei einer TTable-Komponenten nicht der komplette Tabelleninhalt von der Access-Engine nochmal in die Delphi-Teil der Anwendung kopiert wurde. Evtl. gibt das auch bei Interbase.

Ansonsten ist ein TTable-Komponenten nicht zu empfehlen bei Inserts und man sollte Query-KOMponenten mit angepassten INSERT-Statements verwenden. Damit ist man 100%ig sicher das nicht versehentlich die ganze Tabelle in den Speicher geladen wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:14 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz