Domino 9 und frühere Versionen > ND8: Entwicklung

Komisches Problem mit @IF - bitte um Hilfe

(1/2) > >>

watschn:
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

koehlerbv:
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

watschn:
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?

Keydins:
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

koehlerbv:
Das mit dem @Do ist nicht erforderlich. Es reicht ein "; ""); hinter der Prompt-Klammer.

Bernhard

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln