Warum noch ein Access-Buch?
Für wen ist das Buch?
Jetzt bestellen
+ direkter Download des eBooks!
Nur EUR 59,95!
Fehler gefunden?
Bitte melden!
Wünsche an das Buch?
Her damit!
Was denken die Leser über dieses Buch?
Lesen Sie aktuelle Rezensionen!
Kapitel des noch nicht veröffentlichten Buchs zum Downloaden, Probelesen und Kommentieren
Beispieldatenbanken
Zusätzliches Material

Das Buch im HTML-Format

Für unbestimmte Zeit bieten Addison-Wesley und André Minhorst den kompletten Inhalt des Buchs als Download an. Schauen Sie rein und informieren Sie sich über den Inhalt! Und wenn Ihnen das Buch nützlich erscheint und Sie glauben, dass Sie etwas gelernt haben oder durch das Gelesene sogar etwas Zeit und somit Geld bei Ihrer Arbeit einsparen konnten, können Sie sich ja beim Autor und beim Verlag revanchieren - beispielsweise durch den Kauf dieses Buchs.

Am schönsten wäre es natürlich, wenn Sie das Buch direkt hier bestellen - Sie erhalten das Buch dann direkt vom Verlag, und der Autor und Verlag haben dann noch mehr davon, als wenn Sie es anderswo kaufen.

Danke für Ihr Interesse!

7.7 Kontrollstrukturen

7.7.1 If...Then-Anweisung

Die If...Then-Anweisung dient dem Verzweigen in verschiedene Unterabschnitte aufgrund einer Bedingung. Die Erweiterung in Form einer If...Then...Else-Anweisung erlaubt auch die Verwendung mehrerer Kriterien.

Die einfachste Variante prüft nur eine Bedingung und führt in Abhängigkeit davon die zwischen If...Then und End If liegenden Anweisungen aus. Befindet sich dort nur eine Anweisung, können Sie die End If-Anweisung weglassen und den If Then-Teil und die auszuführende Anweisung in eine Zeile schreiben (siehe weiter oben Abschnitt 7.3.5, »Anweisungen zusammenfassen«).

Wahrscheinliche Fälle nach oben

Wenn die If Then-Anweisung nicht nur eine Bedingung, sondern mehrere und damit entsprechende Else- beziehungsweise ElseIf-Abschnitte enthält, sollten Sie den am wahrscheinlichsten eintretenden Fall nach oben setzen:

If bolWahrscheinlicherFall Then
    'Wahrscheinlicher Fall
Else
    'Weniger wahrscheinlicher Fall
End If

Das Gleiche gilt für If...Then-Anweisungen mit mehr als einer Else-Bedingung.

Keine leeren Zweige

Oft formulieren Entwickler eine Bedingung, die so nur selten oder gar nicht eintritt. Im letzteren Fall bleibt dann die erste Verzweigung völlig leer:

If bolSehrUnwahrscheinlich = True Then
    'leere Verzweigung
Else
    'sehr wahrscheinlicher Fall
End If

Wenn Sie einmal eine derartige If Then-Anweisung erstellen und erst später bemerken, dass die genannte Bedingung selten oder nie eintritt, formulieren Sie die Bedingung um oder verneinen Sie diese einfach. Alternativ können Sie auch die einzelnen Zweige vertauschen.

If bolSehrUnwahrscheinlich = False Then
    'sehr wahrscheinlicher Fall
Else
    'leere Verzweigung
End If

oder

If Not bolSehrUnwahrscheinlich Then
    'sehr wahrscheinlicher Fall
Else
    'leere Verzweigung
End If

Oder-Verknüpfungen in If- oder ElseIf-Bedingungen

Im Falle von Oder-Verknüpfungen im If- oder im ElseIf-Abschnitt sollten Sie die Verwendung einer Select Case-Anweisung in Erwägung ziehen. Diese Anweisung ist wesentlich flexibler bei der Verarbeitung von Oder-Verknüpfungen.

Alle erwarteten Fälle behandeln

Bevor Sie eine If...Then-Abfrage programmieren, führen Sie sich alle denkbaren Fälle vor Augen. Legen Sie für all diese Fälle konkrete If/ElseIf-Zweige an. Die schlechtere Alternative wäre, nur die Fälle exakt zu erfassen, die Sie interessieren, und alles andere durch den Else-Teil abzufangen. Der Else-Teil behandelt dann zwar alle nicht definierten Fälle, aber dabei kann es sich durchaus um erwartete und nicht erwartete Ergebnisse handeln:

Public Function Sachbearbeiter(strAnfangsbuchstabe As String) As String
    If strAnfangsbuchstabe Like "[a-k]" Then
        Sachbearbeiter = "a-k: Herr Müller"
    Else
        Sachbearbeiter = "l-z: Frau Meier"
    End If
End Function

Listing 7.8: Schlechte Auswertung mit If...Then...Else

Die Routine behandelt alle Fälle richtig, in denen ein Buchstabe als Parameter übergeben wird. Wenn Sie aber aus Versehen eine Zahl eingeben, wird auch die zweite Verzweigung ausgeführt, was ja in diesem Falle falsch ist. Besser ist folgende Variante:

Public Function Sachbearbeiter(strAnfangsbuchstabe As String) As String
    If strAnfangsbuchstabe Like "[a-k]" Then
        Sachbearbeiter = "a-k: Herr Müller"
    ElseIf strAnfangsbuchstabe Like "[l-z]" Then
        Sachbearbeiter = "l-z: Frau Meier"
    Else
        Sachbearbeiter = "Kein Sachbearbeiter gefunden"
    End If
End Function

Listing 7.9: Zuverlässige Auswertung des Anfangsbuchstabens

Hier werden die Buchstaben von a bis z ebenfalls ordnungsgemäß zugewiesen. Zufällig falsch eingegebene Zeichen werden aber ebenso richtig mit einem entsprechenden Rückgabewert beantwortet.

Nächster Abschnitt:

7.7.2 Select Case

© 2006-2008 André Minhorst Alle Rechte vorbehalten.