Kann mir jemand einen kleinen Tipp geben?
Wie setze ich folgende Formel in Script um:
@SetField("History";(@Text(@Now)+" Call wurde von " + @Name([CN];@UserName)+" --> "+@Implode(@Name([CN];Next))+" zugeordnet."):History);
Danke.
Ich zeig euch mal, wie mein Agent aussieht.
Sub Initialize
Dim s As New notessession
Dim db As notesdatabase
Dim coll As notesdocumentcollection
Dim doc As NotesDocument
Dim item As NotesItem
Dim erg As Variant
Dim ret_eval As Variant
Set db=s.currentdatabase
Set coll=db.unprocesseddocuments
If coll.Count = 1 Then
erg = Msgbox ("Soll der Call reaktiviert werden? Fortfahren?", 1+48, "Hinweis")
Else
erg = Msgbox ("Sollen die Calls reaktiviert werden? Fortfahren?", 1+48, "Hinweis")
End If
If erg = 2 Then
Exit Sub
End If
If coll.count>0 Then
Set doc = coll.GetFirstDocument
While Not doc Is Nothing
Set item = doc.ReplaceItemValue("CALL_Status","Gesendet")
Set item = doc.ReplaceItemValue("DocStatus","1")
Set item = doc.ReplaceItemValue("CALL_Verantw_Mitarbeiter","")
Set item = doc.ReplaceItemValue("Next","")
Set item = doc.ReplaceItemValue("Bearbeiter","")
ret_eval = Evaluate(|@SetField ("History";(@Text(@Now)+" reaktiviert von " + @Name([CN];@UserName)):History);@True|,doc)
Call doc.save(True,True)
Set doc = coll.GetNextDocument(doc)
Wend
If coll.Count = 1 Then
Messagebox "Der Call befindet sich jetzt wieder im Status -Gesendet-.", 64, "Information"
Else
Messagebox "Die Calls befinden sich jetzt wieder im Status -Gesendet-.", 64, "Information"
End If
End If
End Sub
Ich hab' mir nur gedacht, dass die Lösung mit Evaluate ein nicht gerade "stylischer" Trick ist. Deswegen schrieb ich, dass ich dachte, es seie nicht gerade elegant. Damit war aber nicht Glombis Vorschlag gemeint, sondern meine Umsetzung.
Hallo, bifi,
ich habe mal ein bisschen herumgeschnitzt an Deinem Code (meinen konnte ich natürlich *nicht* sinnvoll testen), aber vielleicht helfen Dir meine Ideen zur Vereinfachung und "pure LS" weiter.
Voraussetzung ist, dass in Deinem Modul global "lsconst.lss" per %INCLUDE" eingebunden wird. Deine Massagebox-Konstanten lesen sich dann besser ;-)
HTH,
Bernhard
Dim s As New notessession
Dim db As notesdatabase
Dim coll As notesdocumentcollection
Dim doc As NotesDocument
Dim item As NotesItem
Dim erg As Variant
Dim ret_eval As Variant
Dim szTextOption As String
Dim aNewHistoryEntry (0 To 0) As String
Dim nameActUser As New NotesName (s.UserName)
Set db=s.currentdatabase
Set coll=db.unprocesseddocuments
If coll.Count = 1 Then
szTextOption = "er Call"
Else
szTextOption = "ie Calls"
End If
erg = Msgbox ("Soll d" & szTextOption & " reaktiviert werden? Fortfahren?", MB_OKCANCEL + MB_ICONEXCLAMATION, "Hinweis")
If erg = IDCANCEL Then
Exit Sub
End If
If coll.count > 0 Then
Set doc = coll.GetFirstDocument
While Not doc Is Nothing
doc.CALL_Status = "Gesendet"
doc.DocStatus = "1"
doc.CALL_Verantw_Mitarbeiter = ""
doc.Next = ""
doc.Bearbeiter = ""
aNewHistoryEntry (0) = Cstr (Now) & " reaktiviert von " & nameActUser.Common
If doc.History (0) = "" Then
doc.History = aNewHistoryEntry
Else
doc.History = Arrayappend (aNewHistoryEntry, doc.History)
End If
Call doc.Save (True, False, True)
Set doc = coll.GetNextDocument (doc)
Wend
Messagebox "D" & szTextOption & ": Jetzt wieder im Status -Gesendet-.", MB_ICONINFORMATION, "Information"
End If