[Gelöst] Frage zu IF THEN

1. Oktober 2010 18:11

Hallo,

irgendwie habe ich das IF Then noch nicht ganz kapiert. :oops:

1. Was bedeutet denn das?
Code:
IF CREATE(ObjModel) THEN ;
Anweisung2
Anweisung3
usw.


2. Wie kann ich denn eine zweite IF Anweisung erstellen und dann bei der ersten ein Else?
Code:
IF LockTables THEN
  IF NOT CONFIRM(Text003,TRUE) THEN
    EXIT
ELSE // Dieses Else soll sich auf das erste IF beziehen.
  IF NOT CONFIRM(Text004,TRUE) THEN
    EXIT;


Im obigen Beispiel behandelt NAV den Else-Teil zur zweiten IF-Anweisung.

Gruß
Ralf
Zuletzt geändert von ralf5 am 1. Oktober 2010 18:40, insgesamt 1-mal geändert.

Re: Frage zu IF THEN

1. Oktober 2010 18:17

Hallo Ralf5,


Code:
  IF CREATE(ObjModel) THEN ;

Wenn der CREATE fehl schlägt würde Navision normaler weise mit einem Fehler aussteigen wenn der Rückgabewert nicht zugewiesen wird.

So kann man es auch machen
Code:
ok := CREATE(ObjModel)

Dann muss man ok aber definieren. Wenn es aber unwichtig ist ob der CREATE klappt oder nicht kann man den o.g Code nutzen.

Frage 2
Code:
IF LockTables THEN
BEGIN <<<<<<<<<<<<<<<<<<<<<<<<
  IF NOT CONFIRM(Text003,TRUE) THEN
    EXIT
END <<<<<<<<<<<<<<<<<<<<<
ELSE // Dieses Else soll sich auf das erste IF beziehen.
  IF NOT CONFIRM(Text004,TRUE) THEN
    EXIT;


gruss
Jörg

Re: Frage zu IF THEN

1. Oktober 2010 18:37

Ahhh, jetzt habe ichs kapiert. :-D

Da wär ich ja nie drauf gekommen, das bei
Code:
IF CREATE(ObjModel)  THEN ;
es aber unwichtig ist ob der CREATE klappt oder nicht.

Weil mal ehrlich, wenns unwichtig ist, dann kann ich es ja auch gleich weglassen oder ? :lol: :lol: :lol:

Vielen Dank und schönes WE
Ralf

Re: Frage zu IF THEN

1. Oktober 2010 20:55

ralf5 hat geschrieben:Weil mal ehrlich, wenns unwichtig ist, dann kann ich es ja auch gleich weglassen oder ? :lol: :lol: :lol:

Nein, solche Kontrukte sollen ja nur Fehler verhindern, weil etwas schon vorhanden ist und es in diesem Fall nicht geändert werden soll.

Das gleiche gibt es z.B. für das Einfügen von Datensätzen.
Wenn man die mit
Code:
IF TabelleXY.INSERT then;

einfügt, dann werden alle neuen sauber angelegt aber die schon vorhandenen (die also die gleichen Primärschlüsselwerte wie ein neu dazugekommener haben) nicht geändert weil dort der INSERT-Vorgang eben nicht mehr geht.

Re: [Gelöst] Frage zu IF THEN

2. Oktober 2010 11:21

ralf5 hat geschrieben:Hallo,

irgendwie habe ich das IF Then noch nicht ganz kapiert. :oops:

1. Was bedeutet denn das?
Code:
IF CREATE(ObjModel) THEN ;
Anweisung2
Anweisung3
usw.


2. Wie kann ich denn eine zweite IF Anweisung erstellen und dann bei der ersten ein Else?
Code:
IF LockTables THEN
  IF NOT CONFIRM(Text003,TRUE) THEN
    EXIT
ELSE // Dieses Else soll sich auf das erste IF beziehen.
  IF NOT CONFIRM(Text004,TRUE) THEN
    EXIT;


Im obigen Beispiel behandelt NAV den Else-Teil zur zweiten IF-Anweisung.

Gruß
Ralf


Teil 2 wurde schon beantwortet, zu Teil 1 kann ich nur empfehlen, das hier zu lesen:

http://www.programmersbase.net/Content/ ... eption.htm

Hochschprachen wie Java, C# etc. haben try/catch Konstrukte, die für den Programmiereinsteiger und Codeleser einleuchtender und intuitiver sind.
Try = versuchen, Catch = einfangen. :-)

Re: [Gelöst] Frage zu IF THEN

4. Oktober 2010 17:41

Danke für den Link.

Die Fehlerbehandlung kenne ich auch aus .NET.

Try Catch Ist auch für erfahrene Entwickler nicht schlecht. :-D

Jedenfalls würde ich z.B beim einfügen von Datensätzen eher vorher abfragen ob der Datensatz schon da ist
also Statt
Code:
IF INIT() THEN ;

Code:
IF Record.ISEMPTY THEN
 INIT()


Gelegentlich, wenn ich mir nicht sicher war was ich mache habe ich auch mal ein Try Catch genommen ohne den Fehler zu behandeln :mrgreen:

Gruß
Ralf

Re: [Gelöst] Frage zu IF THEN

4. Oktober 2010 17:56

ralf5 hat geschrieben:
Code:
IF Record.ISEMPTY THEN
 INIT()


So nicht. ISEMPTY zeigt an, ob überhaupt Datensätze in der (ggf. gefilterten) Tabelle vorhanden sind.

Re: [Gelöst] Frage zu IF THEN

4. Oktober 2010 18:31

Natürlich Setze ich vorher einen Filter oder Range oder hole den Datensatz mit Get falls möglich :-D

Gruß
Ralf

Re: [Gelöst] Frage zu IF THEN

5. Oktober 2010 08:59

FILTER + ISEMPTY ist OK, aber GET + ISEMPTY ist Schmarrn, da ISEMPTY nur auf Filter greift. Heißt, er wird, wenn er den Datensatz nicht findet trotzdem auf die Schnauze fallen. Deswegen du musst IF NOT GET verwenden.

Re: [Gelöst] Frage zu IF THEN

5. Oktober 2010 09:16

Sebastian Pfliegel hat geschrieben:Deswegen du musst IF NOT GET verwenden.

.. was IMHO auch für später oder andere Menschen verständlicher macht, was man damit bezwecken wollte.

Re: [Gelöst] Frage zu IF THEN

5. Oktober 2010 14:19

McClane hat geschrieben:
Sebastian Pfliegel hat geschrieben:Deswegen du musst IF NOT GET verwenden.

.. was IMHO auch für später oder andere Menschen verständlicher macht, was man damit bezwecken wollte.


Oh Gott, ich hab eine Grammatik wie Meister Yoda :oops: ( :mrgreen: )

Re: [Gelöst] Frage zu IF THEN

5. Oktober 2010 14:25

Sebastian Pfliegel hat geschrieben:ich hab eine Grammatik wie Meister Yoda

.. zusätzlich zu dessen Weisheit :wink:

Re: [Gelöst] Frage zu IF THEN

5. Oktober 2010 15:52

@Meister Yoda

Wir sind hier ja auch nicht im deutsch Forum

@McClane
Wenn schon dann: Möge der Saft ääähh die Macht mit dir sein :mrgreen: