PDA

Vollständige Version anzeigen : bedingte Formularauswahl


lax3000
25.09.2005, 23:24
Hallo VBA Profis,

ich steh' mal wieder vor einer Wand...

Ich muß an Hand einer Mitarbeitertabelle die Menüselektion steuern.
Ich habe mir Gedanken zum Programmfluß gemacht, habe aber nicht viel Erfahrung mit dem codieren.

Ich würde mich freuen, wenn mir jemand bei der "Übersetzung" helfen könnte, oder gar jemand eine besser Idee hat wie man diese Sache steuern kann.

Zur Sache...

Ich starte das Menü "Startform". Man gibt in ein Textfeld einen Mitarbeitervornamen ein. Nach klick auf den Button im "Startform" soll geprüft werden, ob der Name in der Tabelle vorhanden ist. Wenn ja, dann soll die "Menüebene" des Mitarbeiters eingelesen werden. Wenn die "Menüebene" = 1 ist dann soll das Formular "F1" geöffnet werden, wenn nicht, dann soll geprüft werde ob die "Menüebene"=2 ist, wenn ja dann soll das Formular "F2", sonst soll eine Meldung gezeigt werden mit dem Hinweis "Menüebene nicht vorhanden"
Wenn der Name des Mitarbeiters nicht vorhanden ist, dann soll eine Meldung ausgegeben werden, dass der Mitarbeiter unbekannt ist.

Hier der Programmfluß...


Private Sub Formular_wählen_Click()

'Textfeld: "Mitarbeitername" aus Formular: "Startform" einlesen

'"Mitarbeitername" vergleichen mit Tabelle/Feld: "Mitarbeiter/MA_Name"

'Wenn1 "Mitarbeitername" in "MA_Name" vorhanden dann Tabelle/Datensatz-Feld: "Mitarbeiter/Menüebene" einlesen

'Wenn2 Tabelle/Datensatz-Feld: "Mitarbeiter/Menüebene" = 1 dann öffne Formular: "F1"
'Sonst2

'Wenn3 Tabelle/Datensatz-Feld: "Mitarbeiter/Menüebene" = 2 dann öffne Formular: "F2"
'Sonst3
'Meldung: "Keine Menüauswahl vorhanden"
'Ende (Sonst3)

'Ende (Sonst2)

'Sonst1
'Meldung: "Mitarbeiter nicht vorhanden"
'Ende (Sonst1)

End Sub


Siehe auch Demo mdb im Anhang. Wäre schön, wenn mir jemand Tipps zum Code geben könnte.

Vielen Dank im Voraus.

Gruß
Frank

Nouba
25.09.2005, 23:46
Private Sub Formular_wählen_Click()
Dim vFNr As Variant

vFNr = DBEngine(0)(0).OpenRecordset("SELECT Menüebene FROM Mitarbeiter WHERE MA_NAME='" _
& Me!Mitarbeitername & "'", dbOpenSnapshot)(0)

If Not IsNull(vFNr) Then
DoCmd.OpenForm "F" & vFNr
Else
MsgBox "Der Mitarbeiter: " & Me!Mitarbeitername & " ist nicht vorhanden."
End If

End Sub
sollte möglich sein.

lax3000
27.09.2005, 01:58
Hallo Nouba,

vielen Dank für die schnelle Hilfe, es funktioniert (beinahe) perfekt!

was funktioniert...
Name eingeben, klick auf Taste, vorhandener Name wird gefunden, je nach Nummer wir das richtige Fomular aufgerufen


was funktioniert nicht...
1.
Wenn ich einen Namen eingebe der in der "Mitarbeiter" Tabelle nicht vorhanden ist läuft das Programm auf einen Fehler

Laufzeitfehler '3021'
Kein aktueller Datensatz

Was müsste programmiert werden, wenn eine Warnmeldung mit dem Text "Der Mitarbeiter " & Me!Mitarbeitername & " ist nicht vorhanden." gezeigt werden soll?

2.
Wenn ich einen Namen eingebe der zwar in der "Mitarbeiter" Tabelle vorhanden ist, aber keine "Menüebene" eingegeben ist (leeres Feld bei dem Mitarbeiter) dann kommt die Meldung, dass der "Der Mitarbeiter: x ist nicht vorhanden."

Im diesem Fall habe ich die Meldung auf: "Dem Mitarbeiter " & Me!Mitarbeitername & " wurde keine Menüzugeteilt" geändert.

Vielen Dank im Voraus für weitere Tipps.

Gruß
Frank