| |
Visual-Basic EinsteigerKomprimieren 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. | |
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. | |
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 | |
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. | |
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 | |
Das kommt hin, | | | Autor: Souffleurlos | Datum: 09.06.21 16:20 |
| dass da Blobs eine Rolle spielen. | |
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 | |
| 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 |
|
|
Neu! sevCoolbar 3.0
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|
|
|
Copyright ©2000-2024 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
|
|