info@a-coding-project.de

VBScript: Abfragen

Abfragen gehören zu den klassischen Mitteln der Ablaufsteuerung. Mit Ihnen werden Entscheidungen getroffen durch die der Programmablauf variiert wird.

If-Abfrage

Die einfachste Form der Abfragen ist die If-Abfrage. Hierbei wird danach entschieden ob ein bestimmter Fall eingetreten ist und entsprechend ein Anweisungszweig ausgeführt oder eben nicht ausgeführt. Die If-Abfrage beginnt mit dem Wort if gefolgt von der Bedingung. Nach der Bedingung folgt das Wort then sowie anschließend die auszuführenden Anweisungen. Die Abfrage endet mit den Worten end if. Die Funktionsweise ist ähnlich leicht erklärt: Gelangt der Interpreter an eine Stelle an der eine Abfrage steht, wird zunächst die Bedingung ausgewertet. Ist ihr Resultat true führt der Interpreter den Anweisungsteil zwischen then und end if aus und fährt dann mit den Anweisungen nach end if weiter. Ergibt die Auswertung der Bedingung false, wird gleich mit den Anweisungen nach end if fortgefahren - alle Anweisungen dazwischen werden übersprungen. Beispiel:

a = 3
if a = 3 then
  a = 9
end if

Im Beispiel wird a mit 3 belegt. Die Abfrage prüft nun ob a den Wert 3 hat. Da das wahr (true) ist, wird der Teil danach ausgewertet und a auf 9 gesetzt.

If-else-Abfrage

Etwas komplexer wird es bei der If-else-Abfrage. Sie Ähnelt soweit der If-Abfrage, allerdings mit dem Unterschied, dass ein alternativer Anweisungszweig geschaffen wird. Der Alternative Anweisungszweig wird dabei direkt in die If-Abfrage zwischen then und end if durch das Wort else hinein notiert. Der If-Bereich endet dann mit dem Wort else und der else-Bereich endet mit end if.
Der Alternative Bereich wird vom Interpreter immer dann ausgeführt, wenn die Bedingung der If-Abfrage mit false ausgewertet wurde. Beispiel:

a = 3
if a = 4 then
  a = 9
else
  a = 6
end if

Im Beispiel wird wieder a mit 3 belegt. Die Abfrage prüft nun, ob a den Wert 4 hat. Da dies nicht der Fall ist (false), fährt der Interpreter mit dem else-Zweig fort und setzt a gleich 6. Anschließend ist die Abfrage wiederum beendet und alle nachfolgenden Anweisungen würden bearbeitet werden.

If-elseif-Abfrage

Noch einen Schritt weiter geht die If-elseif-Abfrage. Sie kombiniert einen else-Bereich mit einer weiteren Bedingung und schafft damit einen quasi bedingten Alternativbereich. Zur Notation wird einfach ein else-Bereich mit einer if-Abfrage kombiniert: Man notiert innerhalb des if-Bereichs das Wort elseif gefolgt von der Bedingung und dem Wort then.
Prinzipiell können dann beliebig viele elseif-Bereiche folgen sowie - zum Abschluss - ein else-Bereich. Beispiel:

a = 3
if a = 1 then
  a = 9
elseif a = 2 then
  a = 12
elseif a = 3 then
  a = 15
else
  a = 18
end if

Im Beispiel wird der Wert von a gleich mehrmals geprüft. Als erstes prüft der Interpreter ob a gleich 1 ist. Da dies nicht der Fall ist springt er zur nächsten Bedingung und prüft diese. Da a auch nicht gleich 2 ist wird wiederum zur nächsten Bedingung gesprungen. Da diese nun mit true ausgewertet werden kann, führt der Interpreter alle Anweisungen dieses Bereichs aus (setzt also a gleich 15) und beendet die Abfrage. Ist die Abfrage beendet würden alle nachfolgenden Anweisungen bearbeitet werden.
Bitte beachten Sie: Würde schon die erste oder zweite Bedingung mit true ausgewertet werden können, würde der Interpreter schon dort den entsprechenden Bereich ausführen und keine weiteren Bedingungen auswerten, sondern schon bei der nächsten Bedingung die Abfrage beenden.

Verschachtelung von Abfragen

Um den Programmablauf noch besser steuern zu können, können Bedingungen natürlich auch verschachtelt werden. In vielen Fällen kann man diese Verschachtelung allerdings auch durch den richtigen Einsatz von Operatoren ersparen. Beispiel:

' Lange Variante:
a = 3 : b = 4 : c = 0
if a = 0 then
  if b > 0 then
    c = 1
  else
    c = 2
  end if
else
  if b > 0 then
    c = 3
  else
    c = 4
  end if
end if

' kurze Variante
a = 3 : b = 4 : c = 0
if a = 0 and b > 0 then
  c = 1
elseif a = 0 then
  c = 2
elseif b > 0 then
  c = 3
else
  c = 4
end if

Select-Case-Abfrage

Sobald mehrere mögliche Ergebnisse einer Bedingung entstehen können, wird im Allgemeinen eine Select-Case-Abfrage verwendet. Sie funktioniert in etwa wie mehrere If-Abfragen nur mit dem Unterschied, dass man dabei weniger schreiben muss. Schauen wir sie uns einfach mal an:

Steuerklasse = 4
Select Case Steuerklasse
  Case 1
    Steuern = "5 %"
  Case 2
    Steuern = "15 %"
  Case 3 , 4
    Steuern = "20 %"
  Case Else
    Steuern = "25 %"
End Select

Im Script wird zunächst eine Variable Steuerklasse erzeugt, die den Wert 4 erhält. Anschließend folgt die Select-Case-Abfrage. Sie beginnt mit den beiden Worten select case gefolgt von der Variablen, die ausgewertet werden soll. Anschließend können nun beliebig viele Case-Bereiche folgen. Diese werden jeweils mit dem Wort case gefolgt von einem oder mehreren Werten eingeleitet. Nach dem/den Wert/en folgen die Anweisungen, die ausgeführt werden sollen, wenn Variablenwert und Case-Wert übereinstimmen. Als letztes kann optional ein Else-Case folgen. Dieser wird dann ausgeführt, wenn keiner der vorhergehenden Case-Werte übereinstimmend war. Letztendlich schließt die Abfrage mit den Worten end select.
Bei der Abfrage des Beispiels würde der Interpreter entsprechend zuerst den aktuellen Wert von Steuerklasse prüfen. Anschließend wird der Case-Bereich heraus gesucht, der übereinstimmend ist - in unserem Fall der dritte mit dem Wert 3 und 4. Somit wird die Variable Steuern auf "20 %" gesetzt und die Abfrage ist beendet. Sollte Steuerklasse keinen der Werte 1, 2, 3 oder 4 haben, würde der Else-Case ausgeführt werden.

Weiterlesen: ⯈ Operatoren

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Auch interessant