Hallo Forum
ich habe eine Anwendung vor langer Zeit erstellt, und nun möchte ich die wieder verwenden.
startet zunächst auch wie vorher immer mit Anmeldeschirm.
Wenn ich dann meinen Button Anmelden klicke kommt eine Fehlermeldung.
wie bekomme ich also meine "alte Version wieder zum laufen" ?
hey schonmal oben in der Statusleiste in Access geschaut, ob da was mit aktivieren zulassen steht? Und ansonsten mal die Einstellungen im TrustCenter prüfen
Holger
Vielleicht hilft das
https://support.microsoft.com/de-de/office/vertrauensw%C3%BCrdige-dokumente-cf872bd8-47ec-4c02-baa5-1fdba1a11b53
Zitat von: Debus am September 26, 2024, 13:57:15hey schonmal oben in der Statusleiste in Access geschaut, ob da was mit aktivieren zulassen steht? Und ansonsten mal die Einstellungen im TrustCenter prüfen
Holger
Na ja, die statusleiste sehe ich nicht wenn die Anwendung gestartet wird
Danke
Zitat von: Debus am September 26, 2024, 14:15:25Vielleicht hilft das
https://support.microsoft.com/de-de/office/vertrauensw%C3%BCrdige-dokumente-cf872bd8-47ec-4c02-baa5-1fdba1a11b53
Beim Start sehe ich keine statusleiste.
Danke schau ich mir morgen noch mal an
Zitatstartet zunächst auch wie vorher immer mit Anmeldeschirm.
Wenn ich dann meinen Button Anmelden klicke kommt eine Fehlermeldung.
Was ist unter Anmeldeschirm zu verstehen? Was soll denn der Button Anmelden machen. Wie lautet der Befehl dahinter?
Und welche Fehlermeldung kommt? Bitte Details.
das ist ein Formular zum einloggen
öffnet dann ein Formular.
Fhelermeldung Projekt oder Bibliothek nicht gefunden
in den Verweisen fehlt der Eintrag unten im Bild
Setze den Verweis doch mal neu dann wird es gehen oder es kommt ein weiterer neuer Fehler
Holger
Hallo,
man sieht, daß die Anwendung schon älter ist.
Du solltest zunächst mal die Referenzen aktualisieren.
Schon seit Windows Vista verwendet man nur noch die 6.x-Versionen von ADO, was bei Dir noch 2.1 ist - die war schon vorher veraltet, die letzte war 2.8. Aktuell ist 6.1 die richtige.
DAO 3.6 ist auch schon veraltet und kann entfernt werden. In einem halbwegs aktuellen Access sollte hier die "Microsoft Office x.0 Access database engine Object Library" stehen, die üblicherweise auch vor dem ADO-Link stehen sollte.
Deklarationen in VBA sollten dann auch immer mit dem Library-Namen erfolgen, also "ADODB.Recordset" und "DAO.Recordset" und nicht nur "Recordset" (als Beispiel).
Wenn bei Outlook die Datei nicht vorhanden ist, hast Du ggf. kein Outlook installiert. Dein Link zu Office zeigt Version 11, zu Outlook dagegen 16. Access aktualisiert die Office-Referenzen automatisch, wenn Du also Deine Datenbank mit einem neueren Office öffnest, werden danach die neuen Office-Links in den Referenzen stehen. Es wird aber nicht wieder nach unten korrigiert, wenn Du die Datei dann auf einem PC mit älterem Office öffnest, das mußt Du dann selbst machen.
Microsoft Forms benötigt man üblicherweise gar nicht in Access, das ist normalerweise nur für Excel und Co, die mit UserForms arbeiten.
"MouseWheel" ist vermutlich auch überflüssig, in früheren Access-Versionen (als es noch keine Mausräder gab oder nur wenige) gab es keinen MouseWheel-Event, da mußte man sich mit anderen Methoden behelfen.
Die Common Controls könnten sich ebenfalls als Problem erweisen, die Library wurde mit zwischenzeitlichen Problemen ein paar Mal upgedated. Im Ergebnis mußte man vorhandene Objekte wie die TreeView aus den Formularen entfernen und neu einbauen. Natürlich mit Verlust aller Einstellungen, die man komplett neu einstellen muß. Ich verwende die Common Controls seither nicht mehr, ist mir zu unsicher. Habe auf meiner Downloadseite eine eigene Variante mit CCTableTreeV2, die man einfach mit herkömmlichen Endlosformularen nutzen kann.
Nicht zu vergessen natürlich, daß es außerdem noch von 32/64Bit abhängig ist. Wenn Deine Anwendung Windows API-Aufrufe enthält, müssen diese zunächst an 64Bit angepaßt werden. Ebenso sind nicht alle ActiveX-Controls 64Bit kompatibel.
Die Sicherheitsleiste wird u.U. nicht angezeigt, wenn VBA generell im Trustcenter deaktiviert ist ("Makros", obwohl es keine Makros aus Access-Sicht sind).
Gruß
Christian
Danke Christian,
habe nun alles vom PC entfernt und meine OFFICE14 installiert
die sev.soft ... sind alle ordentlich registriert und haben zu Anfang Probleme gemacht, nun aber nicht mehr.
meine alten Programme in einen Ordner abgelegt, und die Tabellen neu verknüpft damit Frontend darauf zugreifen kann.
ich bekomme aber weiter Fehler, bin also noch am Rätsel wie ich die wieder zum laufen bekomme
in wie weit könntest du evtl. unterstützen ?
Zitat von: erbru2024 am Oktober 04, 2024, 12:25:50ich bekomme aber weiter Fehler, bin also noch am Rätsel wie ich die wieder zum laufen bekomme
Bitte klicke mal in der VBA-Umgebung Menü "Debuggen" - "Kompilieren". Damit sollte dir der Kompiler für manche Fehler bereits zu der Codezeile springen, die den Fehler verursacht.
Für reine Laufzeitfehler zeig bitte auch den Code, der den Fehler verursacht.
Hallo Phils
das hat ja alles mal funktioniert mit Windows 7 und Office 2003
Fehler beim Kompilieren:
Benutzerdefinierter Typ nicht definiert
ich denke das ist nicht der einzige Fehler aber irgendwo muss man ja anfangen, und der kommt wenn ich das Frontend öffne
in diesem Modul
Option Compare Database
Option Explicit
Function Init()
Dim pfad As String
Dim [b]dbx As DAO.Database[/b]
Dim rs As DAO.Recordset
Dim t As DAO.TableDef
Dim sBEPath As String
On Error GoTo init_err
Set rs = CurrentDb.OpenRecordset("sys")
If rs.EOF Then
MsgBox "Kein Datensatz in der Tabelle 'sys'", vbCritical, "Hoppla"
rs.AddNew
rs!dbnam = "dummy"
rs.Update
End If
Do While Not rs.EOF
sBEPath = rs!dbnam
If InStr(1, sBEPath, "\") = 0 Then
pfad = Application.CurrentProject.Path & "\" & sBEPath
Else
pfad = sBEPath
End If
Set dbx = DBEngine.Workspaces(0).OpenDatabase(pfad)
For Each t In dbx.TableDefs()
If InStr(1, t.Name, "MSys") = 0 Then tabcheck t.Name, pfad
Next
rs.MoveNext
Loop
rs.Close
init_exit:
Set dbx = Nothing
On Error GoTo 0
Exit Function
init_err:
If Err.Number = 3024 Or Err.Number = 3044 Then
pfad = DateiOeffnen(Application.CurrentProject.Path, "BackEnd Datenbank öffnen")
If pfad <> "" Then
db_aendern (pfad)
Else
Application.Quit
End If
ElseIf Err.Number = 3059 Then
Application.Quit
ElseIf Err.Number = 94 Then
MsgBox "Kein Dateiname im Feld 'sys.dbname'", vbCritical, "Hoppla"
rs.Edit
rs!dbnam = "dummy"
rs.Update
ElseIf Err.Number = 3078 Then
MsgBox "Keine Tabelle 'sys' vorhanden", vbCritical, "Hoppla"
DoCmd.SetWarnings False
DoCmd.RunSQL "SELECT 'dummy' AS dbnam INTO sys;"
DoCmd.SetWarnings True
Else
MsgBox "Fehler: " & Err.Number & " - " & Err.Description
Stop
End If
Resume
End Function
Meinst Du in der Zeile hier
Dim [b]dbx As DAO.Database[/b]
Holger
Zitat von: erbru2024 am Oktober 04, 2024, 15:05:39Fehler beim Kompilieren:
Benutzerdefinierter Typ nicht definiert
Da fehlt dir ein Verweis auf die "Microsoft Office 16.0 Access database engine Object Library" (ehemals "Microsoft DAO Object Library").
Sobald du den entsprechenden Verweis gesetzt hast, sollte dieses Problem gelöst sein.
Hallo,
Du präsentierst nun eine ganz andere Referenzliste als vorher.
Aber einiges von dem, was ich oben geschrieben habe (darunter hatte ich auch die Access database engine Object library bereits erwähnt als Ersatz für das alte DAO..), gilt hier immer noch.
Veraltetes ADO, Forms-Referenz.
Daneben gibt es hier die "Jet and Replication Objects Library", mußte ich selbst erst mal nachlesen, die basiert auf ADO speziell für JET-Datenbanken, u.a. für Replikation, was es früher mal in Access gab, aber schon lange abgeschafft wurde. Wenn Deine Datenbank Replikation verwendet, hast Du ein größeres Problem.
Dann verwendest Du eine Reihe von Referenzen zu "sev.Soft", das scheint wohl das hier zu sein:
https://www.tools4vb.net
Das müßte sicherlich auch auf den neuesten Stand gebracht werden.
Weitere Referenzen kann man in Deinem Screenshot nicht erkennen.
Die Fehlermeldung "Benutzerdefinierter Typ nicht definiert" kann zum einen auf ein Problem im Namespace hinweisen, was man bisweilen mit einem Trick beheben kann, indem man in eine beliebige Enum geht (sofern man eine definiert hat), dort im Namen einen Fehler verursacht (z.B. Leerzeichen einfügen im Namen und Zeile verlassen) und dann den Fehler wieder korrigiert. Das zwingt beim Compile, den Namespace neu aufzubauen und oft behebt sowas solche Probleme.
Eine weitere Ursache kann simpel das sein, was im Fehler steht: Man hat irgendwo mit "Type" einen eigenen Typ deklariert, mit dem es Probleme gibt. Ich empfehle, grundsätzlich keine Types zu verwenden, da sie ohnehin nur Probleme machen. Simpler Ersatz: Ein Klassenmodul, in dem man modulglobale Variablen definiert. Im Gegensatz zu Type braucht es zwar eine Instantiierung mit New, dafür funktioniert ein Objekt mit allem, auch als Parameter usw.
Darüber hinaus kann das auch einfach auf eine defekte Access-Datei hindeuten, wenn der Fehler hartnäckig nicht behebbar ist und wenn vor allem keine Zeile angezeigt wird, die den Fehler beim Kompilieren verursacht.
Da hilft dann, alles mal in eine neue Access-Datei zu importieren. Da hier auch Probleme auftreten können, ist es empfehlenswert, das über Textexport mit "Application.SaveAsText" und "Application.LoadFromText" zu machen. Kann man natürlich per VBA automatisieren.
Du verwendest die TreeView (ggf. auch von sev.Soft, falls die eine haben), was bei so einer alten Datenbank Nacharbeit bedeutet. Also entfernen und neu einbauen, nachdem die aktuellste Referenz eingebunden wurde.
Was ich Deinen Screenshots entnehme, daß es hier eine aufwendige Datenbank sein wird mit einer Menge an Spezialitäten. Das kann man nicht mit ein paar Sätzen zur Fehlerbehebung erledigen, um sowas in so einem Alter wieder lauffähig zu machen, muß man schon einiges an Arbeit investieren.
I.d.R. genügt es nicht, nur ein paar Referenzen zu aktualisieren. Insbesondere, wenn veraltete Technologien wie Replikation zum Einsatz kommen (also Replikation als solches ist natürlich nicht veraltet, nur die Access-Replikation).
Wenn Du jmd. zur Festeinstellung brauchst, dann könnte ich Dir helfen, bin gerade auf Jobsuche... :D
Gruß
Christian
Danke christian,
für den ausführlichen Kommentar
Da muss ich echt überlegen!Suche bei mir noch das Original der DB
Habe heute schon eine wieder zum laufen gebracht, zeig ich in Kürze mal.
Ist aber eine komplett andere Datenbank gewesen 2, 3 Referenzen erneuert fertig. War nicht so anspruchsvoll, muss mich auch in vieles wieder einarbeiten.
Bis bald schönen abend