AND und OR in VBScript

Hallo, werte Experten,

liegt es im Bereich des Möglichen, daß VBScript logische Verknüfpungen in Bedingungen nicht verarbeitet? Oder stell ich mich nur blöd an? Also, z.B. wird bei
„If anreisetag Letzter OR abreisetag Letzter Then“
scheinbar nur die erste Bedingung überprüft und ab dem ersten OR der Rest ignoriert. (Der Kram befindet sich in ASP-Seiten)

Kann mich jemand aufklären?

schonmal Danke
Sibylle

If anreisetag Letzter OR abreisetag Letzter Then

…scheinbar nur die erste Bedingung überprüft und ab dem ersten OR der Rest ignoriert.

yep … so ist das halt wenn man mit OR Abfragen macht. Trifft in Deinem Fall die 1te Bedingung zu, nämlich das „Anreisetag kleiner Erster ist“, dann wird auf den Rest ‚gepfiffen‘, wenn diese mit OR verbunden sind.

Was möchtest Du denn eigentlich fragen?!? Zuerst einen „ganzen, verständlichen deutschen Satz“ bilden und dann werden wir versuchen mit IF, AND, OR eine Abfrage zu gestalten.

greets from michL (vienna)

Hai, MichL aus Vienna

If anreisetag Letzter OR
abreisetag Letzter
Then

…scheinbar nur die erste Bedingung überprüft und
ab dem ersten OR der Rest ignoriert.

yep … so ist das halt wenn man mit OR Abfragen macht. Trifft
in Deinem Fall die 1te Bedingung zu, nämlich das „Anreisetag
kleiner Erster ist“, dann wird auf den Rest ‚gepfiffen‘, wenn
diese mit OR verbunden sind.

Ja, dit soll ja ooch, aba wennse nich zutrifft, denn soller doch den Rest übaprüfn…menno *quengel-Gesicht-aufsetz*

Was möchtest Du denn eigentlich fragen?!? Zuerst einen
„ganzen, verständlichen deutschen Satz“ bilden und dann werden
wir versuchen mit IF, AND, OR eine Abfrage zu gestalten.

Okeh, im janzn Satz:
Ich habe ein Recordset-Objekt, in dem verschiedene Preisangaben mit zugehöriger Gültigkeitszeitspanne angegeben sind, aus denen das erste Datum, das mit einem Preis versehen ist, (erster) und das letzte Datum, das mit einem Preis versehen ist, (letzter), ermittelt werden, welche dann mit einer weiteren Zeitspanne, die zwischen anreisetag und abreisetag, verglichen werden soll, mit dem gewünschten Ergebnis, daß das dann folgende Skript nur ausgeführt wird, wenn sich nicht der gesamte anreisetag-abreistag-Zeitraum komplett innerhalb des erster-letzter-Zeitraums befindet. :wink:
Oder anders: wenn sich nicht für jeden Tag, der zwischen anreise und abreise befindet, ein Tag in in einem der Recordset-Datensätze finden lässt, soll das folgende ausgeführt werden.

greets from michL (vienna)

back-greetings von
Sibylle (Berlin!)

wenn sich nicht der gesamte anreisetag-abreistag-Zeitraum
komplett innerhalb des erster-letzter-Zeitraums befindet. :wink:

IF abreise letzter THEN
'An-Abreise liegt komplett ausserhalb
ELSE
'An-Abreise liegt irgendwo dazwischen
'aber nicht unbedingt komplett!!!
END IF

Ich hoffe, ich habe es richtig verstanden.
greets from michL

'aber nicht unbedingt komplett!!!

Soll er aber - daher diese elendich lange Bedingung

Den gleichen „ich lass den Rest einfach weg“-Effekt habe ich aber auch hier:
Do While NOT rsPreisliste.EOF AND NOT eintag >= rsPreisliste(„Von“) AND NOT eintag

Du musst aufpassen, was du da vergleichst!
Z.B., dass du keinen String-Vergleich auf Datumswerten machst!

Wenn in „eintag“ z.B. ein String drinsteht, das Tabellenfeld „von“ aber ein Datumsfeld ist, geht der Vergleich garantiert daneben.

Ansonsten kann es nie schaden:

  1. ein paar mehr Klammern zu machen
  2. nicht zu viel in eine Zeile zu schreiben (das debuggt sich dann auch besser!)
  3. explizite Typkonversionen zu machen

also z.B. für Debug-Zwecke:

Do 
 If rsPreisliste.EOF then
 Response.Write "at eof
"
 exit do
 end if
 if CDate(eintag) "
 exit do
 end if
 if CDate(eintag) \> CDate(rsPreisListe("bis")) then
 Response.Write "\> bis
"
 exit do
 end if
 '...
Loop

Je nach Entwicklungsumgebung gibt es natürlich auch genialere Ansätze zum Debuggen…

Gruß aus dem Norden
Reinhard Kraasch

wenn Apfel gleich Birne dann Obstsalat
Hai, Reinhard

ich hab schon brav Datum mit Datum verglichen, trotzdem checkt er nur die erste Bedingung (blöder Hund, blöder *'puter-tret*)
Ich hab das jetzt mit gestaffelten if-then-s umgangen - scheußlich aber funzt

Dank Dir für die Mühe
greetz
Sibylle