PDA

Vollständige Version anzeigen : Felddatentyp Anlage: Daten löschen über Abfrage


Peter_H7
17.06.2012, 10:40
Hallo Forum,
folgendes Problem: Access 2010 mit einer Tabelle, in der auch ein Feld "Anlagedatei" mit dem Felddatentyp "Anlage" enthalten ist.
Wenn ich nun eine Abfrage habe, in der auch das Feld "Anlagedatei" enthalten ist, kann ich in der Abfrage keinen Datensatz löschen (wird zwar zunächst 'gelöscht', ist nach Aktualisieren aber wieder da).

Kann mir da jemand helfen?

VG Peter

Thomas Möller
17.06.2012, 11:54
Hallo Peter,

folgendes Problem: Access 2010 mit einer Tabelle, in der auch ein Feld "Anlagedatei" mit dem Felddatentyp "Anlage" enthalten ist.
Wenn ich nun eine Abfrage habe, in der auch das Feld "Anlagedatei" enthalten ist, kann ich in der Abfrage keinen Datensatz löschen (wird zwar zunächst 'gelöscht', ist nach Aktualisieren aber wieder da).

kannst Du bitte eine kleine Beispieldatenbank zusammenstellen und dort zeigen, wie Du mit einer Abfrage löscht und wie die Anlage beim Aktualisieren wieder erscheint.

CU

Peter_H7
17.06.2012, 12:51
Hallo Thomas,

die DB ist zu groß...

hier die Details zum Reproduzieren...

Tabelle1
Felder Kunde (Typ: Text) und Anlagen (Typ: Anlage)

Abfrage1
alle Felder aus Tabelle1

-> Abfrage öffnen -> alle DS werden gezeigt, einen DS markieren, Entfernen oder DS löschen, DS scheint gelöscht
Abfrage aktualisieren oder Abfrage/Tabelle öffnen -> DS wieder vorhanden.

Ich hoffe, dass ist verständlich so.

VG Peter

Thomas Möller
17.06.2012, 13:25
Hallo Peter,

hier die Details zum Reproduzieren...

Tabelle1
Felder Kunde (Typ: Text) und Anlagen (Typ: Anlage)

Abfrage1
alle Felder aus Tabelle1

-> Abfrage öffnen -> alle DS werden gezeigt, einen DS markieren, Entfernen oder DS löschen, DS scheint gelöscht
Abfrage aktualisieren oder Abfrage/Tabelle öffnen -> DS wieder vorhanden.

ich bin Deiner Anleitung gefolgt. Bei mir wird der Datensatz endgültig gelöscht. Irgendetwas scheinst Du noch anders zu machen.

CU

Steffen0815
17.06.2012, 13:30
Hallo,
ich kann das glücklicherweise ;) nicht nachvollziehen.

Teste das mal selbst so wie beschrieben in einer neuen DB. Was passiert wenn du den DS in der Tabelle direkt löschst?

Peter_H7
17.06.2012, 14:09
Hi,

ich habs in einer neuen DB getestet: Wenn in der Abfrage nur das eigentliche Feld "Anlagedatei" (Typ Anlage) enthalten ist, kann ein DS gelöscht werden.

Wenn jedoch auch die drei "Unter-Tabellenfelder" wie .FileData, .FileName und .FileType in der Abfrage stehen, kann ich nicht löschen. Und in meiner DB benötige ich die Daten der einzelnen Felder wie .FileName.

Thomas Möller
17.06.2012, 14:28
Hallo Peter,

Wenn jedoch auch die drei "Unter-Tabellenfelder" wie .FileData, .FileName und .FileType in der Abfrage stehen, kann ich nicht löschen. Und in meiner DB benötige ich die Daten der einzelnen Felder wie .FileName.

kann ess ein, dass in einem Anlagefeld mehrere Anlagen gespeichert sind? Dann bekommst du in der Abfrage für jede Anlage jeweils eine Zeile angezeigt. Wenn Du jetzt in der Abfrage eine Zeile löscht, löscht Du damit nur eine Anlage. Der eigentliche DS und die anderen Anlagen bleiben erhalten.

CU

Peter_H7
17.06.2012, 16:31
Nö, leider nicht. Auch wenn das Anlagefeld bei keinem DS ausgefüllt ist, ist das Löschen nicht möglich.
Das Problem besteht nur in der Abfrage; in der Tabelle können die DS problemlos gelöscht werden.

Hat noch jemand eine Idee bzw. kann das Problem bei sich nachvollziehen?

Steffen0815
17.06.2012, 19:04
Hallo,
also ich kann das nachvollziehen (AC2007) und bin entsetzt :entsetzt: .
Werde ich wohl nie von AC97 wegkommen ;).

Andererseits sollten Abfragen nicht zur Anzeige kommen. Leider funktioniert es in einem aufgesetzten Formular auch nicht (direkt).

Alternative: Erstelle einen "Löschknöpf" im Formular und nutze SQL zum Löschen des DS.

Claypool
17.06.2012, 19:04
Hallo!

Ich kann das Problem nachstellen. Sobald nicht nur das Anlagefeld, sondern auch mindestens eines der drei vorhandenen "internen/Sub-" Anlagefelder (FileData, FileName und FileType) vorhanden sind, kann man mögliche, vorhandene Anlagen löschen, aber den eigentlichen Datensatz nicht.

Empfehlung: Keine Anlagenfelder benutzen, sondern eine eigene Anlagenverwaltung aufbauen. Da muss man sich zwar mit dem Thema relationale Datenbank beschäftigen, das kann aber nicht schaden.

Grüße
Ingo

Anne Berg
17.06.2012, 21:55
Hallo miteinander,Empfehlung: Keine Anlagenfelder benutzen, sondern eine eigene Anlagenverwaltung aufbauen. läuft es nicht immer wieder darauf hinaus, dass "Handarbeit" dem vermeintlichen Komfort von derartigen "Specials" im Endeffekt vorzuziehen ist?! Egal ob es um Nachschlagefelder, Anlagefelder oder mehrwertige Datenfelder geht???

Claypool
17.06.2012, 22:39
Hallo Anne!

Ja. Das kann ich nur bestätigen.
Ich wollte einmal ein Memofeld um das Feature "Spaltenverlauf" erweitern (da werden die Einträge historisiert).
Nettes Feature, solange man die Datenbank nicht in Back- und Frontend unterteilt. Wenn man das nämlich macht, dann funktioniert die Historisierung nämlich nicht mehr.
Da es nicht so wichtig war, habe ich darauf verzichtet.

Grüße
Ingo

Atrus2711
18.06.2012, 09:51
Hi,

Access verwaltet Anhänge intern als 1:n-Detailsätze zum "beanlagten" Datensatz. Das Anlagefeld als ganzes wirkt dabei, als sei es Teil des beanlagten Datensatzes; die 3 Teilfelder wirken hingegen wie Teile der internen Detailtabelle.

Und wie bei einer richtigen 1:n-Beziehung auch, genügt es nicht, die Felder der Detailtabelle zu leeren, sondern die Detailsätze müssen weg.

Sprich: beim Löschen nicht die 3 Einzelfelder, sondern das Anlagefeld gesamt löschen. Dann sollte es gehen.

Ceterum censeo: Anlagefelder, Mehrfachwerte und Memofelder mit Changelog sind die Pest. Sie verbergen einen Teil des Informationshaushalts, und wenn man diesen Haushalt braucht oder gar erweitern will (z.B. um eine Anlagefeld-Datei oder eine Memo-Änderung zu kommentieren), stellt man fest, dass man das dann so nicht kann, weil die internen Tabellen quasi unzugänglich sind. Also baut man dann im Nachhinein um, statt es von Anfang an richtig zu machen.