Autor Thema: Agenten um Betreff zu ändern  (Gelesen 11472 mal)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Agenten um Betreff zu ändern
« Antwort #20 am: 29.02.12 - 17:10:15 »
@Do braucht man hier überhaupt nicht (wie meistens). Aber mit der DesignerHelp *muss* man sich auseinandersetzen und mal nachlesen, was "&" in Formelsprache bedeutet, dass "&&" sinnfrei ist etc. pp.

Bernhard

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Agenten um Betreff zu ändern
« Antwort #21 am: 29.02.12 - 18:14:45 »
@Bernhard

Ich moechte ja auch immer etwas lernen, aber wie kann ich ohne @Do auskommen, wenn ich alle notwendigen Aktionen innerhalb des @If ausfuehren moechte.


Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Agenten um Betreff zu ändern
« Antwort #22 am: 29.02.12 - 18:27:34 »
Du bildest das neue Subject ohne Rücksicht auf Verluste, aber das Übertragen des Inhalts in das Item machst Du erst, wenn die Bedingung (die sonst vor dem @Do stehen würde), passt.
Das ist nur eine Methode. Das @Return ("") wurde bereits erwähnt.

Bernhard

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Agenten um Betreff zu ändern
« Antwort #23 am: 29.02.12 - 18:29:43 »
@Bernhard

Ich moechte ja auch immer etwas lernen, aber wie kann ich ohne @Do auskommen, wenn ich alle notwendigen Aktionen innerhalb des @If ausfuehren moechte.


Andreas
Wenn Du mehrere Aktionen INNERHALB eines If-Zweiges ausführen willst, brauchst Du natürlich das @Do. Der Ansatz von Axel ist aber der, dass zuerst geprüft wird, ob etwas getan werden muss. Falls nicht, wird die Formel beendet. Alles, was danach kommt, wird also nur dann ausgeführt, wenn die Bedingung zustimmt.

Variante 1: @Do innerhalb @If, wenn Bedingung = True

@If (Bedingung;
   @Do (
      @Formel1;
      @Formel2
   );
"");

Variante 2: Ausstieg mit @Return, wenn Bedingung = False

@If (Bedingung; ""; @Return (""));
@Formel1;
@Formel2

Ich persönlich mag lieber Variante 2, ist weniger zu schreiben und leichter zu lesen und zu warten. Es kann aber sein, dass von der Bedingung zwei verschiedene Abläufe abhängig sind, dann geht es mit dem @Return nicht.

@If (Bedingung;
   @Do (
      @Formel1;
      @Formel2
   );
   @Do (
      @Sonst-Formel1;
      @Sonst-Formel2
   )
);

-> ist nur skizziert, möglich, dass bei den Klammern oder Semikolon Fehler enthalten sind.

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Agenten um Betreff zu ändern
« Antwort #24 am: 29.02.12 - 18:33:25 »
Danke Peter,

Soweit war ich ja auch und dies ist mir durchaus bewusst.

Meine Bemerkung mit dem @Do bezog sich aber auf das Stueckchen Code, was KilleKalle nach Axel seinem kleinen Beispiel skizziert hat.
Hier hatte er alles in das @If verfrachtet.


Andreas

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Agenten um Betreff zu ändern
« Antwort #25 am: 29.02.12 - 18:42:36 »
Ok. Sorry, wenn ich das so schreibe, die Formel von KilleKalle hat recht wenig mit einer funktionierenden @Formel in Lotus Notes zu tun. Ich vermute da eine starke Anlehnung an ihm Gewohntes aus einem anderen Umfeld, Java, o.ä.. Das hat Bernhard auch schon völlig korrekt kommentiert.

Also, wenn mehrere Befehle innerhalb eines @If, dann mit @Do, aber ob notwendig, steht auf einem anderen Blatt. Ich würde es vermeiden, wo es geht, weil es - insbesondere bei langen Formeln - sehr schnell unübersichtlich wird. Oft geht es ohne, man muss manchmal nur etwas knobeln. Aber gerade das ist doch das Salz in unserer täglichen Suppe (wenn es denn unbedingt Formelsprache sein muss, die auf jeden Fall oft genug ihre Berechtigung hat).

EDIT: Allerdings kann ich mich nicht erinnern, wann ich zuletzt einen periodischen Agenten in Formelsprache geschrieben hätte, da würde ich IMMER zu Script greifen, falls nicht irgendwelche anderen Gründe dagegen sprechen (z.B. die Notwendigkeit von Java-Funktionalität).
« Letzte Änderung: 29.02.12 - 18:45:47 von Peter Klett »

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Agenten um Betreff zu ändern
« Antwort #26 am: 29.02.12 - 18:45:36 »
Na dann wollen wir mal hoffen, das KilleKalle diese Diskussion aufmerksam verfolgt hat und einige Anregungen fuer sein Vorhaben mitnehmen konnte.


Andreas

Offline KilleKalle

  • Frischling
  • *
  • Beiträge: 13
Re: Agenten um Betreff zu ändern
« Antwort #27 am: 02.03.12 - 12:41:15 »
Hallo zusammen,

vielen Dank für eure Kommentare!
Mit der Designer Hilfe hat es letztlich auch funktioniert ;o)

So siehts nun aus!
Gibt es Einwände, zur Verbesserung?

Code
FIELD Subject:=Subject;
FIELD Body:=Body;

@If(
@Contains(Subject;"ASA Alert (ASA-101)");
"";
@Return("")
);

@If(
@Contains(Body;"Username =");
@Do
(TempSubject:=Subject;
TempUser:= @Right(Body;"Username =");
TempUser:= @Left(TempUser;", IP");
TempUser:= " - " + TempUser;
@SetField("Subject";TempSubject + TempUser)
);
@Return("")
);

SELECT @All

Danke!

LG KilleKalle
« Letzte Änderung: 02.03.12 - 13:01:50 von KilleKalle »

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: Agenten um Betreff zu ändern
« Antwort #28 am: 02.03.12 - 12:49:39 »
Gibt es Einwände, zur Verbesserung?

Ja.

Das @Do kannst du dir schenken, wenn du die zweite @IF - Anweisung nach dem Przinzip der ersten aufbaust.

Code
FIELD Subject:=Subject;
FIELD Body:=Body;

@If(@Contains(Subject;"ASA Alert (ASA-101)");"";@Return(""));

@If(@Contains(Body;"Username ="); ""; @Return("");

TempSubject:=Subject;
TempUser:= @Right(Body;"Username =");
TempUser:= @Left(TempUser;", IP");
TempUser:= " - " + TempUser;
@SetField("Subject";TempSubject + TempUser);

SELECT @All


Auf die Schnelle; sollte so funktionieren.

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

Offline KilleKalle

  • Frischling
  • *
  • Beiträge: 13
Re: Agenten um Betreff zu ändern
« Antwort #29 am: 02.03.12 - 14:08:36 »
Moin,

noch 'ne Frage... ;o)

Der Agent verändert nun leider die Schriftart in den Mails. Kann man das verhindern?

Habe schon versucht mir den Body bevor ich den durchsuche in eine Variabel zu lesen und dort nur zu bearbeiten, aber das verhindert es auch nicht.

LG KilleKalle

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Agenten um Betreff zu ändern
« Antwort #30 am: 02.03.12 - 14:40:20 »
Das die Formatierung des Textes eine Rolle spielt, hätte man vielleicht gleich mit ansagen sollen ...

Für den genannten Fall muss mit NotesRichText gedealt werden. Also: LotusScript und NotesRichText classes, hier insbesondere NotesRichTextRange class und die Methode FindAndReplace.

Bernhard

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Agenten um Betreff zu ändern
« Antwort #31 am: 02.03.12 - 14:40:35 »
Lass mal FIELD Body := Body weg, die Zeile brauchst Du nicht, möglich, dass dabei was kaputtgeht.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Agenten um Betreff zu ändern
« Antwort #32 am: 02.03.12 - 14:43:28 »
Das die Formatierung des Textes eine Rolle spielt, hätte man vielleicht gleich mit ansagen sollen ...

Für den genannten Fall muss mit NotesRichText gedealt werden. Also: LotusScript und NotesRichText classes, hier insbesondere NotesRichTextRange class und die Methode FindAndReplace.

Bernhard
Nö, das Richtextfeld wird doch nur gelesen, wenn da nicht zurückgeschrieben wird, dürfte da nichts passieren. Es soll doch nur Subject geändert werden.

Offline KilleKalle

  • Frischling
  • *
  • Beiträge: 13
Re: Agenten um Betreff zu ändern
« Antwort #33 am: 02.03.12 - 14:50:00 »
Danke,

das Field Body:=Body war die Ursache des übels!
Nun passt alles!

Vielen Dank,

LG KilleKalle

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz