Autor Thema: Von Formel zu Script  (Gelesen 3753 mal)

bificypdog

  • Gast
Von Formel zu Script
« am: 08.01.04 - 18:11:23 »
Kann mir jemand einen kleinen Tipp geben?
Wie setze ich folgende Formel in Script um:

Code
@SetField("History";(@Text(@Now)+" Call wurde von " + @Name([CN];@UserName)+" --> "+@Implode(@Name([CN];Next))+" zugeordnet."):History);

Danke.

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Von Formel zu Script
« Antwort #1 am: 08.01.04 - 18:15:57 »
Äh, was fehlt Dir denn hier an Know-How ?
Dann wissen wir auch, wie tief wir bei der Hilfestellung gehen müssen ...

Bernhard

bificypdog

  • Gast
Re:Von Formel zu Script
« Antwort #2 am: 08.01.04 - 18:17:47 »
Die Agenten sind in Lotus Script fertig.
Ich weiss nur nicht, wie ich die Formel umschreiben soll.
Bisher habe ich das Feature im Script rauslassen müssen. Jedoch sollte die Dokumentenhistorie auch bei der Nutzung von Script-Agenten benutzt werden. Sonst entsteht bei mir eine Lücke in der Historie.

Glombi

  • Gast
Re:Von Formel zu Script
« Antwort #3 am: 08.01.04 - 18:24:25 »
Am einfachsten geht so was (falls der Code bereits in Formelsprache da ist) mit Evaluate:

'doc ist das Backend-Dokument, in das geschrieben werden soll

dim ret_eval as Variant
ret_eval = Evaluate(|FIELD History := (@Text(@Now)+" Call wurde von " + @Name([CN];@UserName)+" --> "+@Implode(@Name([CN];Next))+" zugeordnet."):History);@True|,doc)

Andreas

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Von Formel zu Script
« Antwort #4 am: 08.01.04 - 18:25:19 »
@bifi:
... was meine Frage immer noch nicht beantwortet ...
Magst Du jetzt das ganze Ding fertig vorgekaut haben ?
@SetField in LS sollte klar sein.
@Now ist in diesem Kontext CStr (Now) in LS
Das @Implode ist unnötig.
@Name ([CN]; @UserName) ist NotesSession.UserName.Common

Für die Verkettung des Listenfeldes musst Du Dir was einfallen lassen. Gib' mal ArrayAppend eine Chance (siehe DesignerHelp), Du musst dort aber sicherstellen, dass das Ursprungsfeld schon ein Array ist.

Also: Sag' mal genaueres.

Bernhard
« Letzte Änderung: 08.01.04 - 18:27:19 von koehlerbv »

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Von Formel zu Script
« Antwort #5 am: 08.01.04 - 18:36:10 »
Zitat
@Name ([CN]; @UserName) ist NotesSession.UserName.Common

Das geht nicht. UserName ist ein String.
Stattdessen NotesSession.CommonUserName

Für das Anhängen des Textes eignet sich auch
NotesItem.AppendToTextList
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 koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Von Formel zu Script
« Antwort #6 am: 08.01.04 - 18:45:45 »
Vollkommen richtig, Semeaphoros - aus dem Hut habe ich hier LS zuviel Vererbung zugetraut (ich war bei der NotesName class).
AppendToTextList ist natürlich auch die simpel-weil-geniale-Methode ...

Mit rotem Kopf,
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:Von Formel zu Script
« Antwort #7 am: 08.01.04 - 19:29:40 »
Lass mal nur den roten Kopf weg ...... passiert doch allen mal :-)
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

bificypdog

  • Gast
Re:Von Formel zu Script
« Antwort #8 am: 08.01.04 - 20:23:24 »
Ich bin der Lösung schon ganz nah.
Auch wenn ich das nicht gerade elegant (aber halt Anfänger) mit Evaluate gelöst habe.

Ich werde es morgen weiterprobieren.

Alle pur in LS schaffe ich nicht. Aber das ist okay.

bificypdog

  • Gast
Re:Von Formel zu Script
« Antwort #9 am: 08.01.04 - 20:23:43 »
Das wichtigste habe ich vergessen:

DANKE.

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Von Formel zu Script
« Antwort #10 am: 08.01.04 - 20:35:20 »
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

  • Gast
Re:Von Formel zu Script
« Antwort #11 am: 09.01.04 - 14:07:22 »
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 

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.

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Von Formel zu Script
« Antwort #12 am: 09.01.04 - 16:02:33 »
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

Glombi

  • Gast
Re:Von Formel zu Script
« Antwort #13 am: 09.01.04 - 16:08:41 »
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
« Letzte Änderung: 09.01.04 - 16:09:50 von Glombi »

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Von Formel zu Script
« Antwort #14 am: 09.01.04 - 16:42:06 »
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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz