Datensätze mit Anlagefeldern vollständig löschen (Access)

Michael @, Mittwoch, 13.02.2019, 12:42 (vor 33 Tagen)

Hallo zusammen,
ich habe eine Tabelle mit einem Anlagefeld. Wenn ein Datensatz in dem eine Anlage abgelegt ist, gelöscht wird, bleibt offensichtlich die Anlage in der Datenbank, denn auch nach dem Komprimieren bleibt die Dateigröße gleich wir vor dem Löschen.
Wenn ich die verbleibenden Datensätze in eine neue Tabelle kopiere und die alte Tabelle lösche, schrumpft die Dateigröße.
Fragen:
kann ich die offensichtlich verwaisten Anlagen nachträglich löschen?
Wie kann ich einen Datensatz so löschen, dass auch der Inhalt von Anlagefeldern komplett verschwindet?

Danke für Hinweise

Gruß
Michael

Datensätze mit Anlagefeldern vollständig löschen

Martin Asal @, Mittwoch, 13.02.2019, 14:41 (vor 33 Tagen) @ Michael

Hallo Michael,

nicht, dass ich ein Freund von Anlagefeldern wäre, aber ich kann das von dir beschriebene Verhalten nicht nachvollziehen.

Möglicherweise erwartest du, dass beim Komprimieren die Datenbank um exakt die Größe der Anlage schrumpft. Aber das lässt sich nicht so genau sagen. Das geht eher so schubweise, und hat wenig mit der Anzahl der gelöschten (Mega)bytes zu tun, denn Access speichert die Daten in einem eigenen, halbwegs kompakten Binärformat.

Martin

Datensätze mit Anlagefeldern vollständig löschen

Michael @, Mittwoch, 13.02.2019, 14:49 (vor 33 Tagen) @ Martin Asal

Hallo Martin,
es handelt sich nicht um kleine Ändeungen.
Im Bestand sind einige Hundert Datensätze mit je einem Bild von ca.10 MB. Wenn ich davon 100 Datensätze lösche, bleibt die Datei gleich groß. Wenn ich aber wie beschrieben die restlichen Datensätze in eine neue Tabelle kopiere, schrumpft der Umfang stark.

Gruß Michael

Datensätze mit Anlagefeldern vollständig löschen

Martin Asal @, Mittwoch, 13.02.2019, 16:40 (vor 33 Tagen) @ Michael

Ich habe eine accdb, die 112 MB groß ist, in einer anderen, neuen accdb in ein Anlagenfeld gesteckt. Die neue accdb ist dabei nur um 16 MB größer geworden! Access scheint also Anlagen sogar komprimieren zu können.

Danach habe ich diese Anlage wieder gelöscht, die accdb mit dem Anlagefeld komprimiert, und sie war danach wieder so groß wie zuvor.

Fazit: Anlagen werden definitiv wirklich beim Löschen aus der Datenbank
gelöscht. Und wie schon seit Urzeiten sagt die Dateigröße nicht viel über den Inhalt einer Accessdatei aus.

In Zeiten, in denen Speicherplatz keine Rolle mehr spielt, ist das ohnehin egal. Das Komprimieren ist eher wichtig, damit Access intern Einiges aufräumt.

Martin

Datensätze mit Anlagefeldern vollständig löschen

Michael @, Mittwoch, 13.02.2019, 18:44 (vor 33 Tagen) @ Martin Asal

Hallo Martin,
hast du die Anlage gelöscht oder den kanzen Datensatz mit der Anlage?
Das Problem ist klar:
Wenn VOR dem Löschen des Datensatzes die Anlage aus dem Anlagefeld gelöscht wird, funktioniert alles so wie du es beschrieben hast.
Wenn aus irgendwelchen Gründen der Datensatz gelöscht wird ohne das Anlagefeld vorher zu leeren, bleibt ie Anlage irgendwo hängen.

Gruß
Michael

Datensätze mit Anlagefeldern vollständig löschen

Martin Asal @, Donnerstag, 14.02.2019, 08:59 (vor 32 Tagen) @ Michael

hast du die Anlage gelöscht oder den kanzen Datensatz mit der Anlage?

Ich habe beides getestet. Außerdem auch das Löschen des Feldes aus der Tabelle selbst.

Es wäre auch mehr als erstaunlich, wenn die Anlage irgendwie in der Datenbank verbleiben würde, denn intern erstellt Access für ein Anlagenfeld eine gut versteckte Tabelle mit referenzieller Integrität auf deine Tabelle. Einen Verstoß gegen die referenzielle Integrität lässt Access aber gar nicht erst zu, schon von daher würde eine Löschweitergabe erfolgen.

Martin

RSS-Feed dieser Diskussion
powered by my little forum