If Else in VBA und im Formular aufrufen?

Hi,

ich hatte voher ein Problem mit meiner If else Funktion, die jetzt DANK Eurer Hilfe funktioniert. Da dachte ich mir, ich probiere es einfach auch mal mit einer VBA Funktion, dass hatte einer der Experten empfohlen. Nachdem ich festgestellt habe, dass mein Anfängerbuch nicht mehr ausreicht und ich bei der Hilfe Funktion in ACCESS nicht so erfolgreich war, habe ich dann stundenlang im Internet nach Hilfe gesucht. Das war auch wenig erfolgreich. Jetzt zu den Fragen:

  1. Hat jemand einen guten Internetlink für ACCESS für Fortgeschrittene Anwender (kann notfalls auf in Englisch sein)?

2)Wie kann ich folgendes in eine VBA Funktion umwandeln?

=IIf([cVerl]=„Verliehen“,„1“,IIf([cVerl]=„nicht verliehen“,„2“,IIf([cVerl]=„Nicht gefunden“,„3“,0))))

Ich habe es mal vereinfacht damit probiert:

Private Sub Verliehen()
If [cVerl] = „Verliehen“ Then Debug.Print [cVerlnr]; „1“ Else Debug.Print [cVerl]; „1“
End If
End Sub

Wie bekomme ich das jetzt aber in ein Formular? Es soll also in Abhängigkeit zu dem Feld [cVerl], die Wert 1 2 oder 3 in einem weiteren Feld [cVerlnr] erscheinen.

Danke für Eure Hilfe!

Birgit :smile:

  1. Hat jemand einen guten Internetlink für ACCESS für
    Fortgeschrittene Anwender (kann notfalls auf in Englisch
    sein)?

So schlecht ist die Hilfe eigentlich nicht…
Aber schau mal in Raphael Heins http://www.yaccess.de rein - das ist die ultimative Access-Linkliste (dort findest du etliche Tutorials sowie jede Menge weiterführende Links). Sowie z.B. in die Anfängersektion und die Links vom DBWiki (http://www.dbwiki.de). Auch hilfreich (allerdings eher bei konkreten Problemen) sind Karl Donaubauers FAQ (http://www.donkarl.com) Ansonsten empfehle ich ein gutes Buch - siehe z.B. die Buchtipps in den FAQ oder auch auf meiner Seite (http://www.kraasch.de).

2)Wie kann ich folgendes in eine VBA Funktion umwandeln?

=IIf([cVerl]=„Verliehen“,„1“,IIf([cVerl]=„nicht
verliehen“,„2“,IIf([cVerl]=„Nicht gefunden“,„3“,0))))

Ich habe es mal vereinfacht damit probiert:

Private Sub Verliehen()
If [cVerl] = „Verliehen“ Then Debug.Print [cVerlnr]; „1“ Else
Debug.Print [cVerl]; „1“
End If
End Sub

Wenn, dann wohl eher:

**Public Function** Verliehen(A)
 Select Case LCase(A)
 Case "verliehen" 
 Verliehen = 1
 Case "nicht verliehen" 
 Verliehen = 2
 Case "nicht gefunden" 
 Verliehen = 3
 Case Else
 Verliehen = 0
 End Select
End function

Wobei sich mir der Sinn des Ganzen nicht so recht erschließt - normalerweise schlüsselt man derartige Status in der Datenbank mit Zahlenwerten (z.B. über Kombifelder oder Optionsgruppen) und verwendet dann die Schlüsselbegriffe (also die Langbezeichnungen) zur Darstellung und nicht umgekehrt. Ich denke mal du musst auch noch einiges tiefer in die Datenbanktheorie einzusteigen (siehe FAQ 1.31 in den oben erwähnten FAQ bzw. die dort weiterführenden Links).

Gruß aus dem Norden
Reinhard Kraasch

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

Hallo Rainhard,

Danke für die interessanten Links! Ich denke Du hast recht, ich muß wirklich noch tiefer in die Datenbanktheorie einsteigen.

Wenn, dann wohl eher:

Public Function Verliehen(A)
Select Case LCase(A)
Case „verliehen“
Verliehen = 1
Case „nicht verliehen“
Verliehen = 2
Case „nicht gefunden“
Verliehen = 3
Case Else
Verliehen = 0
End Select
End function

Wie kann ich das nun in einem Feld in dem Formular anzeigen?

normalerweise schlüsselt man derartige Status in der Datenbank
mit Zahlenwerten (z.B. über Kombifelder oder Optionsgruppen)
und verwendet dann die Schlüsselbegriffe (also die
Langbezeichnungen) zur Darstellung und nicht umgekehrt.

Ein Kombifeld habe ich probiert. Dann konnte ich aber nur einen Wert speichern, also entweder Verliehen oder 1. Ich möchte aber beides in meiner Tabelle speichern. Damit ich in meinem Report „Ausdruck“ nicht die 1 steht sondern „Verliehen“.

Nochmals DANKE für die Hilfe!

Schönes Wochenende!

Birgit :smile:

Hi Birgit,

Wenn, dann wohl eher:

Public Function Verliehen(A)
Select Case LCase(A)
Case „verliehen“
Verliehen = 1
Case „nicht verliehen“
Verliehen = 2
Case „nicht gefunden“
Verliehen = 3
Case Else
Verliehen = 0
End Select
End function

Wie kann ich das nun in einem Feld in dem Formular anzeigen?

Durch die Zeile „Verliehen=1“ wird der Rückgabewert der Function gesetzt. Du musst also dort, wo du die Function aufrufst folgendes stehen haben:
dim iRück as integer
iRück=Verliehen(„nicht gefunden“)

iRück hat dann den Wert 3 und du kannst mit iRück weiterarbeiten.

Ein Kombifeld habe ich probiert. Dann konnte ich aber nur
einen Wert speichern, also entweder Verliehen oder 1. Ich
möchte aber beides in meiner Tabelle speichern. Damit ich in
meinem Report „Ausdruck“ nicht die 1 steht sondern
„Verliehen“.

Mann kann bei Kombifeldern die Anzahl Spalten angeben. Wenn man dort zwei Spalten angibt, bekommt man auch zwei zur Ansicht:
1|verliehen
2|nicht verliehen
3|nicht gefunden
Wenn die Zahl davor nicht sichtbar sein soll (soll sie meistens ja nicht), kann man die Spaltenbreite festlegen: auf 0 cm und X cm (0cm;Xcm). So wird die erste Spalte unterdrückt. Achte aber darauf, das die erste Spalte trotzdem die „gebundene Spalte“ ist, d.h. der Wert dieser Spalte wird für die Verarbeitung genommen.

Viele Grüße,
Jan

1 Like