vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2021
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Komprimieren der DB = Programmabsturz!? 
Autor: CarloStein
Datum: 07.06.21 18:35

Hallo dem Forum!

VB6 Win10 DAO

Ich habe ein Problem folgender Art: möchte ich eine Datenbank (DAO) komprimieren stürzt mein Programm ab!
Ich verwende folgende Befehlszeile: CompactDatabase dbName, Quelle & ".$$$" (Tipp ist vom Dieter)
Bei der kleinen Datenbank funktioniert es gut, aber bei der großen Datenbank hängt sich das Programm auf.
Die Datenbank hat 238 MB

Wer weiß woran das liegen könnte?

LG Karl

P.S.:
Wie könnte ich sonst noch sicherstellen, dass die Anzahl Datensätze in Tabelle.RecordCount auch den tatsächlichen vorhandenen Datensätzen entspricht?

Beitrag wurde zuletzt am 07.06.21 um 18:57:32 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Komprimieren der DB = Programmabsturz!? 
Autor: Souffleurlos
Datum: 07.06.21 19:49

Hallo Carlo,
bei kleinen DB funkt es, bei einer großen Nicht deutet darauf hin, dass noch einen Datenzugriff auf die DB hast und Eu zum gleichen Zeitpunkt aber Compakteatabase ausführen willst. Das geht meistens in die Hose. Ich würde wartn bis Access selhst die DBName.TMP gekillt hat und dann dies EAO-Methode ausführen lassen.

Eine Access-DB ist im Multiuse-Hetrieb fast so schwer zu steuern wie eine Multithreaded-ELL.

Beitrag wurde zuletzt am 07.06.21 um 19:55:40 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Komprimieren der DB = Programmabsturz!? 
Autor: CarloStein
Datum: 07.06.21 20:42

Hallo Souffleurlos!

Vorerst Danke für deine Hilfe. Ich führe die Komprimierung nur bei einer geschlossenen Datenbank durch. Es bestehen zur Zeit der Komprimierung keinerlei Zugriffe. (Funktioniert ja auch bei der kleineren DB) und das mit dem selben Code!!)

LG Karl
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Komprimieren der DB = Programmabsturz!? 
Autor: Souffleurlos
Datum: 08.06.21 17:34

Hallo,
ich würde Dir trotzdem die Beobachtung der *.tmp-Datei empfehlen. Ist diese sichtbar, schreibt Access daten aus dem Puffer. Wird diese *.tmp von der DBEngine gelöscht, erst dann funktionieren globale Methoden mit der DB. Dieser Prozess dauert umso länger, je größer die DB ist. Eine DB.Close schließt die EB, aber damit den Cache noch lange nicht. Ich hatte zu meinen Beginner-Zeiten ähnliche Erfahrungen mit Access gemacht. Ich war erstaunt, wie lange sich Access überhaupt Zeit für sowas nimmt.

Als Pseudo-Code

DB.Close
Do 
   If Dir("DB.TMP") <> "" Then
     DoEvents
   Else
     DBEngine.CompactDataBase( ... )
     Exit Do
   End If
Loop
Nach deinen Angaben ist das Verhalten: Bei kleinen DB funktioniert es, typisch für Access, dass dise
einfach mehr Zeit für den Cache braucht.

Um welche Größen geht es:
Access > 0,5 GB Ab 2.0 GB ist Access faktisch nicht mehr 100% handelbar und muss umverteilt werden

Beitrag wurde zuletzt am 08.06.21 um 17:45:52 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Komprimieren der DB = Programmabsturz!? 
Autor: CarloStein
Datum: 09.06.21 11:24

Hallo Souffleurlos!

Nochmals danke für deine Bemühungen;

Ich habe das Problem erkennen können. Und zwar speichere ich in der großen DB (DAO) auch Bilder. Das Feld für die Bilder hat 1,2 MB und das ist das Problem. Nach unzähligen Klärungsversuchen habe ich die selbe Datenbank ohne das Feld für die Bilder erstellt und siehe da, es funktioniert. Also liegt es an der Übergröße der Datenfelder für die Bilder.

Was mich aber leider auch nicht weiter bringt, da ich ja von Zeit zu Zeit eine Komprimierung durchführen möchte - was so allerdings nicht möglich ist. Will ich die betroffene DB in eine neue DB schreiben und diese dann wieder umbenennen funktioniert das auch nicht. Auch beim Umschreiben stürzt das Programm ab. Schreibe ich ohne das große Datenfeld um - geht es ausgezeichnet.

Danke für deine Wortmeldung und dein Bestreben mir zu helfen.

LG Karl
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Das kommt hin, 
Autor: Souffleurlos
Datum: 09.06.21 16:20

dass da Blobs eine Rolle spielen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Komprimieren der DB = Programmabsturz!? 
Autor: CarloStein
Datum: 09.06.21 18:06

Hallo Souffleurs,

ich hoffe du findest mich nicht naiv, wenn ich dir sage, dass ich mit Blobs nichts anfangen kann.
Für das Schreiben der Datenbank (Daten) in eine "neue" Datenbank habe ich eine Lösung gefunden. Das funktioniert ohne Probleme, wenn ich nach jedem Datensatz der geschrieben wurde, die Datenbank schließe und wieder öffne.
Nur die Komprimierung funktioniert noch nicht! Aber durch das Schreiben in eine "neue" Datenbank brauche ich keine Komprimierung mehr durchführen!

Ich danke dir für deine Geduld einem Anfänger zu helfen.

LG Karl
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2021 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel