Hallo,
wenn ich nach dem starten der DB (es wird frmLogin aufgerufen) den User mit Passwort eingebe und den cmdLogin klicke, wird ein Ereignis ausgelöst. Dann aber kommt "Fehler beim Kompilieren: Methode oder Datenobjekt nicht gefunden."
Es springt dann in den VBA Teil für das Formular, markiert Private Sub cmdLogin_Click() gelb und unterlegt dazu rs.FindFirst "UserID='" & Me.txtBenutzername & "'" nur den Passus .txtBenutzername blau (siehe Bild1)
Ein Problem ist, dass ich schon eine lange Zeit das Loginformular nicht mehr vorgeschalten habe. Der Fehler überrascht mich also, da es schon ging. Das blau unterlegte .txtBenutzername existiert als Textfeld, von daher verstehe ich aktuell nicht, warum er meckert. Ich habe vor kurzem auf Access 2016 umgestellt. Könnte das ein Grund sein? Wie kann ich da vorgehen, bzw.
Hier noch der VBA Teil zum frmLogin
Option Compare Database
Option Explicit
Private Sub cmdLogin_Click()
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("tblBenutzer", dbOpenSnapshot, dbReadOnly)
rs.FindFirst "UserID='" & Me.txtBenutzername & "'"
If rs.NoMatch = True Then
Me.lblFalscherBenutzer.Visible = True
Me.txtBenutzername.SetFocus
Exit Sub
End If
Me.lblFalscherBenutzer.Visible = False
If rs!Passwort <> Me.txtPasswort Then
' Um encrypt zu nutzen folgenden Code aktivieren
' If rs!Passwort <> Encrypt(Me.txtPasswort) Then
Me.lblFalschesPasswort.Visible = True
Me.txtPasswort.SetFocus
Exit Sub
End If
Me.lblFalschesPasswort.Visible = False
If rs!BenutzerArtID_F = 1 Then
Dim prop As Property
On Error GoTo SetProperty
Set prop = CurrentDb.CreateProperty("AllowBypassKey", dbBoolean, False)
CurrentDb.Properties.Append prop
SetProperty:
If MsgBox("Willst du wirklich den Bypass-Key aktivieren?", vbYesNo, "Allow Bypass") = vbYes Then
CurrentDb.Properties("AllowBypassKey") = True
Else
CurrentDb.Properties("AllowBypassKey") = False
End If
End If
DoCmd.OpenForm "frmMenueseite"
DoCmd.Close acForm, "frmLogin"
End Sub
Vielen Danke vorab für eure Unterstützung
Gruß Andreas
Dann wird wohl das Steuerelement oder Feld einen anderen Namen tragen. :)
Hallo,
und das ist auch unlogisch:
Zitatrs.FindFirst "UserID='" & Me.txtBenutzername & "'"
Wieso wird die UserID mit dem Benutzernamen verglichen, das kann doch nicht stimmen. Außerdem ist eine ID meist eine Zahl und dann sind die Hochkomma falsch.
Hallo Klaus und Lachtaube,
UserID ist in der Tabelle der Benutzername. Im IT Umfeld sagt man auch UserID dazu. Es ist also keine Zahl (siehe Bild1)
Hochkomma falsch?
@Lachtaube
Das Steuerelement oder Feld hat genau den Namen, der angemeckert wird, hatte ich ja schon geschrieben. (siehe Bild2)
Gruß Andreas
Hallo,
Dim rs As DAO.Recordset
und prüfen, ob die passende DAO-Library unter Verweise angehakt ist.
Hallo Franz,
das was. Hmmm, dann muss das aber von Umstieg auf 2016 gewesen sein, oder? Ich habe mal Versionen in der DB zurück geschaut, den Zusatz DAO hatte ich auch vor dem Umstieg NICHT drin. Vielen Dank.
Gruß Andreas
Hallo Andreas,
Zitatden Zusatz DAO hatte ich auch vor dem Umstieg NICHT drin
Ist aber sicherer.
Schau mal in die Verweise, ob da eine Referenz auf ADO drin ist. Falls
ja, nimm die raus. Gebraucht wird die ja bei dir nicht, sonst hätte es wohl
schon eher "gekracht".
gruss ekkehard
Hi,
ADO = MS Office 16.0 Access database engine Object Library
DAO = MS ActiveX Data Objects 6.1 Library,
ist beides noch aktiv :(. Hab jetzt mal ADO deaktiviert, dann hat es allerdings gleich beim compile gerappelt, da ich noch 2 VBA Dinge habe, die das wohl benötigen. Problem, wenn beides in use ist?
Gruß Andreas
Hallo Andreas,
Nein, anders rum; - DAO ist die MS Office 16.0 Access database engine Object Library.
Wenn du beides brauchst, musst du das verwendete Objekt explizit ansprechen.
Dim dbe As DAO.Database
gruss ekkeard