ACCDB funktioniert - ACCDE funktioniert nicht

Hallo,

wenn ich meine (funktionierende) Access 2007 Datenbank (*.ACCDB) als ACCDE speichere, dann treten diverse Fehler auf, die vorher nicht vorkamen.

So wird beim Start der Datenbank die Fehlermeldung „2448 Sie können diesem Objekt keinen Wert zuweisen“ ausgegeben.

Anschließend möchte ich einen Bericht in der Druckvorschau ansehen lassen. Das ganze wird über ein VBA-Modul aufgerufen. Allerdings kommt jetzt immer folgende Fehlermeldung:

Sie haben als Einstellung der Ereigniseigenschaft den Ausdruck Beim Klicken eingegeben. Dieser Ausdruck hat einen Fehler verursacht: der von Ihnen angegebene Befehl steht in einer MDE-, ACCDE- oder ADE-Datenbank nicht zur Verfügung.

* Der Ausdruck gibt möglicherweise weder den Namen eines Makros noch den Namen einer benutzerdefinierten Funktion noch [Ereignisprozedur] zurück.

* Beim Auswerten einer Funktion, eines Ereignisses oder eines Makros trat möglicherweise ein Fehler auf.

Dieser Fehler tritt auf, wenn ein Ereignis nicht ausgeführt werden konnte, weil der Speicherort der Logik für das Ereignis von Microsoft Office Access nicht ausgewertet werden kann. Falls z. B. die OnOpen-Eigenschaft eines Formulars auf =[Field] festgelegt ist, tritt dieser Fehler auf, weil Access die Ausführung eines Makros oder Ereignisnamens erwartet, wenn das Ereignis ausgelöst wird.

Beim googeln bin ich auf die Lösung gestoßen, ggf. den Quelltext des Moduls noch einmal komplett zu löschen und anschließend wieder neu einzufügen.

Leider hat das nicht geklappt. Das kompilieren der ACCDB brachte keinen Fehler mehr und auch mit der Funktion „/decompile“, die ich in diversen Foren gefunden habe, konnte ich die Sache nicht lösen.

Ich hatte jetzt auch versucht einfach die kompletten Module in eine neue Access-Datenbank zu importieren. Außer das die jetzt noch ein Stück größer als die vorherige ist, konnte ich da aber keinen Erfolg erzielen. Als ACCDB läuft es, als ACCDE nicht.

Gibt es irgendwie die Möglichkeit, genauere Hinweise zu bekommen, was nicht funktioniert? Also eine Art Debugg-Modus für ACCDE?

Oder kennt jemand den genannten Fehler und weiß vielleicht eine Lösung dafür?

Grüße

Stefan

Hallo,

was machst Du denn beim Öffnen der DB ( welcher Code wird da wie und wo ausgeführt) ??

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Das Autostart-Makro ruft ein Sub mit folgendem Code auf:

**Dim cb As CommandBar
Dim btn As CommandBarButton

On Error Resume Next

CommandBars(cstrCmdBar).Delete

Set cb = CommandBars.Add(cstrCmdBar, msoBarPopup, False, False)

With cb
Set btn = .Controls.Add(msoControlButton, 21, , , True)
Set btn = .Controls.Add(msoControlButton, 19, , , True)
Set btn = .Controls.Add(msoControlButton, 22, , , True)
End With

'Das Formular mit dem Hauptmenü aufrufen
DoCmd.OpenForm „Datenbankanmeldung“, acNormal, , , acFormEdit, acWindowNormal**


Allerdings kommt der Fehler erst nach der Login-Seite… wenn man da auf den Login-Button geht, dann wird folgender Code ausgeführt:

**Private Sub Button_Login_Click()

Dim intIDBenutzerTemp As String
Dim bEntwicklerTemp As Boolean
Dim strSplitNutzernameTemp() As String

Erase strSplitNutzernameTemp

'Erst prüfen, ob überhaupt ein Kennwort eingetragen wurde
If Me.Kennwort.Value = „“ Or IsNull(Me.Kennwort.Value) = True Then
MsgBox „Achtung, sie haben gar kein Kennwort eingetragen!“, vbExclamation
Exit Sub
End If

'Den Nutzernamen wieder auftrennen
strSplitNutzernameTemp = Split(Me.Benutzer.Value, " ")

‚Prüfen, ob der Benutzername passt
If DCount(„Benutzer_ID“, „Benutzer“, "Benutzer_Vorname=‘" & strSplitNutzernameTemp(0) & „’ AND Benutzer_Nachname=’“ & strSplitNutzernameTemp(1) & „’“) = 0 Then
MsgBox „Fehler! Mit diesem Benutzernamen wurde keine Person gefunden!“, vbExclamation
Exit Sub

Else

‚Prüfen, ob das Kennwort passt
If Me.Kennwort.Value DLookup(„Benutzer_Kennwort“, „Benutzer“, "Benutzer_Vorname=‘" & strSplitNutzernameTemp(0) & „’ AND Benutzer_Nachname=’“ & strSplitNutzernameTemp(1) & „’“) Then
MsgBox „Das Kennwort stimmt nicht mit dem Kennwort des Nutzernamens überein!“, vbExclamation
Me.Kennwort.Value = „“
Me.Kennwort.SetFocus
Exit Sub
End If

End If

‚Jetzt die ID des Nutzers übernehmen
intIDBenutzerTemp = DLookup(„Benutzer_ID“, „Benutzer“, "Benutzer_Vorname=‘" & strSplitNutzernameTemp(0) & „’ AND Benutzer_Nachname=’“ & strSplitNutzernameTemp(1) & „’“)

'Jetzt die Entwicklervariable auslesen
bEntwicklerTemp = DLookup(„Benutzer_Entwickler“, „Benutzer“, „Benutzer_ID=“ & intIDBenutzerTemp)

'Anhand der Entwicklervariable den Fenstermodus festlegen
If bEntwicklerTemp = True Then
intWindowMode = acWindowNormal
Else
intWindowMode = acDialog
End If

'Erfolgsmeldung ausgeben
Debug.Print "Login erfolgreich - User: " & Me.Benutzer.Value

'Jetzt das Hauptmenü schließen, falls es noch geöffnet ist
If isloaded(„Hauptmenü“) = True Then
DoCmd.Close acForm, „Hauptmenü“, acSaveNo
End If

'Formular schließen
DoCmd.Close acForm, „Datenbankanmeldung“, acSaveNo

'Jetzt das Hauptmenü für den entsprechenden User öffnen
DoCmd.OpenForm „Hauptmenü“, acNormal, , „Benutzer_ID=“ & intIDBenutzerTemp, acFormEdit, acWindowNormal**


Wichtiger wäre mir aber fast noch der andere Fehler, da der hinderlicher ist…

Grüße

Stefan

Hallo,

habe folgende Vermutungen:

–Eine Accde_datei kann mit Commandbars nichts mehr anfangen.

– Schreibe beim Array für die Splitfunktion:

Dim strSplitNutzernameTemp as Variant

und lösche die Zeile
Erase strSplitNutzernameTemp

Den Namen „Kennwort“ würde ich auch umbenennen.

Ansonsten setze mal einen Haltepunkt und speicher den mit ab.

Vorher solltest Du aber einen passenden Errorhandler einbauen und auf On Error Resume Next verzichten.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo Stefan,

Franz hat vollkommen Recht.

Die Steuerung einer Menüleiste (Access

Hallo,

erst mal Danke für deine Hilfe. Das mit der CommandBar hab ich rausgeschmissen - keine Ahnung warum der Code noch drin war. Der Array ist umbenannt, wobei man auch einfach nur das Erase weglassen könnte. Oder macht es vom Speicher her einen Unterschied, ob ich es gleich als Feld-String dimme oder erst mal als Variant?

Ich hab auch noch einen Errorhandler eingebaut. Allerings kommt noch der gleiche Fehler. Ich werd mal schauen, ob Haltepunkte was bringen.

Der größere Fehler besteht leider aber auch immer noch… hast du ne Ahnung, woran das liegen könnte?

Stefan

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Netwolf,

der CommandBar-Code ist raus. Keine Ahnung, warum er noch drin ist. Die Ribbons hab ich sowieso extra programmiert, wobei ich da das Problem hab, dass mir das Adobe Acrobat (bei meinem Sony Vaio war die Vollversion schon dabei) ein Ribbon reingebastelt hat und mir zum ausblenden der Name fehlt. Ich hab schon diverse Namen ohne Erfolg ausprobiert. Aber das ist noch ein anderes Problem…

Die ACCDE will ich gerade haben, damit mir niemand am Code rumfummelt. Aber in der ACCDB tritt das Problem ja nicht auf, weswegen ich dort nicht richtig danach suchen kann…

Grüße

Stefan

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

was ist jetzt der größere Fehler?

Bitte nochmal beschreiben.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!