[gelöst]IF Bedingung Problem

16. Oktober 2012 12:38

Hallo,
irgendwie sitze ich heute auf der Leitung.
Ich möchte eine If Schleife erstellen. In diese soll nur gesprungen werden wenn Auftragsnr <> Auftragsnr1 und Zeilennr <> Zeilennr1 ist.
Bei gleicher Auftragsnr und unterschiedlicher Zeilennr soll auch in die Schleife gesprungen werden.
Habe das mit folgenden Befehl erfolglos probiert:

Code:
    IF (PPZVoriger.Auftragsnr <> Rec.Auftragsnr) AND (PPZVoriger.Zeilennr <> Rec.Zeilennr)) THEN BEGIN


Wo liegt hier mein Fehler?

lg
stony
Zuletzt geändert von stony am 17. Oktober 2012 11:22, insgesamt 1-mal geändert.

Re: IF Bedingung Problem

16. Oktober 2012 12:57

stony hat geschrieben:
Code:
    IF (PPZVoriger.Auftragsnr <> Rec.Auftragsnr) AND (PPZVoriger.Zeilennr <> Rec.Zeilennr)) THEN BEGIN


Wo liegt hier mein Fehler?


Es fe lt mindest ein '('.

HTH

Re: IF Bedingung Problem

16. Oktober 2012 13:00

Das ist vorhanden, habe nur falsch abgeschrieben.

Re: IF Bedingung Problem

16. Oktober 2012 13:08

Da war noch ein kleiner Denkfehler drin.
Es handelt sich um eine neue Auftragszeile, wenn Auftragsnr. ODER Zeilennr. (oder beides) unterschiedlich ist.
Darum:
Code:
IF (PPZVoriger.Auftragsnr <> Rec.Auftragsnr) OR (PPZVoriger.Zeilennr <> Rec.Zeilennr) THEN BEGIN

Re: IF Bedingung Problem

16. Oktober 2012 13:12

Meiner Meinung widersprichst du dich etwas, so das ich das nicht ganz nachvollziehen kann.

stony hat geschrieben:Ich möchte eine If Schleife erstellen. In diese soll nur gesprungen werden wenn Auftragsnr <> Auftragsnr1 und Zeilennr <> Zeilennr1 ist.
Bei gleicher Auftragsnr und unterschiedlicher Zeilennr soll auch in die Schleife gesprungen werden.
Habe das mit folgenden Befehl erfolglos probiert:


Wenn die Auftragsnummer auch gleich sein darf wieso nimmst du sie dann überhaupt mit in die Bedingung auf?

Oder hast du dich nur im AND/OR vertan?
Das wäre der Fall wenn mindestens eines der beiden Bedingungen ungleich ist.

Code:
IF ((PPZVoriger.Auftragsnr <> Rec.Auftragsnr) OR (PPZVoriger.Zeilennr <> Rec.Zeilennr)) THEN


mfg,
winfy

Re: IF Bedingung Problem

16. Oktober 2012 13:16

Genau so wie winfy und Natalie geschrieben haben ist es richtig. Die boolsche Logik ist halt eine andere als die menschliche ;-)

stony hat geschrieben:Ich möchte eine If Schleife erstellen.

Bitte nicht das Wort "Schleife" verwenden ... es handelt sich hier nicht um eine Iteration.

Re: IF Bedingung Problem

16. Oktober 2012 14:53

winfy hat geschrieben:Wenn die Auftragsnummer auch gleich sein darf wieso nimmst du sie dann überhaupt mit in die Bedingung auf?


Weil das notwendig ist :!:

Denn wenn jeder der beiden Aufträge nur eine Zeile hat, dann ist die Zeilennummer jeweils 10000, die Auftragsnummer aber unterschiedlich.

beantworte doch bitte mal folgende Tabelle, indem du dort das Ergebnis (true oder false für If-Anweisung ausführen ja oder nein einträgst)
Code:
Vorh. A.Nr. | A.-Nr.  | Vorh. Zeilennr, | Zeilennr. | Ergebnis
----------------------------------------------------------------
     10     |   10    |       10        |    10     |
     10     |   10    |       10        |    20     |
     10     |   20    |       10        |    10     |
     10     |   20    |       10        |    20     |


Gruß, Fiddi

Re: IF Bedingung Problem

16. Oktober 2012 15:05

fiddi hat geschrieben:Weil das notwendig ist :!:

Denn wenn jeder der beiden Aufträge nur eine Zeile hat, dann ist die Zeilennummer jeweils 10000, die Auftragsnummer aber unterschiedlich.


Das es notwendig ist weiß man erst was er damit erreichen will.

stony hat geschrieben:In diese soll nur gesprungen werden wenn Auftragsnr <> Auftragsnr1 und Zeilennr <> Zeilennr1 ist.
Bei gleicher Auftragsnr und unterschiedlicher Zeilennr soll auch in die Schleife gesprungen werden.


Ich wollte damit nur andeuten, dass bei genauer wortgetreuer Umsetzung des obigen Textes folgendes dabei herauskommt:

Code:
IF (((PPZVoriger.Auftragsnr <> Rec.Auftragsnr) AND (PPZVoriger.Zeilennr <> Rec.Zeilennr)) OR ((PPZVoriger.Auftragsnr = Rec.Auftragsnr) AND (PPZVoriger.Zeilennr <> Rec.Zeilennr))) THEN


und das wäre eben das gleiche wie:
Code:
IF (PPZVoriger.Zeilennr <> Rec.Zeilennr) THEN


Daher die Frage warum er das in die Bedingung dann mit aufnimmt.
Das er das vermutlich nicht so meint ist mir auch klar. ;)

mfg,
winfy

Re: IF Bedingung Problem

16. Oktober 2012 15:09

Mensch :lol:
Da habe ich versucht, meine Antwort so kurz wie möglich zu halten, damit das erst einmal leicht verdaut werden kann, und ihr erschlagt stony was-wäre-wenn-gemeint-wäre ;-)

Re: IF Bedingung Problem

16. Oktober 2012 15:19

Es bestand ja auch die Möglichkeit das stony es so meint wie er es schreibt! :wink:

Re: IF Bedingung Problem

16. Oktober 2012 15:22

Um dieses "was wäre wenn"- Gefrage und Interpretiere zu vermeiden, hatte ich die Tabelle aufgemalt. :-x
Damit, um meinen verstorbenen Nachbarn zu zitieren, sollte stony "Zeichen und Wunder tun", will sagen aufschreiben, was er tatsächlich meint.
Mit dem Ergebnis sollten wir zumindest in dem Punkt, was er tatsächlich will, eine eindeutige Informationen bekommen :wink:


Gruß, Fiddi

Re: IF Bedingung Problem

16. Oktober 2012 16:21

Ich bräuchte folgendes Ergebnis:

Vorh. A.Nr. | A.-Nr. | Vorh. Zeilennr, | Zeilennr. | Ergebnis
----------------------------------------------------------------
10 | 10 | 10 | 10 | Nein
10 | 10 | 10 | 20 |JA
10 | 20 | 10 | 10 |JA
10 | 20 | 10 | 20 |JA

Die If-Anweisung sollte also immer true ergeben, außer wenn die Auftragsnummern UND die Zeilennummern gleich sind.

Re: IF Bedingung Problem

16. Oktober 2012 16:38

Hallo,

du möchtest also die IF- Anweisung ausführen, wenn sich Auftragsnummer oder Zeilennummer unterscheiden, oder etwas komplizierter: nicht sowohl Auftragsnummer auch Zeilennummer jeweils gleich sind.

Nun das schreibt man einfach so:
Code:
    IF (PPZVoriger.Auftragsnr <> Rec.Auftragsnr) OR (PPZVoriger.Zeilennr <> Rec.Zeilennr) THEN BEGIN


oder etwas umständlicher, wie du es beschrieben hast:
Code:
    IF NOT ((PPZVoriger.Auftragsnr = Rec.Auftragsnr)  AND (PPZVoriger.Zeilennr = Rec.Zeilennr)) THEN BEGIN


Gruß, Fiddi

Re: IF Bedingung Problem

17. Oktober 2012 08:39

Und da ist sie, die boolsche Algebra :D

Re: IF Bedingung Problem

17. Oktober 2012 08:47

Und da ist sie, die boolsche Algebra :D


Jepp, hab mich im Studium noch oft genug mit KV- Diagrammen rum schlagen müssen. :mrgreen:

Gruß, Fiddi

Re: IF Bedingung Problem

17. Oktober 2012 10:05

Ich kann dazu nur sagen: KIS, Keep It Simple.

x OR y ist viel besser zu lesen als NOT(x AND y)

Re: [gelöst]IF Bedingung Problem

17. Oktober 2012 11:44

Wie schön, dass ihr meinem Beitrag so zustimmt ;-)

Re: [gelöst]IF Bedingung Problem

17. Oktober 2012 15:15

Natalie hat geschrieben:Wie schön, dass ihr meinem Beitrag so zustimmt


Das er das gemeint hat, hatte ich mir auch schon gedacht. Das hatte er aber nicht geschrieben. Deshalb die Tabelle :wink:

Seine Aussage:
1. "In diese soll nur gesprungen werden wenn Auftragsnr <> Auftragsnr1 und Zeilennr <> Zeilennr1 ist."
2. "Bei gleicher Auftragsnr und unterschiedlicher Zeilennr soll auch in die Schleife gesprungen werden."

Code:
    Vorh. A.Nr. | A.-Nr.  | Vorh. Zeilennr, | Zeilennr. | Ergebnis
    ----------------------------------------------------------------
         10     |   10    |       10        |    10     |  NEIN
         10     |   10    |       10        |    20     |  JA       2.)
         10     |   20    |       10        |    10     |  NEIN
         10     |   20    |       10        |    20     |  Ja       1.)


Gruß, Fiddi