Domino 9 und frühere Versionen > ND6: Entwicklung

Tipp zur Umsetzung eines Links zum Kontakt

<< < (3/7) > >>

dabjoern:
Hi Axel,
vielen Dank für das Skript. Funktioniert super! Jetzt bin ich glücklich. Werde jetzt noch versuchen, aus der Collection Daten zu ziehen, um so neben dem Link auch noch einen Text zu setzen. Dieser soll dynamisch generiert sein (das Skript soll aus der View Vor- und Nachname ziehen). Mal sehen, ob ich es packe.  :P
Gruß
Björn

dabjoern:
Kann mir einer einen Tipp geben, warum dies nicht funktioniert?

--- Code: --- Dim fullname As NotesItem
Set fullname = coldoc.Items(19)
Call rtitem.AppendText(fullname)
--- Ende Code ---

Ziel ist eigentlich das, was ich oben beschrieben habe:

--- Zitat ---Werde jetzt noch versuchen, aus der Collection Daten zu ziehen, um so neben dem Link auch noch einen Text zu setzen. Dieser soll dynamisch generiert sein (das Skript soll aus der Collection Vor- und Nachname ziehen).
--- Ende Zitat ---

Der gesamte Code sieht jetzt so aus:

--- Code: ---Sub Click(Source As Button)
Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim coldoc As NotesDocument
Dim rtitem As NotesRichTextItem
Dim doc2 As NotesDocument
Dim uidoc As NotesUIDocument
Dim unid As String

Set db = session.CurrentDatabase
Set uidoc = ws.CurrentDocument

Call uidoc.Save
Set doc2 = uidoc.Document

Set collection = ws.PickListCollection(PICKLIST_CUSTOM,True,db.Server,db.filepath,"Person","Contacts"," " )
Set coldoc = collection.GetFirstDocument

Set rtitem = New NotesRichTextItem(doc2, "SO_EconomicBuyer")

Dim fullname As NotesItem

While Not (coldoc Is Nothing)
Set fullname = coldoc.Items(19)
Call rtitem.AppendDocLink(coldoc, "Dokument")
Call rtitem.AppendText(fullname) '<-- geht nicht
Call rtitem.AddNewLine(1)
Set coldoc = collection.GetNextDocument(coldoc)
Wend

Call ReOpen(doc2)

End Sub
--- Ende Code ---

Danke und Gruß
Björn

Axel:
Hi,

das ist klar warum das nicht funktioniert, denn Set fullname = coldoc.Items(19) liefert dir ein NotesItem zurück. Die Methode Call rtitem.AppendText(fullname) erwartet aber einen String. Eigentlich müsstest du eine Type Mismatch - Fehler bekommen.

Warum benutzt du denn nicht die Feldnamen?

...
Dim strfullname As String

While Not (coldoc Is Nothing)
  Set strfullname = coldoc.Vorname(0) & " " & coldoc.Nachname(0)
  Call rtitem.AppendDocLink(coldoc, "Dokument")
  Call rtitem.AppendText(strfullname)
  Call rtitem.AddNewLine(1)
  Set coldoc = collection.GetNextDocument(coldoc)
Wend
...

So sollte das funktionieren. Die Feldnamen musst du natürlich an deine anpassen.


Axel

dabjoern:
Hallo auch,
also folgender Code führt zum gewünschten Ergebnis:

--- Code: ---Sub Click(Source As Button)
Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim coldoc As NotesDocument
Dim rtitem As NotesRichTextItem
Dim doc2 As NotesDocument
Dim uidoc As NotesUIDocument
Dim unid As String

Set db = session.CurrentDatabase
Set uidoc = ws.CurrentDocument

Call uidoc.Save
Set doc2 = uidoc.Document

Set collection = ws.PickListCollection(PICKLIST_CUSTOM,True,db.Server,db.filepath,"Person","Contacts"," " )
Set coldoc = collection.GetFirstDocument

Set rtitem = New NotesRichTextItem(doc2, "SO_EconomicBuyer")

Dim strfullname As String

While Not (coldoc Is Nothing)
strfullname = coldoc.FirstName(0) & " " & coldoc.LastName(0)
Call rtitem.AppendDocLink(coldoc, "Dokument")
Call rtitem.AppendText(strfullname)
Call rtitem.AddNewLine(1)
Set coldoc = collection.GetNextDocument(coldoc)
Wend

Call ReOpen(doc2)

End Sub
--- Ende Code ---

Funktion ReOpen:


--- Code: ---Function ReOpen(docThis As NotesDocument) As Integer
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim dbThis As NotesDatabase
Dim unid As String

ReOpen = 0
Set dbThis = docThis.ParentDatabase
Call docThis.Save(True , True)
unid = docThis.UniversalID
docThis.SaveOptions = "0"
Set uidoc = ws.CurrentDocument
Call uidoc.Close
Set docThis = dbThis.GetDocumentByUNID(unid)
Set uidoc = ws.EditDocument(True , docThis)
Set docThis = uidoc.Document
If docThis.HasItem("SaveOptions") Then
docThis.RemoveItem("SaveOptions")
Call docThis.Save( True , True )
End If
ReOpen = 1
End Function
--- Ende Code ---

Großes Danke an Axel, aber auch insgesamt danke für dieses Forum. Ihr seid Spitze!
Gruß
Björn

dabjoern:
Hi auch,
ich habe den Code noch ein wenig geändert. Nunmehr wird der Name nicht aus einer collection gezogen, sondern aus einer Dialog List. Das Ganze habe ich in das Exiting Event gelegt. Mein Problem ist, dass der Link, der erzeugt wird, nicht funktioniert. D.h. es wird nicht zum ldoc verlinkt, sondern zum doc (klicke ich den Link, wird das Dokument erneut geladen). Was soll das? Hier der Code:


--- Code: ---Sub Exiting(Source As Field)
Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim view As NotesView
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim ldoc As NotesDocument
Dim rtitem As NotesRichTextItem
Dim key As String

Set db = session.CurrentDatabase
Set uidoc = ws.CurrentDocument

Call uidoc.Save
Set doc = uidoc.Document

key = doc.SO_EconomicBuyer(0)

Set view = db.GetView("Person" )
Set ldoc = view.GetDocumentByKey(key)

Set rtitem = New NotesRichTextItem(doc, "SO_EB_Link")

Call rtitem.AppendDocLink(ldoc, "Link")

Call ReOpen(doc)
End Sub
--- Ende Code ---

Funktion ReOpen siehe oben.

MfG und vielen Dank
Björn

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln