Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Fehlermeldung Methode oder Datenobjekt nicht gefunden - Office 2016 Problem?

Begonnen von derilzemer, März 31, 2017, 19:35:17

⏪ vorheriges - nächstes ⏩

derilzemer

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
Grüße und Dank im voraus
Andreas

Lachtaube

Dann wird wohl das Steuerelement oder Feld einen anderen Namen tragen. :)
Grüße von der (⌒▽⌒)

MzKlMu

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.
Gruß Klaus

derilzemer

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
Grüße und Dank im voraus
Andreas

DF6GL

Hallo,


Dim rs As DAO.Recordset


und prüfen, ob die passende DAO-Library unter Verweise angehakt ist.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

derilzemer

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
Grüße und Dank im voraus
Andreas

Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

derilzemer

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
Grüße und Dank im voraus
Andreas

Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)