Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Sonnenaufgang am 04.11.05 - 18:08:13

Titel: Select mit "oder" - Funktion
Beitrag von: Sonnenaufgang am 04.11.05 - 18:08:13
Liebe Noteskollegen und -kolleginnen,

In einer Ansichtsauswahl möchte ich Datensätze anzeigen in denen entweder  der Wert des einen Feldes größer 0 ist oder der Wert eines 2. Feldes größer 0 ist.

Kann mir jemand sagen, wie dafür die Formel lauten müsste?

Oder: wie heißt in der Formelsprache der "or" - Befehl?

Vielen Dank im voraus.

Daniel
Titel: Re: Select mit "oder" - Funktion
Beitrag von: eknori (retired) am 04.11.05 - 18:09:35
Or = PIPE = |

Titel: Re: Select mit "oder" - Funktion
Beitrag von: Sonnenaufgang am 04.11.05 - 18:16:47
Hallo eknori,

erstmal vielen Dank für die schnelle Antwort.

Das funktioniert bei mir aber nicht. Er selektiert dann nur, was vor dem "|" steht.

Daniel
Titel: Re: Select mit "oder" - Funktion
Beitrag von: Sonnenaufgang am 04.11.05 - 18:19:46
Ich muss mich korrigieren, was hinter dem "|" steht.
Titel: Re: Select mit "oder" - Funktion
Beitrag von: flaite am 04.11.05 - 18:28:02
normal nicht. Kannst du bitte mal die Select formel posten.
Code
select feld1>0 | feld2>2 
müsste klappen.

Vielleicht hat feld1 keinen numerischen Datentyp?
Titel: Re: Select mit "oder" - Funktion
Beitrag von: eknori (retired) am 04.11.05 - 18:34:12
Mit dem | stehe ich ehrlich gesagt auch manchmal auf dem Kriegsfuß; teilweise muss ich das | durch ein & ersetzen, damit es funktioniert. Obwohl das manchmal allen Regeln der Logik widerspricht ...
Titel: Re: Select mit "oder" - Funktion
Beitrag von: Sonnenaufgang am 04.11.05 - 18:37:45
select (Form = "Rolle") & Fehler > 0 | (Form = "Rolle") & Abrisse > 0

Ich glaube, wenn ich nach dem  "|" "(Form = "Rolle") " weglasse, funktioniert es.

Aber korrekt ist dass dann nicht, oder?
Titel: Re: Select mit "oder" - Funktion
Beitrag von: eknori (retired) am 04.11.05 - 18:41:17
ja, ja, die Klammern:

(Form = "Rolle" & Fehler > 0 )  | (Form = "Rolle" & Abrisse > 0 )

wobei man das jetzt noch vereinfachen kann ...

Form = "Rolle" & ( Fehler > 0 | Abrisse > 0 )

Du musst aber sicherstellen daß Fehler und Abrisse wirklich numerisch  sind
Titel: Re: Select mit "oder" - Funktion
Beitrag von: TMC am 04.11.05 - 18:47:06
Du kannst das auch aufteilen

_AnzeigenWenn1 := Fehler > 0
_AnzeigenWenn2 := Abrisse > 0
_AnzeigenWenn3 := Form = "Rolle"

Select _AnzeigenWenn3 & (_AnzeigenWenn1 | _AnzeigenWenn2)

Damit ist klar was passieren soll: erstmal werden nur Doks der Maske "Rolle" angezeigt. Außerdem (wegen dem "&") muss entweder Bedingung 1 ODER ("|") Bedingung 2 erfüllt sein.
Titel: Re: Select mit "oder" - Funktion
Beitrag von: flaite am 04.11.05 - 18:50:29
Ich glaub, dass & einfach eine höhere Präzedenz (oder wie das heisst)* hat. Ich setze immer massig Klammern.

* funktioniert so ähnlich wie Punkt vor Strichrechnung.
3 + 4 * 2 = 11
* hat höhere Präzedenz als +
Titel: Re: Select mit "oder" - Funktion
Beitrag von: eknori (retired) am 04.11.05 - 18:53:32
@Axel: das habe ich so noch nicht untersucht, danke für den Tip

Zitat
Ich setze immer massig Klammern
So helfe ich mir auch immer; und auch das , was TMC angeregt hat, erleichtert den Zusammenbau von komplexen Select Formeln ...
Titel: Re: Select mit "oder" - Funktion
Beitrag von: Gandhi am 07.11.05 - 11:23:12
Die müssten gleich bewertet werden - dann also von links nach rechts bearbeitet werden.
Eine höhere Präzedenz hat nur Not (!). Und und oder sind eher wie plus und minus als wie plus und mal (mathematisch gesehen).
ABER: An Klammern spart man nicht - auch wenn es ein paar Elektronen kostet.
Gut ist es auch lange logische Ausdrücke in Teile zu zerlegen, wie es hier auch schon vorgeschlagen wurde.
Und dann noch ein Hinweis für die Benutzer Schweizer Tastaturen - hier gibt es zwei Pipe Symbole | und ¦ aber nur das durchgezogene funktioniert (sinnigerweise ist das auf meiner Tastatur falsch herum auf die Tasten gedruckt - da habe mich für einen halben Tag für schwachsinnig gehalten...).
Titel: Re: Select mit "oder" - Funktion
Beitrag von: Sonnenaufgang am 08.11.05 - 12:59:28
An alle,

vielen Dank für Eure Hilfe und die guten Tipps.

Daniel
Titel: Re: Select mit "oder" - Funktion
Beitrag von: flaite am 08.11.05 - 13:46:31
Und und oder sind eher wie plus und minus als wie plus und mal (mathematisch gesehen).
Du könntest recht haben. Laut Designer Hilfe Dokument (operator precedence) haben &, | sowie ! die gleiche Präzedenz 7 (müssten also von links nach rechts abgearbeitet werden.

Besonders geschickt finde ich es nicht.
& (and), | (or) sind anders als +,-
Code
((Stadt = Köln) AND (Augenfarbe = "braun")) OR (alter > 36)
kommt ja zu einem unterschiedlichen Ergebnis wie
Code
(Stadt = Köln) AND ((Augenfarbe = "braun") OR (alter > 36))
Bei +/- kommt man dagegen immer zu dem gleichen Ergebnis, egal wie man die Klammern setzt.
Code
(4 - 3) + 2 = 4 + (-3 + 2) = 3 

Gut. Man könnte festlegen, dass die logischen Operatoren (&/| oder AND/OR) immer von links nach rechts abzuarbeiten sind.

In Java ist es auf jeden Fall anders: && hat eine höhere Präzedenz als ||.
(wobei ich das nicht nutze und grundsätzlich Klammern setze).

Gruß Axel
Titel: Re: Select mit "oder" - Funktion
Beitrag von: Gandhi am 08.11.05 - 14:58:28
Eine Unterschiedliche Prezedenz bei logischen Operatoren ist meines Wissens mathematisch nur für das Nicht zulässig (das ja eine Art logisches Vorzeichen ist, also der Operation *-1 ähnlich ist).
Hier irrt dann Java - wobei das kein Problem ist, solange das Verhalten bekannt ist.
Da man sich NIE auf unsichere Prezedenzfolgen verlassen sollte empfehle ich auf jeden Fall aber eine sprechende Strukturierung durch Hilfsvariablen und Klammern.

Titel: Re: Select mit "oder" - Funktion
Beitrag von: flaite am 08.11.05 - 15:05:16
Eine Unterschiedliche Prezedenz bei logischen Operatoren ist meines Wissens mathematisch nur für das Nicht zulässig (das ja eine Art logisches Vorzeichen ist, also der Operation *-1 ähnlich ist).
Hier irrt dann Java -

Wieso  irren ???
Das sind doch nur axiomistische Konventionen.
Bei sowas kann man sich sicher sein, dass die sich ihre Gedanken gemacht haben, als dies festgelegt wurde.
Warum das so ist, weiss ich allerdings auch nicht.
In C scheint es genau wie in Java festgelegt zu sein.
http://www.swansontec.com/sopc.htm
(ich hab bisher verschwiegen, dass auch in Java die &, | über den &&, || stehen, was aber nicht viel zur Sache tut).

Vermutlich haben die das in Java einfach von C übernommen und in C gab es irgendwelche obskuren Gründe.
Titel: Re: Select mit "oder" - Funktion
Beitrag von: diali am 08.11.05 - 15:07:18
Bei +/- kommt man dagegen immer zu dem gleichen Ergebnis, egal wie man die Klammern setzt.
Code
(4 - 3) + 2 = 4 + (-3 + 2) = 3 
Kann ich so nicht nachvollziehen, denn dann müsste:
10 - 3 + 3 = 10
10 - (3 + 3) = 4
und damit 10 = 4 sein.
Titel: Re: Select mit "oder" - Funktion
Beitrag von: flaite am 08.11.05 - 15:10:34
Kann ich so nicht nachvollziehen, denn dann müsste:
10 - 3 + 3 = 10
10 - (3 + 3) = 4
und damit 10 = 4 sein.

Du könntest recht haben.
Ich hab das so gemeint:

10 -3 + 3 = 10
10 + (-3 + 3) = 10

Bei mir ist alles Adition. Eindeutig unsauber gedacht von mir.

Gruß Axel
Titel: Re: Select mit "oder" - Funktion
Beitrag von: Gandhi am 08.11.05 - 15:25:02
Das mit dem Irren meinte ich hinsichtlich 'mathematischer Korrektheit' also aus Sicht der Mathematik - wobei ich mir jetzt nicth mal 100% sicher bin, dass dies auch stimmt - ich schaue das aber mal nach.
Tatsächlich sind das axiomatische Dinge - aber: Die Frage ist, wie das in der Realität wäre

ist Du heute Senf oder Ketchup und Maionäse - hört sich für so an, als ob das 'und' rein sprachlich die höhere Prezedenz hat - im verbalen aber eindeutig von der Betonung (Klammerung) abhängig.
Bei längerem Sinnieren über den Beispielsatz springt aber für mich die Präzedenz und ich muss sagen, dass er so nicht hundertprozent eindeutig ist, bzw. der Satz zwei Bedeutungen haben kann.
Also: Klammern!
Titel: Re: Select mit "oder" - Funktion
Beitrag von: diali am 08.11.05 - 15:32:45
im Sprachgebrauch wird auch oft "oder" für "entweder oder" verwendet