Autor Thema: RT-item umbenennen  (Gelesen 2725 mal)

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
RT-item umbenennen
« am: 23.02.09 - 12:14:34 »
Hallo an Alle,

die Frage klingt simpel. Ich möchte ein RT-Item in einer Applikation umbenennen. Da kann alles drin sein: Bilder, Attachments, OLE-Objekte, Links, Buttons, Hide-When-Formeln.

Gibt es einen gangbaren - und nach Möglichkeit auch positiv getesteten - Weg, das umzubenennen und alle Eigenschaften des Ursprungsitems beizubehalten ?

Gruß

Norbert
Situs vilate in isse tabernit.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: RT-item umbenennen
« Antwort #1 am: 23.02.09 - 22:22:43 »
Lieber Norbert,

die Geschichte hat ja ein paar Stolperfallen, besonders, wenn sich im eigentlichen Dokument das itemAlterName und das itemNeuerName insbesondere hinsichtlich EmbeddedObjects selbst gegenseitig im Wege herumstehen.

Anbei einer (von sicherlich mehreren möglichen) Wegen, der funktioniert. Ich habe bewusst auf jede Kommentierung verzichtet - es ist eher nur was für die "Harten", und die lesen die wenigen Zeilen sicherlich wie ein Buch. Im Beispiel wird das über einen Agent auf ein selektiertes Dokument ausgeführt. Ist eben nur ein Beispiel.

Das ProfileDoc (sollte eigentlich persönlich sein! So sicherheitshalber  ;)) wird niemals gespeichert und trägt damit nicht übermässig zur Verschutzung der DB bei.

HTH,
Bernhard

Code
Sub RenameItem
Dim session As New NotesSession
Dim dbCurrent As NotesDatabase
Dim collSelected As NotesDocumentCollection
Dim doc As NotesDocument
Dim docProfile As NotesDocument
Dim itemSource As NotesItem
Dim itemTarget As NotesItem
Dim itemTemp As NotesItem
On Error Goto ErrorRoutine
Set dbCurrent = session.CurrentDatabase
Set collSelected = dbCurrent.UnprocessedDocuments
If collSelected.Count = 0 Then
Exit Sub
End If
Set doc = collSelected.GetFirstDocument
Set itemSource = doc.GetFirstItem ("RTISource")
If itemSource Is Nothing Then
Exit Sub
End If
Set itemTarget = doc.GetFirstItem ("RTITarget")
If Not (itemTarget Is Nothing) Then
Call itemTarget.Remove
End If
Set docProfile = dbCurrent.GetProfileDocument ("(RenameRTI)")
If docProfile Is Nothing Then
Exit Sub
End If
Set itemTemp = docProfile.GetFirstItem ("RTITemp")
If Not (itemTemp Is Nothing) Then
Call itemTemp.Remove
End If
Set itemTemp = itemSource.CopyItemToDocument (docProfile, "RTITemp")
Call itemSource.Remove
Call doc.Save (True, False, True)
Set itemTarget = itemTemp.CopyItemToDocument (doc, "RTITarget")
Call doc.Save (True, False, True)
Exit Sub
ErrorRoutine:
Call ErrorHandler ("RenameItem")
Exit Sub
End Sub

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: RT-item umbenennen
« Antwort #2 am: 25.02.09 - 16:54:17 »
Lieber Bernhard,

das probiere ich aus. Die ganzen fehlenden Schmankerl (GetNextdocument, Profildoc auf NOTHING setzen usw. kein Problem). Der Kern ist das Wichtige - und das sieht gut aus.

Item mit altem Namen per GetFirstitem nehmen, in anderes temporäres Dokument kopieren, Sourceitem im Originaldokument entfernen, aus temporärem Dokument in Originaldokument mit neuem Namen kopieren, temporäres Dokument deinstantiieren.

Dank dir tausenfmal.

Gruß

Norbert
Situs vilate in isse tabernit.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: RT-item umbenennen
« Antwort #3 am: 25.02.09 - 16:59:09 »
Wenn es bei Dir das tut, was es bei mir tut, würde es mich sehr freuen, Dir auch mal geholfen haben zu können, Norbert.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz