If Else Problem in ACCESS

Hi,

ich habe in einem Formular (ACCESS 2000) ein Textfeld in dem 1, 2 oder 3 in Abhängigkeit zu einem anderen Feld erscheinen soll. Wenn ich ein einfaches if Statement

=IIf([cVerl]=„Verliehen“,„1“,„0“)

verwende, klappt es wunderbar.

Wenn ich es aber mit ElseIf versuche, klappt es nicht.

=If [cVerl]=„Verliehen“, Then „1“ ElseIf [cVerl]=„Nicht verliehen“,Then „2“ ElseIf [CVerl]=„Nicht gefunden“, Then „3“ End If

Was mache ich falsch? Kann ich eigentlich das If Statement auch direkt in die Tabelle eingeben (damit ich die Formel in verschiedenen Formularen nicht zu wiederholen brauche) oder geht das nur im Formular?

DANKE!

Birgit

Hallo Birgit

ich habe in einem Formular (ACCESS 2000)

Ich verwende Access 97. Evtl. bietet Access 2000 hier mehr oder andere Möglichkeiten, als die von mir vorgeschlagenen.

Wenn ich ein einfaches if Statement
=IIf([cVerl]=„Verliehen“,„1“,„0“)
verwende, klappt es wunderbar.

Ich nehme mal an, du verwendest diese Zuweisung unter „Steuerelementinhalt“ („ControlSource“-Eigenschaft) des Formulars? Wenn ja, ist die Syntax so korrekt.

Wenn ich es aber mit ElseIf versuche, klappt es nicht.

Was heisst denn „klappt nicht“? Fehlermeldung, Ergebnis?

=If [cVerl]=„Verliehen“, Then „1“ ElseIf [cVerl]=„Nicht
verliehen“,Then „2“ ElseIf [CVerl]=„Nicht gefunden“, Then „3“
End If
Was mache ich falsch?

Eine solche Syntax kannst du unter den Eigenschaften (jedenfalls unter Access 97) nicht benutzen. Versuch’s mal hiermit:

=Iif([cVerl]="Verliehen","1",Iif([cVerl]="Nicht verliehen","2",Iif([cVerl]="Nicht gefunden","3","0")))

Oder "übersetzt:

=Wenn([cVerl]="Verliehen";"1";Wenn([cVerl]="Nicht verliehen";"2";Wenn([cVerl]="Nicht gefunden";"3";"0")))

Kann ich eigentlich das If Statement
auch direkt in die Tabelle eingeben (damit ich die Formel in
verschiedenen Formularen nicht zu wiederholen brauche) oder
geht das nur im Formular?

Das würde ich nicht machen (redundante und voneinander abhängige Attribute).

Gruss
Peter

Hallo Birgit,
zum Problem mit der if-Anweisung hast Du ja schon eine Antwort. Zur 2. Frage habe ich folgenden Vorschlag:

Das Einfügen einer solchen If-Anweisung in die Daten-Tabelle ist sicherlich keine gute Lösung, wenn sie überhaupt funktioniert.

Falls du diese Information in verschiedenen Formularen anzeigen möchtest, dann erstelle eine Abfrage mit den Tabellenfeldern plus eine Spalte in der die Werte 1, 2 oder 3 berechnet werden. Diese Abfrage verwendest du dann als Datenherkunft für die Formulare.

Syntax für den Eintrag in der Zeile ‚Feld‘ im Abfrage-Entwurf für EXCEL97:
Spaltentitel: Wenn([cVerl]=„Verliehen“;1;Wenn([cVerl]=„Nicht Verliehen“;2;Wenn([cVerl]=„Nicht gefunden“;3;0)))

oder etwas kürzer, wenn Feld [cVerl] immer nur die 3 Einträge hat:
Spaltentitel: Wenn([cVerl]=„Verliehen“;1;Wenn([cVerl]=„Nicht Verliehen“;2;3))

‚Spaltentitel‘ ist der relativ beliebig wählbarer Name für die Spaltenüberschrift und wird in der Feldliste für das Formular mit aufgelistet.

Die Syntax für die neuere ACCESS-Version dürfte ähnlich sein.

Wenn der Entwurf der Datenbank noch nicht zu weit fortgeschritten ist, dann würde ich im Feld ‚cVerl‘ den Wert 1, 2 oder 3 speichern und in den Formularen Optionsfelder anlegen, die den Status (Verliehen, Nicht Verliehen oder nicht gefunden) anzeigen bzw. wo er geändert werden kann.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Besser geeignet für so etwas ist die Wählen-/Choose-Funktion oder die Schalter-/Switch-Funktion (siehe die Hilfe zum Thema) oder - vermutlich noch besser: eine selbstgeschriebene VBA-Funktion (die du dann zentral verwalten kannst). Am flexibelsten eine Tabelle, in der du die Schlüsselungen ablegst und die du in einem Kombifeld verwendest.

Gruß aus dem Norden
Reinhard Kraasch

(http://www.dbwiki.de - das Datenbank-Wiki)

Hallo Birgit,

kann es ein schlichter Syntax Ffehler sein, der das elseif nicht erkennt?
Wenn du Kommas hinter den Bedingungen wie im Beispiel hast geht es nicht.
Die bessere Lösung wäre auf jeden Fall ein select case statement.

Gruß Hans

DANKE! Es funktioniert! *freu*
Vielen Dank für Eure Hilfe. Es klappt. Den Tip mit der Abfrage werde ich auch noch ausprobieren.

Birgit