Autor Thema: append doc link Methode  (Gelesen 3347 mal)

Offline kawie

  • Junior Mitglied
  • **
  • Beiträge: 87
  • Ich liebe dieses Forum! Und wie :-)
append doc link Methode
« am: 10.11.04 - 14:31:24 »
Hallo zusammen,

ich versuche aus einem geöffneten Dokument ein neues Dokument zu bilden und in einem Richtext feld einen Doclink einzufügen.

Leider passiert da gar nicht :-( Weiss jemand rat?


Code

Sub Click(Source As Button)
	
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim workspace As New NotesUIWorkspace
	Dim doc As NotesDocument
	Dim item As NotesItem
	Dim doc2 As NotesDocument
	Dim rtitem As  NotesRichTextItem
	Dim uidoc As NotesUIDocument
	Dim uidoc2 As NotesUIDocument
	Dim subject As String
	
	Set db = session.CurrentDatabase 
	Set uidoc = workspace.CurrentDocument
	Set doc = uidoc.Document
	
	
	subject = doc.Knowhow_thema(0)
	subject = "Neues Knowledge Dokument: " & subject
	
	Set uidoc2 = workspace.ComposeDocument _
	( "", "", "Memo" )
	
	noteid$ = doc.NoteID
	Set doc = db.GetDocumentByID( noteid$ )
	
	Set doc2 = uidoc2.Document
	Call doc.Save( False, True )
	doc2.Subject = subject
	doc2.Form = "Memo"
	doc2.SaveOptions = 0
	Set rtitem = New NotesRichTextItem( doc2, "Body" )
	Call rtitem.AppendDocLink( doc, db.Title ) 
	Call doc.Save( False, True )
	
	
End Sub


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: append doc link Methode
« Antwort #1 am: 10.11.04 - 14:52:46 »
Wenn das der komplette Code ist, dann wirst Du den DocLink auch niemals sehen, denn kurz nach dem Einfogen des DocLinks wirfst Du mit End Sub Dein ganzes Konstrukt ungespeichert in den Orkus.

Was bezweckst Du eigentlich hiermit:
Code
Set doc = uidoc.Document

......

noteid$ = doc.NoteID
Set doc = db.GetDocumentByID( noteid$ )

doc war doch schon instantiiert, und dann machst Du es (auf eine andere Art und Weise) nochmal. Wozu ?

Bernhard

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: append doc link Methode
« Antwort #2 am: 10.11.04 - 15:05:09 »
Hi,

warum legt du denn das neue Dokument nicht komplett im Backend an?

Code
...
Set uidoc2 = workspace.ComposeDocument _
( "", "", "Memo" )
Set doc2 = uidoc2.Document
...

Ob das sauber funktioniert, da bin ich mir ganz und garnicht sicher.


Axel
 
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline kawie

  • Junior Mitglied
  • **
  • Beiträge: 87
  • Ich liebe dieses Forum! Und wie :-)
Re: append doc link Methode
« Antwort #3 am: 10.11.04 - 16:21:17 »
Hallo,

danke für die Antworten hier kommen meine :-)

1) Backend kann ja jeder ;-). Nein im Ernst der User soll nach dem Erstellen noch die möglichkeit haben individuellen Text hinzuzufügen.

2) @koehlerbv war nur ein Test von mir ist im Prinzip doppelt gemoppelt. Hatte vergessen es rauszunehmen.

3) @Axel genau das wollte ich aber wissen...

appenddoclink ist eine Methode der Richtextklasse welche wiederum eine Klasse des NotesDocumentes ist. Klappt das so mit meinem gefummel und ich habe nur etwas falsch gesetzt... Oder wird das gar nicht gehen. Gibt es so etwas eventuell auch als FrontEnd Methode??

Gruss

Kai

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: append doc link Methode
« Antwort #4 am: 10.11.04 - 16:23:11 »
Das Dealen mit rich text items funktioniert nur im Backend.

Du müsstest also Dein Dokument zunächst im Backend erzeugen, abspeichern und erst dann ins Frontend holen.

Bernhard

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: append doc link Methode
« Antwort #5 am: 10.11.04 - 16:26:20 »
Genau wie Bernhard das eben gesagt hat, ist es. Das Doc im Backend erstellen, bereitstellen, speichern und dann über NotesUIWorkspace.EditDocument anzeigen und bearbeiten lassen.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: append doc link Methode
« Antwort #6 am: 10.11.04 - 20:34:03 »
Noch als Nachtrag:
Du kannst dann das Backend-Document danach löschen. Kann sinnvoll sein, wenn z.B. der User dann doch nicht das Dok speichern will.

Also zum Schluss des Codes sowas wie:

Call doc2.Save(True,False)
Set uidoc2 = uiws.EditDocument(True, doc2)
Call doc2.Remove(True)

Will heißen Du machst alles im Backend, und zum Schluß öffnest Du das Backend-Doc im Frontend und verwirfst danach das Backend. Dazu muss der User allerdings Löschrechte haben.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: append doc link Methode
« Antwort #7 am: 10.11.04 - 20:46:41 »
So einfach und prinzipiell würde ich aber nicht löschen, Matthias. Das hinterlässt unnötigen Ballast in der Datenbank, wenn dies häufig benutzt wird. Eher im QuerySave ein Flag hinterlassen und dieses im QueryClose auslesen und dann entscheiden.

Das mit den Löschrechten könnte natürlich ein Kasus Knacktus sein ...

Bernhard

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: append doc link Methode
« Antwort #8 am: 10.11.04 - 20:56:51 »
Das mit dem Flag ist eine sehr gute Strategie, würde ich auch bevorzugen.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: append doc link Methode
« Antwort #9 am: 10.11.04 - 20:59:09 »
Stimmt, da habt Ihr auch wieder Recht (wenn nicht die Mail-DB die Zieldatenbank ist)  :)
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: append doc link Methode
« Antwort #10 am: 10.11.04 - 21:02:39 »
Nö, die Mail-DB ist nicht die Ziel-DB, AFAIK.
Was würde das aber für einen Unterschied machen ? Abgesehen davon, dass man dort nicht so ohne weiteres ... wegen Update-Fähigkeit ... und so weiter ... ?

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: append doc link Methode
« Antwort #11 am: 10.11.04 - 21:07:06 »
Was würde das aber für einen Unterschied machen ? Abgesehen davon, dass man dort nicht so ohne weiteres ... wegen Update-Fähigkeit ... und so weiter ... ?

Genau den Unterschied den Du erwähnst. Unter Abwägung der Vor- und Nachteile würde ich mich da ganz klar für Löschen entscheiden. Zumal wohl jeder Inhaber eines Mailfiles auch Löschrechte hat.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: append doc link Methode
« Antwort #12 am: 10.11.04 - 21:10:47 »
Jo, da hast Du wahr  ;)

Bernhard

Offline kawie

  • Junior Mitglied
  • **
  • Beiträge: 87
  • Ich liebe dieses Forum! Und wie :-)
Re: append doc link Methode
« Antwort #13 am: 12.11.04 - 14:46:34 »
Hallo zusammen,

ich danke Euch nochmal für Eure Hilfe wobei ich immer noch nicht verstehe warum ich meine Erste varinte nicht nutzen konnte :-(

Wenn ich eine NotesDocument mit

doc = uidoc.document Deklariere ist doc Doch ein Backend Dokument und hat damit auch alle möglichkeiten oder??

Naja ich habe es jetzt so gemacht:

Code
Sub Click(Source As Button)
	
	Dim workspace As New NotesUIWorkspace
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim doc As NotesDocument
	Dim item As NotesItem
	Dim doc2 As NotesDocument
	Dim rtitem As  NotesRichTextItem
	Dim uidoc As NotesUIDocument
	Dim uidoc2 As NotesUIDocument
	Dim subject As String
	Dim user As String
	Set db = session.CurrentDatabase 
	Set uidoc = workspace.CurrentDocument
	
	Set doc2 = uidoc.Document
	
	Set doc = New NotesDocument(db) 
	
	user = session.CommonUserName
	subject = doc2.Knowhow_thema(0)
	subject = "Neues Knowledge Dokument: " & subject
	Set rtitem = New NotesRichTextItem( doc, "Body" )
	Call rtitem.AppendDocLink( doc2, db.Title ) 
	doc.Form = "Memo"
	doc.Subject = subject
	doc.from = user
	doc.type = "reply"
	doc.copyto = user
	Call doc.Save( False, True )	
	Set uidoc2 = workspace.EditDocument( True, doc) 
	
End Sub


Das löschen lass ich im moment vom einem tägichen Agent machen.
Schicker wäre es natürlich nach dem versenden. Frage an Euch wäre wieso das unnötigen Ballast erzeugt?

Gruss

Kai
« Letzte Änderung: 12.11.04 - 14:49:18 von kawie »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: append doc link Methode
« Antwort #14 am: 12.11.04 - 15:18:13 »
Das mit dem Erzeugen und Speichern eines Dokuments, dass danach sowieso wieder gelöscht werden soll, ist natürlich für eine Datenbank nicht so schön.

Man kann das Ganze in Ermangelung einer entsprechenden NotesUIDocument-Methode auch anders machen:

In der Maske des Dokuments, zu dem ein DocLink verschickt werden soll, gibt es einen Button (ist ja bestimmt jetzt schon der Fall). Dort stehen folgende @functions:

Code
@Command ([FileSave]);
@Command([EditMakeDocLink]) ;
@Command ([ToolsRunMacro]; "(CreateMemo)")

Der Agent "(CreateMemo)" enthält prinzipiell folgenden Code:
Code
Sub Initialize
	
	Dim ws As New NotesUIWorkspace
	Dim session As New NotesSession
	Dim dbCurrent As NotesDatabase
	Dim docMemo As NotesDocument
	Dim uidocMemo As NotesUIDocument
	
	Set dbCurrent = session.CurrentDatabase
	Set docMemo = dbCurrent.CreateDocument
	
	docMemo.Form = "Memo"
	
	Set uidocMemo = ws.EditDocument (True, docMemo)
	
	Call uidocMemo.GotoField ("Body")
	Call uidocMemo.Paste
	
End Sub

Voila - der DocLink steht in einem ungespeicherten Dokument. Im QuerySave der Memo-Maske verhinderst Du noch, dass das Dokument gespeichert werden kann und machst das NotesDocument.Send.

HTH,
Bernhard

Offline kawie

  • Junior Mitglied
  • **
  • Beiträge: 87
  • Ich liebe dieses Forum! Und wie :-)
Re: append doc link Methode
« Antwort #15 am: 14.11.04 - 19:19:25 »
Vielen lieben Dank nochmal !!

Ich verstehe zwar immer noch nicht warum das modell 1 von notes abgelehnt wurde aber das Ziel ist erreicht :-)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: append doc link Methode
« Antwort #16 am: 14.11.04 - 20:13:02 »
Gern geschehen.

Warum Deine erste Variante nichts taugte, habe ich aber bereits gleich in der ersten Replik geschrieben.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz