Hallo,
ich möchte das Kennwort zum Öffnen eines Formulares aus einer Tabelle abrufen. Die Tabelle hat den Namen Kennwort.tab. Bei ID1 steht im Feldnamen Kennwort der Text zange.
Bis jetzt habe ich es so geregelt. Wenn ich aber das Kennwort ändern möchte, muss ich den Code ändern. Das möchte ich vermeiden.
Private Sub Kennworteingabe_AfterUpdate()
On Error GoTo Err_personal_werkstatt_Click
MeinKennwort = Me.Kennworteingabe
If MeinKennwort = "zange" Then
DoCmd.OpenForm "Personal_form"
Else
MsgBox "Das Kennwort ist leider falsch."
End If
Exit_personal_werkstatt_Click:
Exit Sub
Err_personal_werkstatt_Click:
MsgBox Err.Description
Resume Exit_personal_werkstatt_Click
End Sub
Kann mir jemand behilflich sein?
gruß Ludwig
Hi Ludwig,
dieses Thema kommt mir bekannt vor. ;D
Gibt es in der Tabelle nur ein Kennwort?
Vermutlich nicht.
Gibt es es im Formular eine Eingabe, wer sich anmeldet?
Hoffentlich ja.
Aus einer Tabelle ist ein Inhalt erreichbar mit:
Dim Gesuchtes_Kennwort as String
Gesuchtes_Kennwort = dlookup("Name des Tabellenfeldes, das das Kennwort enthält", "Name der Tabelle mit den Kennwörtern", "FeldName_des_Benutzers_in_der_Tabelle = '" & Me.Name_vom_Steuerelement_im_Formular_das_zur_Eingabe_Benutzers_dient" & "'")
Harald
Hallo Harald,
ja in der Tabelle Kennwort, steht unter ID2 ein anderes Kennwort. ID1 Kennwort zange ist für das Öffnen des Formulares Personal gedacht.
In dem Formular zur Kennworteingabe zum Öffnen des Formulares Personal, habe ich nur ein Textfeld zur Kennworteingabe. Ein Kombifeld zum auswählen einer Person, habe ich nicht.
Wohin soll ich deinen Vorschalg in meinen Code positionieren?
gruß Ludwig
Hi,
nach meinem Verständnis war das Kennwort abhängigi von dem Benutzer.
So wie ich Dich verstanden habe, ist für jedes Formular (bislang zwei) ein anderes Kennwort zugeordnet.
Private Sub Kennworteingabe_AfterUpdate()
Dim Gesuchtes_Kennwort as String
On Error GoTo Err_personal_werkstatt_Click
MeinKennwort = Me.Kennworteingabe
Gesuchtes_Kennwort = nz(dlookup("Kennwort", "[Kennwort.tab]", "bitte anpassen ID bin mir aber dessen unsicher (siehe unten) = '" & Me.Name" & "'"),"")
if Gesuchtes_Kennwort = "" then
msgbox "Kein Kennwort gefunden"
else
If MeinKennwort = Gesuchtes_Kennwort Then
DoCmd.OpenForm "Personal_form"
Else
MsgBox "Das Kennwort ist leider falsch."
End If
end if
Exit_personal_werkstatt_Click:
Exit Sub
Err_personal_werkstatt_Click:
MsgBox Err.Description
Resume Exit_personal_werkstatt_Click
End Sub
Ein Tabellenname mit "." ist suboptimal.
Mit ID1 und ID2 komme ich jetzt nicht zurecht. Eine Bezeichnung wie Formularname wäre für mich verständlicher.
Harald
Hallo Harald,
ich habe jetzt mal aus der Tabelle Kennwort, das zweite Kennwort entfernt. Also liegt nur auf ID1 das Kennwort zange[/b.
Leider hängt es noch.
MeinKennwort = Me.Kennworteingabe
Gesuchtes_Kennwort = nz(dlookup("Kennwort", "[Kennwort_tab]", "Personal_form= '" & Me.Name" & "'"),"")
Hi Ludwig,
Zitat von: lukyluke68 am November 24, 2013, 16:18:40
ich habe jetzt mal aus der Tabelle Kennwort, das zweite Kennwort entfernt. Also liegt nur auf ID1 das Kennwort.
Leider hängt es noch.
Gesuchtes_Kennwort = nz(dlookup("Kennwort", "[Kennwort_tab]", "Personal_form= '" & Me.Name" & "'"),"")
Definiere "hängt noch": Gibt es Fehler? Werden keine Daten gefunden?
Ist "Personal_form" der Name des Feldes, in dem der Name vom Formular gespeichert ist?
Ist "[Kennwort_tab]" die jetzt korrigierte Fassung, in der früher ein "." verwendet wurde?
Weiterhin ist mir id1 unklar. Ist das ein autowert-Feld oder ein Fremdkey-Feld?
Harald
Hallo Harald,
Kennwort_tab ist der richtige Name der Tabelle in dem unter Kennwort_ID (AutoWert) das Kennwort zange liegt.
Personal_Form ist der Name des Formulares das sich nach Eingabe des Kennwortes öffnen soll.
Hi Ludwig,
ok meine Annahme zu dem Ablauf war falsch.
Probier mal:
Gesuchtes_Kennwort = nz(dlookup("Kennwort", "[Kennwort_tab]", "Name vom Feld in dem der Name vom aufzurufenden Formular steht = 'Personal_Form'"),"")
Sorry, aber vielleicht verstehe ich heute nur Bahnhof. Der letzten Antwort entnehme ich, dass das Feld, in dem das Kennwort liegt, den Namen "Kennwort_id" und vom Typ "autowert" ist und als Inhalt "zange" hat. Bei der Kombination von "autowert" und "zange" komme ich ins Grübeln.
Bitte den Teil mit "Kennwort" der Realität anpassen und das gleiche gilt für "Name vom Feld in dem der Name vom aufzurufenden Formular steht
Harald
Hallo Harald,
im Anhang eine kleine Datei
Hi Ludwig,
anbei die angepasste db:
- Tabellen-Struktur erweitert um den Namen des aufzurufenden Formulars
- Ereignis "Nach Aktualisierung" vereinfacht.
Harald
Hallo Harald,
danke für deine Hilfe. Genau so soll es sein. Tolle Hilfe - Tolles Forum :)
gruß Ludwig
Hallo,
ich habe meinen Beitrag nochmals geöffnet.
Ich möchte dasselbe Formular zur Eingabe des Kennwortes nutzen zum öffnen eines anderen Berichtes. Also in VBA nur eine Erweiterung der Abfrage. Ich weis nicht wie ich das umschreiben soll.
Hier das aktuelle Bsp.
Private Sub Kennworteingabe_AfterUpdate()
On Error GoTo Err_personal_werkstatt_Click
If Me.Kennworteingabe = Nz(DLookup("Kennwort", "[Kennwort_tab]", "FormularName = 'Personal_Form'"), "") Then
DoCmd.OpenForm "Personal_form"
Else
MsgBox "Das Kennwort ist leider falsch."
End If
Exit_personal_werkstatt_Click:
Exit Sub
Err_personal_werkstatt_Click:
MsgBox Err.Description
Resume Exit_personal_werkstatt_Click
End Sub
Und hier die Erweiterung:
Me.Kennworteingabe = Nz(DLookup("Kennwort", "[Kennwort_tab]", "FormularName = 'Meister_form'"), "") Then
DoCmd.OpenForm "Meister_form"
Bin für jede Hilfe dankbar.
Ich möchte dieses kleine Problem mit nur einem Eingabeformular lösen, sonst müsste ich nochmals ein Formular erstellen.
Hallo,
vielleicht so:
Private Sub Kennworteingabe_AfterUpdate()
On Error GoTo Err_personal_werkstatt_Click
If Me!Kennworteingabe = Nz(DLookup("Kennwort", "[Kennwort_tab]", "FormularName = 'Personal_Form'"), "") Then
DoCmd.OpenForm "Personal_form"
ElseIf Me!Kennworteingabe = Nz(DLookup("Kennwort", "[Kennwort_tab]", "FormularName = 'Meister_form'"), "") Then
DoCmd.OpenForm "Meister_form"
Else
MsgBox "Das Kennwort ist leider falsch."
End If
Exit_personal_werkstatt_Click:
Exit Sub
Err_personal_werkstatt_Click:
MsgBox Err.Description
Resume Exit_personal_werkstatt_Click
End Sub
Hallo,
danke für die schnelle Hilfe. Darauf kann ich nun aufbauen
gruß Ludwig