Domino 9 und frühere Versionen > Administration & Userprobleme
Von Formel zu Script
koehlerbv:
Das "DANKE" war jetzt wirklich sehr nett ! Das macht leider nicht jeder ...
Wenn Du "pur LS" magst - sag - wie von mir schon angesprochen - an, wo es bei Dir klemmt.
Ansonsten: Glombis Vorschlag ist ein wirklich guter und gangbarer Weg (die Syntax habe ich jetzt nicht überprüft, aber herrjeh - es ist von Glombi - das passt schon oder wird von ihm dann passend gemacht !). Es spricht nur in wenigen Fällen etwas dagegen, Evaluate einzusetzen, um auf die meist performante @functions Engine von Notes zuzugreifen.
Ciao,
Bernhard
bificypdog:
Ich zeig euch mal, wie mein Agent aussieht.
--- Code: ---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
--- Ende Code ---
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.
koehlerbv:
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
--- Code: ---
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
--- Ende Code ---
Glombi:
Den Satz
"Auch wenn ich das nicht gerade elegant (aber halt Anfänger) mit Evaluate gelöst habe."
versteh ich nicht! Was soll an Evaluate nicht elegant sein?
Ich mache sowas meistens damit.
Aus didaktischen Gründen ist es jedoch gut, wenn Du Dich auch mit der "reinen" Scriptmethode beschäftigst.
Andreas
koehlerbv:
Jo, Andreas: Gegen Evaluate ist überhaupt nix zu sagen (nur in performancekritischen "Schlaufen" sollte man von Fall zu Fall nachschauen, was jeweils günstiger ist). Gegen den didaktischen Ansatz ist selbstverständlich auch überhaupt gar nichts einzuwenden !
Mit einem Y geht es nun ins Wochenende !
Herzliche Grüsse an alle AtNotes'ler von
Bernhard
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln