Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Alexis am 04.09.03 - 13:27:21

Titel: Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: Alexis am 04.09.03 - 13:27:21
Hallo,

suche wieder einmal einen Lösungsansatz.

Ich möchte aus einer Datenbank heraus Dokumente einer zweiten Datenbank mehr oder weniger automatisch löschen.

In ersterer ist mir das zu löschende Element insofern bekannt, dass in einem RTF der Link eingetragen ist. Gelingt es nun über diese Kenntnis per Programmierung das Dokument hinter diesem Link zu löschen?

Dank für jeden Tipp

Alexis

Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: ata am 04.09.03 - 13:33:17
... liegt im RTF nur dieser DocLink, oder liegt da noch mehr drin?

ata
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: Alexis am 04.09.03 - 13:52:29
Hallo Ata,

der Link steht einsam und allein im RTF.

Alexis
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: ata am 04.09.03 - 16:18:39
... dann probier es mal mit @Text(Feldname)

ata
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: Alexis am 04.09.03 - 16:56:08
Hallo Ata und Fans,

@Text eines Feldes mit einem Link mag die Funktion nicht --> Error.

Noch 'ne Idee vielleicht?

Alexis
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: koehlerbv am 04.09.03 - 17:10:51
@Text geht logischerweise nicht - ist ja ein RichText item.
Dann muß das ganze ja auch noch LS sein, sonst ist es ja nix mit Löschen von Dokumenten.
Und mit LS fällt mir erstmal auch nix ein - GetFormattedText liest natürlich auch nicht die UNID aus, auf die der Link verweist.

Bernhard
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: koehlerbv am 04.09.03 - 17:14:49
1. Was heißt eigentlich "mehr oder weniger" automatisch ?

2. Gibt es keine anderen Informationen, mit denen das zu löschende Dokument identifiziert werden kann ?

Bernhard
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: Alexis am 04.09.03 - 17:25:58
Hallöchen,

das ist mein Problem: User stellen die Verbindung zweier Dokumente per Dokumenten-Link her. Später entscheiden sich, dass diese Dokumente gelöscht werden sollen (aber bitte nur in einer Stelle, wegen des Suchaufwandes  ;D).

Leider ist es nicht möglich beide Datenbanken zu migrieren, also bleibt "nur" die Frage, wie kann ich aus einem RTF mit einem Dokumenten-Link dessen ID ermitteln, um dann das andere Dokument zu löschen ???

Dank für jede Idee.

Alexis
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: koehlerbv am 04.09.03 - 18:12:29
Bevor ich mir jetzt Gedanken mache: Ist sichergestellt, daß es nur einen DocLink pro Dokument gibt ?

Könnt Ihr eigentlich prinzipiell was an dieser App. ändern (dialogorientierte Aufnahme des zu linkenden Dokuments in einer anderen DB) ?

So long,
Bernhard
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: Alexis am 04.09.03 - 21:01:01
Hallo Berhard,

die Applikation in der der Link eingebunden ist und aus der heraus ich löschen will, kann ich tatsächlich in Eigenregie umbauen.

Es ist sichergestellt, dass in dem Dokument nur ein einziger Link vorhanden ist.

Aus der "anderen" Datenbank (einer Ressourcendatenbank) sollte aber die Verknüpfung per "Copy as Link" über die Zwischenablage in die erstere (wie auch immer) übertragen werden. An Ressourcendatenbank läßt sich nichts ändern (Global App.).

siehst Du da einen Weg?

Alexis
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: koehlerbv am 04.09.03 - 21:06:16
Jo, seh' ich. Aber laß mir bitte bis morgen Zeit - ich geh' jetzt mal in den Feierabend.

Interessant ist Dein Problem aber wirklich !

Bis morgen,
Bernhard
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: Hevelmann am 05.09.03 - 08:58:48
Moin, moin

@ Alexis

damit müsste es klappen:

unid$ = notesRichTextDocLink.DocUNID

findest Du in der Hilfe unter "NotesRichTextDocLink class" ist die Propertie "DocUNID".

Gruss Hevelmann
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: koehlerbv am 05.09.03 - 09:46:02
Zitat
Hinweis  This class is new with Release 6.

Und wir sind im R5-Forum ...
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: Alexis am 05.09.03 - 09:54:32
..... wo diese Methode nicht angeboten wird.

Alexis
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: Hevelmann am 05.09.03 - 09:54:39
hups, wer lesen kann ist klar im Vorteil
 
sorry
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: Markus Henke am 05.09.03 - 11:27:44
hi,

wenn ich Dich richtig verstanden habe, dann muss die Verlinkung über "als Verknüpfung kopieren" erfolgen und dann ist es egal in welcher Form die Verknüpfung im Richtext Feld steht. Du könntest Dir etwas basteln, dass die die Verknüpfung zusätzlich in ein Textfeld kopiert, dann hast du das gleiche, als wenn du eine Notes Verknüpfung aus dem BS nach Notes hast.

Wenn Du das nicht kennst, dann probier mal folgendes: erstelle ein Verknüpfung zu einem Dokument, öffne den Editor und kopiere einfach mal rein. Dann siehst Du die Verknüpfung. Speicher das ganze als *.ndl (* steht für irgendwas) und öffne die Datei aus dem BS heraus.

Wenn Du das gleiche in einem Textfeld machst, dann siehst Du auch die Verknüpfung (als Text) daraus kannst Du Dir dann etwas basteln, dass Dir dann das Verknüpfte Dokument löscht.

Ich denke das sollte nicht allzu schwer sein.

Gruß
Markus
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: Alexis am 05.09.03 - 11:55:57
Hallo Markus,

darum finde ich LotusNotes und das Forum so toll, ich kann meinem Basteltrieb so richtig frönen und meine Flugzeugmodelle bleiben heile.

Vielen Dank für Deine Anregung, ich werde mich kurzfristig dranmachen.

Gruß
Alexis
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: Alexis am 08.09.03 - 15:52:04
Hallo Markus, Hallo Fans,

zurück zu meinem Problem:

Vielleicht bin ich nicht Profi genug, aber den Link aus einem RTF kann ich sicherlich nicht mal so eben in ein Textfeld übertragen --> "Incorrect Data Type Error" (im Editmode sehe ich nur das Verknüpfungsicon im RTF).

Im externen Editor sehe ich natürlich den Link als Text, umbenannt und mit LN geöffnet klappt auch, ABER wie kann ich das innerhalb der Maske berechnen lassen. Wie oben erwähnt bekomme ich stets Datentypfehler.

Wo liegt der Haken ???

Alexis

Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: koehlerbv am 08.09.03 - 20:22:33
Hallo, Alexis,

leider bin ich in den letzten Tagen nicht dazu gekommen, Dir ausführlicher auf Deine Frage zu antworten. Das wird auch in den nächsten Tagen nix, befürchte ich ...

Das bisherige Basteln wird nichts bringen, und jeder weitere Link oder ein unsauberes Füllen des Feldes, das derzeit "garantiert" nur einen Link enthält, ist unterm Strich zu unsicher für eine wirkliche Lösung.
Du hattest ja aber geschrieben, daß Du den Prozeß des Link-Einfügens überwachen kannst.

Daher auf die Schnelle mein Vorschlag: Bau zwei Buttons: Einer öffnet die Ziel-DB (PickList in NotesUIWorkspace), dort wählt der User das zu verlinkende Dok, Du fügst programmatisch in ein berechnetes RTF den Link ein (mit den Standardmethoden von NotesRichTextItem) sowie in ein verstecktes Feld die wirkliche UNID des zu verlinkenden Dokuments.
Der zweite Button ist dann der Löschbutton, der die gespeicherte UNID wieder ausliest und das Dok instantiiert und "removed".

Ich hoffe, das hilft Dir jetzt weiter. Wenn Du Fragen hast - soviel Zeit werde ich mir schon freischaufeln ;-)

Ciao,
Bernhard
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: Alexis am 09.09.03 - 14:19:49
Hallo Berhard,

leider scheint die Lösung an meiner Unkenntnis von LotusScript zu scheitern. Picklist klappt ja noch, aber "programmatisch in ein berechnetes RTF den Link einzusetzen (mit den Standardmethoden von NotesRichTextItem) ???

Vielleicht kannst Du mir nochmals helfen, wie und wo der "linkTo" übergeben wird in der Methode "Call notesRichTextItem.AppendDocLink( linkTo, comment$ [, HotSpotText$ ])" im EditMode des Dokumentes?

Alexis
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: koehlerbv am 09.09.03 - 14:32:53
Schick' doch bitte mal den Code, den Du schon fertig hast.
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: Alexis am 09.09.03 - 14:39:06
Hier mein Code:

Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim workspace As New NotesUIWorkspace
   Dim db As NotesDatabase
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument
   Set db=session.CurrentDatabase
                'Öffnet Fenster in der Ressourcen-Datenbank
   Set collection = workspace.PickListCollection(1, True,_
   "DE01-SPK24/DE01","local\File012.nsf","My Reservations","Überschrift", _
   "Please select a document")
   ?????????   
   Set rtitem = New NotesRichTextItem( doc, "Link" )
   Call rtitem.AppendDocLink( doc, "" )
   
End Sub
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: koehlerbv am 09.09.03 - 14:43:46
Sag zunächst der PicklistCollection, daß nur ein Doc gewählt werden kann (sonst müßtest Du ja n Links einfügen.

Aus der Collection holst Du Dir dann das erste (und einzige) Dokument:
Set doc = collection.GetFirstDocument.
Und damit hastDu auch schon den Parameter LinkTo (wie schon im Code vorhanden).
Nach Picklist würde ich auf gültige Auswahl checken:
If collection.Count <> 0 then
   <Gemecker>
   Exit Sub
End If

HTH,
Bernhard
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: Alexis am 10.09.03 - 09:46:54
Hallo Berhard,

tut mir leid, bin zu dumm für Script und benötige noch einmal Support.

Bin jetzt schon mal so weit, dass ich beliebige Daten des ausgewählten PickList-Objektes kriege und auch einbinden kann. Nicht jedoch den Link ???

Was muss ich ändern:

Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim workspace As New NotesUIWorkspace
   Dim db As NotesDatabase
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim rtitem As Variant   
   Set db=session.CurrentDatabase
   
   
   Set collection = workspace.PickListCollection(1, False,_
   "DOW-DE01-SPK24/DE01/DOW","local\deuta\de012.nsf","Meine Reservierungen","Auswahlmaske", "Reservierung auswählen")
   
   If collection.Count <> 1 Then
      Messagebox "Eine Reservierung auswählen"
      Exit Sub
   End If
   
   Set doc = collection.GetFirstDocument
   ' Beispiel Parameter auslesen
   Set uidoc = workspace.CurrentDocument  
   Call uidoc.FieldAppendText( "Sonstiges", doc.Authors(0))
   ?????????
   Set rtitem = New NotesRichTextItem( doc, "Link" )
   Call rtitem.AppendDocLink( doc, "Link")   
   
End Sub

Deine Hilfe wäre mir sehr recht.

Alexis
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: koehlerbv am 10.09.03 - 09:52:01
doc ist das zu verlinkende Doc, und uidoc ist sicherlich das Dokument, wo der Link 'rein soll.

Set doc = collection.GetFirstDocument
   ' Beispiel Parameter auslesen
   Set uidoc = workspace.CurrentDocument  
   Call uidoc.FieldAppendText( "Sonstiges", doc.Authors(0))
   ?????????

   'Mit den folgenden beiden Zeilen erzeugst Du das Link-Feld samt Link im zu verlinkenden Dokument - was sicher nicht erwünscht ist:
   Set rtitem = New NotesRichTextItem( doc, "Link" )
   Call rtitem.AppendDocLink( doc, "Link")  
   
Daher:
   Dim docCurrent as NotesDocument
   Set uidoc = workspace.CurrentDocument  
   Set docCurrent = uidoc.Document
   Set rtitem = New NotesRichTextItem( docCurrent, "Link" )
   Call rtitem.AppendDocLink (doc, "Link")  

Da rtitem ja ein RTF ist, ist das Ergebnis erst nach dem Speichern und erneutem Öffnen des uidocs zu sehen.

HTH,
Bernhard
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: Alexis am 10.09.03 - 11:09:21
Bernhard,

leider sehe ich den Link in der Maske nicht  :-[

Nicht nach Abspeichern,
Feld "Link" als RTF mit Mehrfachwerten oder auch nicht,
Feld "Link" berechnet oder auch nicht.

Hast Du noch 'ne Idee?
Kann der Debugger helfen?

Alexis
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: koehlerbv am 10.09.03 - 11:46:59
Deklariere mal Dein rtitem als NotesRichTextItem statt als Variant. Und dann schau mal im Debugger, wie die Variablen nacheinander belegt werden.
Auf die Schnelle sehe ich nicht, was sonst nicht paßt.

So long,
Bernhard
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: Alexis am 10.09.03 - 12:11:37
Berhard,

mir fällt nur auf, dass uidoc vom Typ Variant ist.

Als NotesDocument deklariert erhalte ich die Fehlermeldung in der Zeile Set uidoc = workspace.CurrentDocument "Type mismatch CurrentDocument"

???
Alexis
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: koehlerbv am 10.09.03 - 12:16:03
Da habe ich total übersehen, daß Du ja uidoc gar nicht deklariert hast:
Dim uidoc as NotesUIDocument

Dazu noch ein Tip: Schreibe nie eine einzige Zeile LS, ohne in die Options des Moduls eingetragen zu haben:
Option Declare

HTH,
Bernhard
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: Alexis am 11.09.03 - 12:26:11
Hallo Forum, hallo Bernhard,

leider bin ich bis jetzt noch nicht erfolgreich, obwohl die Hilfestellung von Berhard für mich Script-Greenhorn prima war und nun leider  8) Urlaub ansteht. Hier der letzte Stand des Scripts, vielleicht hat noch jemand in der Zwischenzeit 'ne Idee, warum der Link nicht in der Maske erscheint. Nach dem Urlaub geht' weiter.

Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim workspace As New NotesUIWorkspace
   Dim db As NotesDatabase
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument  ' Reservierung
   Dim uidoc As NotesUIDocument ' Bewirtungsmaske
   Dim docCurrent As NotesDocument
   Dim rtitem As NotesRichTextItem
   
   Set db=session.CurrentDatabase
   Set collection = workspace.PickListCollection(1, False,_
   "DE01-SPK24/DE01","DOW012.nsf","My Reservations","My Dialog", _
   "Please select a document.")              
   
     If collection.Count <> 1 Then
      Messagebox "Eine Reservierung auswählen"
      Exit Sub
   End If
   
   Set doc = collection.GetFirstDocument          
   Set uidoc = workspace.CurrentDocument
   Set docCurrent = uidoc.Document          
   Set rtitem = New NotesRichTextItem( docCurrent, "Link" )
   Call rtitem.AppendDocLink (doc, "Link", "Link")      
   
End Sub

Danke und tschüss
Alexis
Titel: Re:Löschen von Dokumenten aus einer DB zur anderen
Beitrag von: koehlerbv am 11.09.03 - 12:36:39
Hm, Du fügst den Link im Backend ein, speichern tust Du dann aber offensichtlich im FrontEnd.Das UI-Dokument weiß aber nicht, was Du hinter seinem Rücken getan hast.
Beende mal Deine Aktion mit einem
Call docCurrent.Save (True, False, True)

HTH,
Bernhard