Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: DAU-in am 14.05.08 - 14:59:53

Titel: Bodyfeld überschrieben, alte Attachments werden noch angezeigt
Beitrag von: DAU-in am 14.05.08 - 14:59:53
Hi @all!

ich hänge mal wieder fest.

Bei einer Lese-DB zur Veröffentlichung von Dokumenten (diese werden aus einer anderen DB kopiert) werden gelöschte Attachments (bzw. Attachments deren Richtextfeld überschrieben wurde)  recht unschön angezeigt (siehe Bild).

Das Problem ist jetzt beim Löschen von Attachments jetzt behoben (ich gehe in einer Schleife durch die EmbeddedObjects und lösche das jeweilige Objekt), aber wie komme ich an die alten, sozusagen gelöschten Attachments ran, damit auch die alten Dokumente ohne diese gelöschten Attachments angezeigt werden?


Das Update der Dokumente erfolgte über

         Lesekey = doc.InfoDocID(0)         
            
         Set Lesedoc = Leseview.GetDocumentByKey(Lesekey)      
         If Not Lesedoc Is Nothing Then
            doc.tStatus = "2"
            
            Call doc.Save(True,False)
               
            Call doc.CopyAllItems(Lesedoc,True)
            Call Lesedoc.Save( True, True )            
         End If


Das Bodyfeld, in dem die Attachments eingehängt werden, wurde also einfach überschrieben, die Files selber wurden aber nicht gelöscht. Ich kann auch die $File-Items sehen. Sie haben auch noch die alten Längen. Ich finde aber keinen Unterschied zu einem 'ordentlichen' Attachment. Wenn ich sie öffnen will, kommt ein 'keine Applikation gefunden'., der Dokumententyp scheint entfernt worden zu sein. Wie kann ich jetzt genau diese Attachments feststellen, und diese alten Attachments komplett entfernen, ohne jedes Dokument manuell zu öffnen?

Gerade bin ich ratlos.  :-:

Grüsse

Dau-in
Titel: Re: Bodyfeld überschrieben, alte Attachments werden noch angezeigt
Beitrag von: ata am 14.05.08 - 16:15:31
... da scheinen tatsächlich mehrere Sachen passiert zu sein.

Wenn du alle RichText-Felder löschst, dann hängen die Attachments unter dem Dokument, verlieren aber eigentlich nicht die Dateitypen - da scheint noch was anderes eine Rolle zu spielen...

Toni
Titel: Re: Bodyfeld überschrieben, alte Attachments werden noch angezeigt
Beitrag von: DAU-in am 14.05.08 - 16:51:41
Hi, ata!

irgendwo muss ja die Information stecken, dass diese Files nicht mehr zu dem Bodyfeld gehören, das aktuell in den Dokumenten enthalten ist.

Die Filegrösse etc. stimmt ja.

Was genau passiert ist, kann ich nur ungefähr nachvollziehen an Hand des Codes, der in der DB ist, da ich die DB übernommen habe, und der Fehler letzte Woche gemeldet wurde, da es als 'ist halt so' bekannt war.

Grüsse

Dau-in
Titel: Re: Bodyfeld überschrieben, alte Attachments werden noch angezeigt
Beitrag von: ghost am 15.05.08 - 08:50:14
Ich glaube du kannst mit 

Zitat
notesDocument.GetAttachment( fileName$ )

darauf zugreifen.

Viele Grüße
ghost
Titel: Re: Bodyfeld überschrieben, alte Attachments werden noch angezeigt
Beitrag von: ata am 15.05.08 - 10:27:26
... du übernimmst die Attachments über CopyAllItems - gibt es in deinem Lesedoc-Dokument bereits Rich-Text-Felder mit Attachments? Da könnte es Probleme geben.

Ansonsten, sollten die Felder dort leer sein, dann solltest du sie zuerst löschen.

Ich würde eher dazu neigen die Attachments einzeln auszulösen und zu übernehmen...

Toni
Titel: Re: Bodyfeld überschrieben, alte Attachments werden noch angezeigt
Beitrag von: DAU-in am 15.05.08 - 14:53:53
Hi, Ata,

... du übernimmst die Attachments über CopyAllItems - gibt es in deinem Lesedoc-Dokument bereits Rich-Text-Felder mit Attachments? Da könnte es Probleme geben.

Das war genau das Problem, die Bodyfelder wurden einfach drüberkopiert und zwar jedesmal, wenn einer auf 'Publish' geklickt hat  :-\
dreimal publiziert mit 3 Attachments ergibt dann 3 Attachments im Bodyfeld und
6 verhunzte unten.


Zitat
Ansonsten, sollten die Felder dort leer sein, dann solltest du sie zuerst löschen.

Ich würde eher dazu neigen die Attachments einzeln auszulösen und zu übernehmen...

Toni

So habe ich das auch umgeschrieben, aber die Dokumente, in denen bereits verunstaltete Attachments hängen, sind jetzt das Problem. die Anwender sind das zwar als 'Notes eben' gewohnt, aber mich stört das.

Ich möchte einen Agenten schreiben, der durch die Lese-DB läuft, und erkennt, ob es sich um korrekt eingehängte Attachments handelt.
Und jetzt ist mir unklar, wie ich korrekte von verhunzten Attachments unterscheiden soll? Oder geht das programmatisch nicht?  :-:


Grüsse

Dau-in



Titel: Re: Bodyfeld überschrieben, alte Attachments werden noch angezeigt
Beitrag von: ata am 15.05.08 - 15:55:44
... wenn sie die Dateiendung verloren haben, könnte dies ja ein Kriterium sein...

Toni
Titel: Re: Bodyfeld überschrieben, alte Attachments werden noch angezeigt
Beitrag von: DAU-in am 15.05.08 - 16:18:27
Hi Ata,

die Endung ist noch da. Nur haben die Attachments einen Schlag.

Aber wenn Notes weiss, welche es im Bodyfeld darzustellen hat und welche unten hängen, muss doch irgendwo dazu eine Info gespeichert sein.


Bloss wo?  ???

Grüsse

DAu-in
Titel: Re: Bodyfeld überschrieben, alte Attachments werden noch angezeigt
Beitrag von: ata am 15.05.08 - 16:20:44
... Attachments unter dem Dokument werden über das Dokument initialisiert, ansonsten über das betreffende RichTextItem - damit sollte es eigentlich gehen...

Toni


*** edit ***

... eventuell einen Vergleich der EmbeddedObjects fahren...

Toni
Titel: Re: Bodyfeld überschrieben, alte Attachments werden noch angezeigt
Beitrag von: koehlerbv am 15.05.08 - 16:25:03
Was gibt Dir den @AttachmentNames zurück? Wenn das Resultat noch passt, kannst Du ja eruieren,
- wie die "richtigen Attachments" heissen
- mit Evaluate ein Array aller AttachmentNames bilden und
- dann selektiv löschen.

HTH,
Bernhard
Titel: Re: Bodyfeld überschrieben, alte Attachments werden noch angezeigt
Beitrag von: DAU-in am 15.05.08 - 16:32:32
Danke,

ich werde das am Montag mal ausprobieren, ob ich damit weiterkomme.

Ich bin nämlich seit gestern abend schon im WE  ;)

Irgendwie muss der alte Rotz doch rauszukriegen sein.

Grüsse aus dem gewittrig aussehenden München

Dau-in

Titel: Re: Bodyfeld überschrieben, alte Attachments werden noch angezeigt
Beitrag von: koehlerbv am 15.05.08 - 17:26:04
Klar ist das 'rauszubekommen. Notfalls mit einer brutalen Methode (Toni hat ja schon eine angedeutet). Aber vielleicht kommst Du so ja schon weiter.

Beste Grüsse retour nach München aus dem genauso gewittrigen Chiemgau,
Bernhard
Titel: Re: Bodyfeld überschrieben, alte Attachments werden noch angezeigt
Beitrag von: DAU-in am 19.05.08 - 17:40:25
ok, so klappt es dann:

über var3 = Evaluate(|@AttachmentNames|, doc)
bekomme ich alle Attachmentnamen, danach greife ich auf das Richtextfeld zu, ziehe mir alle Embeddedobjects mit den Namen raus.

Und dann kommt der grosse Namensabgleich, und wer nur im ersten Array sitzt, wird gemeuchelt.

aber die Hilfe finde ich für Notesdocument.EmbeddedObjects missverständlich, oben steht : 'Note  Embedded objects and object links are not supported for OS/2, UNIX, and the Macintosh. File attachments are.'  und unten kommt dann: 'Unlike the EmbeddedObjects property in NotesRichTextItem, this property does not include file attachments' - das habe ich zuerst überlesen.

Aber das Problem ist jetzt erst mal gelöst.

liebe Grüsse

Dau-in