Autor Thema: Komisches Problem mit @IF - bitte um Hilfe  (Gelesen 2226 mal)

Offline watschn

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
Komisches Problem mit @IF - bitte um Hilfe
« am: 16.01.12 - 14:50:32 »
Hallo zusammen,

ich habe ein ganz seltsames Problem und muss zur Erklärung leider etwas weiter ausholen.
Ich habe eine Schaltfläche programmiert die aber nur dann richtig funktioniert wenn ich keine @if Funktion verwende

Hier meine Formel:

@If(Anhang != "OK";
@Return(@Prompt([Ok];
"Fehler";"Kein Anhang!"));
Date := Datum_ab;
WeekThursday := @Adjust(Date; 0; 0; @If (@Weekday(Date) = 1; -3; -@Weekday (Date) + 5); 0; 0; 0);
WeekYear := @Year (WeekThursday);
January4Date := @Date (WeekYear; 1; 4);
FirstThursday := @Adjust (January4Date; 0; 0; @If (@Weekday (January4Date) = 1; -3; -@Weekday (January4Date) + 5); 0; 0; 0);
Week := ((WeekThursday - FirstThursday) / 86400) / 7 + 1;
@SetField ("KW"; Week);
@True;
@Command([FileSave]);
@Do(
   @Command([FileCloseWindow]));
FIELD SaveOptions:="0")


Was ich machen möchte. Prüfen ob das Feld "Anhang" den Wert "OK" Hat,

trifft die Bedingung nicht zu, dann soll eine Meldung erscheinen "Kein Anhang gefunden" und der Vorgang abgebrochen werden.
--> dies funktioniert!

trifft die Bedingung zu, dann soll anhand des Feldes "Datum_ab" die Kalenderwoche ermittelt werden und das Dokument gespeichert werden
--> dies funktioniert nicht, ich erhalte die Meldung
Falscher Datentyp für Operator oder @Funktion:Zahl erwartet

Und nun das komische an der Sache:

Schreib ich die Formel ohne der @if Bedingung, dann funktioniert es. Die Kalenderwoche wird ohne Fehlermeldung berechnet

Date := Datum_ab;
WeekThursday := @Adjust(Date; 0; 0; @If (@Weekday(Date) = 1; -3; -@Weekday (Date) + 5); 0; 0; 0);
WeekYear := @Year (WeekThursday);
January4Date := @Date (WeekYear; 1; 4);
FirstThursday := @Adjust (January4Date; 0; 0; @If (@Weekday (January4Date) = 1; -3; -@Weekday (January4Date) + 5); 0; 0; 0);
Week := ((WeekThursday - FirstThursday) / 86400) / 7 + 1;
@SetField ("KW"; Week);
@True;
@Command([FileSave]);
@Do(
   @Command([FileCloseWindow]));
FIELD SaveOptions:="0";


Kann mir jemand erklären wo hier der Fehler liegt? Bitte um Hilfe.

Grüße, Michael

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Komisches Problem mit @IF - bitte um Hilfe
« Antwort #1 am: 16.01.12 - 14:54:14 »
Die @If-Syntax wurde aber auch nicht eingehalten, Michael! Und das auch noch mit @Prompt - da passieren dann seltsame Dinge  ;)

Setze als Else-Zweig einfach einen Leerstring, und alles wird gut.

Bernhard

Offline watschn

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
Re: Komisches Problem mit @IF - bitte um Hilfe
« Antwort #2 am: 16.01.12 - 15:07:19 »
Hallo Bernhard,

jetzt verwirrst du mich aber noch mehr.

Ich habe doch einen Else-Zweig  :-:

Wenn
@If(Anhang != "OK"

Dann
@Return(@Prompt([Ok];
"Fehler";"Kein Anhang!"))

Sonst
Date := Datum_ab;
WeekThursday := @Adjust(Date; 0; 0; @If (@Weekday(Date) = 1; -3; -@Weekday (Date) + 5); 0; 0; 0);
WeekYear := @Year (WeekThursday);
January4Date := @Date (WeekYear; 1; 4);
FirstThursday := @Adjust (January4Date; 0; 0; @If (@Weekday (January4Date) = 1; -3; -@Weekday (January4Date) + 5); 0; 0; 0);
Week := ((WeekThursday - FirstThursday) / 86400) / 7 + 1;
@SetField ("KW"; Week);
@True;
@Command([FileSave]);
@Do(
   @Command([FileCloseWindow]));
FIELD SaveOptions:="0")


Steh ich jetzt auf dem Schlauch oder wo ist mein Denkfehler?

Offline Keydins

  • Aktives Mitglied
  • ***
  • Beiträge: 163
  • Geschlecht: Männlich
Re: Komisches Problem mit @IF - bitte um Hilfe
« Antwort #3 am: 16.01.12 - 15:16:01 »
Dein Else müsste in diesem Fall in ein @Do() eingeschlossen werden, um als komplette Else-Anweisung verstanden zu werden.

Ich persönlich nutze aber auch lieber die von Bernhard vorgeschlagene Version, die Abbruchbedingung in einem @If mit leerem Else zu prüfen, da man in der Formelsprache ansonsten ganz schnell mit den Klammerebenen aneinander geraten kann.  :-\

Gruß
Dirk
« Letzte Änderung: 16.01.12 - 15:20:54 von Keydins »
Gruß Dirk

Aktuelle Notesumgebung
~800 BasicClients 9.0.1 FP9 SHF55
  10 FullClients 9.0.1 FP7 SHF143
    7 DominoServer 9.0.1 FP9 HF 139 / 64 Bit

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Komisches Problem mit @IF - bitte um Hilfe
« Antwort #4 am: 16.01.12 - 15:18:32 »
Das mit dem @Do ist nicht erforderlich. Es reicht ein "; ""); hinter der Prompt-Klammer.

Bernhard

Offline Keydins

  • Aktives Mitglied
  • ***
  • Beiträge: 163
  • Geschlecht: Männlich
Re: Komisches Problem mit @IF - bitte um Hilfe
« Antwort #5 am: 16.01.12 - 15:34:54 »
So wie Michael den Vorgang in seinem letzten Post beschrieben hat bräuchte er aber schon das @Do, oder?

Michaels Lösung:
Wenn(
   Kein Anhang
Dann
   Abbrechen
Sonst
   Restlicher Code
)

Bernhards Lösung:
Wenn(
   Kein Anhang
Dann
   Abbrechen
Sonst
   Nix/Leer
)

Restlicher Code
Gruß Dirk

Aktuelle Notesumgebung
~800 BasicClients 9.0.1 FP9 SHF55
  10 FullClients 9.0.1 FP7 SHF143
    7 DominoServer 9.0.1 FP9 HF 139 / 64 Bit

Offline watschn

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
Re: Komisches Problem mit @IF - bitte um Hilfe
« Antwort #6 am: 16.01.12 - 15:37:47 »
Die Lösung von Dirk mir dem @Do funktioniert - vielen Dank!

Wenn ich das wie von Bernhard vorgeschlagen mache, dann brauch ich aber zwei IF-Bedingungen. Also eine für den Abbruch mit @prompt (wenn Feldwert ist nicht "OK") und eine für den anderen Fall.

Hab ich wieder was gelernt, prima  :)

Offline Keydins

  • Aktives Mitglied
  • ***
  • Beiträge: 163
  • Geschlecht: Männlich
Re: Komisches Problem mit @IF - bitte um Hilfe
« Antwort #7 am: 16.01.12 - 15:46:16 »
Nein, auch bei der Lösung von Bernhard brauchst du kein zweites @If

@If(
   Anhang != "OK";
   @Return(
        @Prompt([Ok];"Fehler";"Kein Anhang!")
   );
   ""
);

... Hier dann der restliche Code ...

Wenn ein Anhang da ist, passiert im Else nichts und die Formel wird nach der Klammer ganz normal fortgesetzt. Ist kein Anhang da, wird über das Return abgebrochen und der restliche Code wird ignoriert. Ist grade bei längerem Code übersichtlicher, da man sich nicht mit noch einer zusätzlichen Klammerebene (die des @Do) belasten muss.
Gruß Dirk

Aktuelle Notesumgebung
~800 BasicClients 9.0.1 FP9 SHF55
  10 FullClients 9.0.1 FP7 SHF143
    7 DominoServer 9.0.1 FP9 HF 139 / 64 Bit

Offline watschn

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
Re: Komisches Problem mit @IF - bitte um Hilfe
« Antwort #8 am: 16.01.12 - 15:49:30 »
Achso, das mit dem Codeabbruch durch @return wußte ich nicht. Habe aber ewig in der Hilfe nach diesem Befehl gesucht

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
Re: Komisches Problem mit @IF - bitte um Hilfe
« Antwort #9 am: 16.01.12 - 15:56:23 »
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz