Office: (Office 2010) Fehler in Access 2010? Funktion wird in accde nicht gefunden.

Helfe beim Thema Fehler in Access 2010? Funktion wird in accde nicht gefunden. in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, ich bin dabei, Projekte von Access2000 (mdb) zu Access2010(accdb) zu konvertieren. Dabei bin ich auf ein sehr unangenehmes Problem bei der... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Frank200, 6. Februar 2013.

  1. Fehler in Access 2010? Funktion wird in accde nicht gefunden.


    Hallo,

    ich bin dabei, Projekte von Access2000 (mdb) zu Access2010(accdb) zu konvertieren. Dabei bin ich auf ein sehr unangenehmes Problem bei der Erstellung von accde Dateien gestoßen.
    Seit vielen Jahren nutze ich bei Formularen und Steuerelementen die Möglichkeit, in Ereignisfeldern (meistens "bei Mausbewegung" oder "Bei Focuserhalt") nicht mit einer Ereignisprozedur zu arbeiten, sondern in dem jeweiligen Feld des Eigenschaftsformulares eine Funktion direkt aufzurufen. Also steht z.B. im Ereignisfeld Bei Mausbewegung "=fctMachWas()" oder auch "=fctMachWasAnderes([txtHG])". [txtHG] übergibt hier einen Verweis auf das Steuerelement an die Funktion.Seit jeher konnte dies eine Public Function eines allgemeinen Modules oder auch eine Public Function oder Private Function des Formularmodules sein.

    Die Funktion fctMachWas() konnte also durchaus auch eine Private Function in diesem Formularmodul sein. Seit Access2010 ist dies nur noch zum Teil so. Während die Funktion in einer accdb gefunden wird, ist dies in einer accde nicht mehr so. Statt dessen wird in der accde ein Fehler angezeigt: "Sie haben als Einstellung der Ereigniseigenschaft den Ausdruck Bei Fokuserhalt eingegeben. Dieser Ausdruck hat einen Fehler verursacht: Der von Ihnen eingegebene Ausdruck enthält den Namen einer Funktion, die von PMS nicht gefunden werden kann." Mal abgesehen davon, daß der erste Satz etwas verdreht ist, sagt die Meldung klar, daß die Funktion nicht gefunden wurde. Das perfide daran ist, daß der Fehler wirklich erst in der accde auftritt. Ich hatte zu Glück die accde nochmals intensiv getestet und die Datei noch nicht an meinen Kunden übergeben.

    Habt Ihr ähnliche Erfahrungen? Ist das Problem schon irgendwo dokumentiert? Ich habe viel über accde Dateien gefunden, aber keine Beschreibung dieses Problems. Ich muß mir nun wohl so behelfen, daß ich all diese Funktionen in allgemeine Module verlagere. Das ist recht mühsam, da der Code meistens irgendwie direkt auf Steuerelemente des Formulares zugreift und z.B. Me!txtHG jetzt nicht mehr funktioniert.

    :)
     
    Frank200, 6. Februar 2013
    #1
  2. Hallo,

    du könntest das Formular-Objekt beim Aufruf übergeben, dann kannst du "Me" durch den Übergabeparameter ersetzen
    und der Änderungsaufwand ist nicht allzu groß.
     
    Anne Berg, 7. Februar 2013
    #2
  3. Hallo Anne,
    danke für den Tip.
    Ich habe einen einfachen Weg gefunden, der die Änderungsarbeit auf einem Minimum hält. Eine globale Funktion, die die Formularfunktion aufruft.

    Angenommen im Formularmodul des Formulars CO2 stand bisher folgendes:
    Private Function fctMachWas(c As Control) as Boolean
    So steht da nun:
    Public Function CO2fctMachWas(c As Control) as Boolean

    In einem allgemein Modul habe ich nun folgende Funktion eigefügt:
    Code:
    Dies hat den Vorzug, daß ich weder in den Funktionen selbst, als auch in den Eigenschaftsfeldern etwas ändern muß.
    Und es funktioniert in der accde!
     
    Frank200, 7. Februar 2013
    #3
  4. Fehler in Access 2010? Funktion wird in accde nicht gefunden.

    Hallo!

    Das sollte auch bei einer Ac2010-accde funktionieren.
    Ich probierte es aus und es klappte ohne Probleme.

    Kannst du ein Mini-Beispiel erstellen, bei dem das Problem bei dir auftritt?

    mfg
    Josef
     
    Josef P., 7. Februar 2013
    #4
  5. Hallo Josef,
    ich will es versuchen, wird aber frühestens morgen.
    " ... es klappte ohne Probleme " waren das wirklich Funktionen im Formularmodul ? Wenn ja, Public oder Private oder evtl. ohne diese Angabe. Im Formularmodul ist ja Private = default.
     
    Frank200, 8. Februar 2013
    #5
  6. Hallo!

    Ja klar, sonst hätte ich geschrieben, dass es bei mir auch nur mit Funktionen in einem allgemeinen Modul funktioniert. ;-)
    Die Function deklarierte ich als private.

    Anm.: Ich testete allerdings nur mit der Access2010(SP1)-Vollversion und nicht mit der Runtime. (Ich gehe aber davon aus, dass es auch damit funktioniert, da ich so etwas auch in meinen Anwendungen einsetze.)

    mfg
    Josef
     
    Josef P., 11. Februar 2013
    #6
  7. Hallo Josef,

    bitte entschuldige, daß ich es nicht schaffe, eine Demo einzustellen.
    Ich habe erneut mit diesem Problem zu kämpfen und habe soeben festgestellt, daß es indirekt (ich meine ohne direkte Auswirkung) bereits bei einer accdb zutage tritt.
    Wenn ich in ein Ereignisfeld eine Funktion aus einem allgemeinen Modul eintrage, dann hilft mir die Intellisense, d.h. die Funktion wird gefunden.
    Trage ich jedoch eine Funktion aus dem aktuellen Berichtsmodul ein, dann findet die Intellisense die Funktion nicht. Beim Öffnen des Berichts wird sie jedoch ohne Fehler ausgeführt. Allerdings nur in der accdb und nicht in der accde.

    Könntest Du bitte mal prüfen, ob dies bei Dir auch so ist?
    Ãœbrigens: Eine tolle Sache mit der Intellisense in diesen Feldern.

    P.S. Ich muß gestehen, ich spreche hier immer von einer zur accdb konvertierten mdb. (von Acc2000 zu Acc2010). Ich habe noch nicht in einer accdb getestet, die auf Acc2010 frisch erstellt wurde.

    Erganzung: Access 2010 Vollversion 14.0.6129.5000 (32-Bit)
    Das SP1 erscheint nicht dahinter. Aber wenn ich versuche SP1 zu installieren, meldet es mir, daß die Installation nicht erforderlich ist.
     
    Frank200, 12. Februar 2013
    #7
  8. Fehler in Access 2010? Funktion wird in accde nicht gefunden.

    Hi,

    gehe mal in Access auf Datei -> Hilfe -> Info zu Microsoft Access -> Weitere Versions- und Copyrightinformationen, da wirst du es sehen.
     
    Anne Berg, 12. Februar 2013
    #8
  9. ahh perfekt. Danke Anne!
    Warum habe ich das nicht gefunden!?!? .... hab' wohl mit Tunnelblick nur auf die erste Zeile geschaut ;-)
     
    Frank200, 13. Februar 2013
    #9
  10. Hallo!

    Weil du die 10-20 Minuten nicht Zeit hattest - oder weil es in einer Demo immer funktionierte? ;-)

    Du schreibst nun von einem Bericht. Tritt das Problem nur bei Berichten oder auch bei Formularen auf?
    (Anm.: "Bei Mausbewegung" konnte ich mit einem Bericht in Seitenansicht nicht testen. :-)))

    mfg
    Josef
     
    Josef P., 18. Februar 2013
    #10
  11. Hallo Josef,

    Deine zweite Vermutung ist richtig - in der Demo funktionierte es. Zumindest in einer frisch erstellen Minidemo.
    Bitte entschuldige das Durcheinander: Ja, mal schrieb ich von Formularen - dort sind die Funktionen in der ControlSource von berechnenden Feldern und in Maus- bzw Fokusereignissen. Danach schrieb ich von Berichten - da betrifft es ausschließlich berechnende Feldern (natürlich geht da nix mit Mausi ;-))

    Mittlerweile bin ich der Überzeugung, die Probleme hatten eine gänzlich andere Ursache. Die Zusammenhänge sind mir zwar nicht ganz klar, aber nach einem roll back läuft jetzt alles wieder. Die Probleme der nicht gefundenen Funktionen waren nämlich mittlerweile auch in der unkonvertierten mde (Acc2000) bei einzelnen Usern aufgetreten.

    Was war geschehen?:
    Ich hatte die Absicht, Lebans PDF-Lösung mit nach Acc2010 zu nehmen und hatte dabei auch die von Sascha entwickelte Function AdjustHeaderInFile() für die Korrektur des dekomprimmierten Snapshots integriert (eine Änderung im Snapshot-Format hatte ja zur Folge, daß die PDFs alle im Querformat generiert wurden, auch wenn der Bericht hochformatig formatiert war.) Hierfür hat Sascha auch die Bibliothek olelib_moss.tlb zur Verfügung gestellt. Ich hatte die tlb einfach neben meiner mdb (mde, accde) platziert und einen VBA-Verweis erstellt, die Datei also nicht registriert (weiß nicht, ob von Bedeutung).
    Das Ganze hatte ich bereits auf der Acc2000-Ebnene gemacht, wenngleich o.g. Funktion erst bei Acc2010, also nach der Konvertierung, zur Ausführung kam (If Application.Version >=14 Then ...). Ich hatte gehofft, so am einfachsten über die Zeit, in der die Anwendung sowohl als mde als auch als accde läuft, zu kommen. Also auf 2000 weiterentwickeln und Programmupdates jeweils auf 2010 konvertieren - bis ich 2000 abschalten kann.

    Irgendwie hatte der Verweis auf die olelib_moss.tlb Probleme bereitet. Es wurden immer mehr Funktionen, die in Formular- oder Berichtsmodulen standen und (seit vielen Jahren) im ControlSource-Feld oder in Ereignisfeldern aufgerufen wurden, nicht mehr gefunden. Dabei hat die Funktion AdjustHeaderInFile() selbst, die ja als einzige den Verweis auf die tlb nutzt, in Acc2010 prima funktioniert.

    Ich habe letztendlich einen Schnitt gemacht und die Acc2010-Erweiterungen für Leban-PDF wieder entfernt (inkl. dem Verweis) und den Code dahingehend geändert, daß Acc2010 nun das intern mitgelieferte PDF (DoCmd.OutputTo acOutputReport, rptName, acFormatPDF) nutzt. Ich hoffe, daß bringt auch jede Acc2010 Runtime mit? Hätte ich vielleicht gleich machen sollen. Nun läuft wieder alles prima und es gibt eine Probleme mit Funktionen aus Formular- oder Berichtsmodulen.

    Bitte entschuldigt, daß ich zuvor mit falschen Ursachenvermutungen Eure Zeit vergeuded habe.
    Danke nochmals für Eure Hilfe.
     
    Frank200, 18. Februar 2013
    #11
Thema:

Fehler in Access 2010? Funktion wird in accde nicht gefunden.

Die Seite wird geladen...
  1. Fehler in Access 2010? Funktion wird in accde nicht gefunden. - Similar Threads - Fehler Access 2010

  2. Fehler bei Nutzung mit Access 2013 64bit

    in Microsoft Access Hilfe
    Fehler bei Nutzung mit Access 2013 64bit: Hallo Zusammen, ich habe eine Datenbank mit Version 2010 erstellt, die bei mir ohne Fehler mit Version 2010 läuft (siehe auch gesetzte Verweise). Ein Kunde von uns nutzt seit kurzem Access 2013...
  3. Parameterwert eingeben Access 2010 Fehler

    in Microsoft Access Hilfe
    Parameterwert eingeben Access 2010 Fehler: Hallo, ich habe ein Problem mit einer Access Datenbank, die unter Access 2003/2007 erstellt wurde. Nutzt man sie mit Access 2010 erfolgt beim Öffnen eines Formulars zur Dateneingabe folgende...
  4. Access-Fehler: "Diese Datenbank weist ein unbekanntes Format auf" beim Öffnen einer ...

    in Microsoft Access Tutorials
    Access-Fehler: "Diese Datenbank weist ein unbekanntes Format auf" beim Öffnen einer ...: Access-Fehler: "Diese Datenbank weist ein unbekanntes Format auf" beim Öffnen einer Access-Laufzeitanwendung (ACCDE-Datei) Access 2016 Mehr... Weniger...
  5. Fehler: Beim Starten von Microsoft Access nach dem Update auf Version 1802 wird die ...

    in Microsoft Access Tutorials
    Fehler: Beim Starten von Microsoft Access nach dem Update auf Version 1802 wird die ...: Fehler: Beim Starten von Microsoft Access nach dem Update auf Version 1802 wird die Fehlermeldung "Automatische Konfiguration der aktuellen Version von Microsoft Access ist fehlgeschlagen."...
  6. Access-Fehler: „Abfrage ist fehlerhaft“

    in Microsoft Access Tutorials
    Access-Fehler: „Abfrage ist fehlerhaft“: Access-Fehler: „Abfrage ist fehlerhaft“ Access für Microsoft 365 Access 2019 Access 2016 Access 2013 Access 2010 Mehr... Weniger...
  7. SQL: Fehler in der Abfrage

    in Microsoft Access Hilfe
    SQL: Fehler in der Abfrage: Hallo Leute, ich bin gerade am basteln einer SQL Abfrage, bin aber noch ein ziemlicher Neuling. Der Aufbau ist grob SELECT A.b, B.c, D.e, F.g FROM F RIGHT JOIN D RIGHT JOIN B RIGHT JOIN A ON...
  8. Access 2010 - Fehler bei Spaltenvergleich in Abfrage

    in Microsoft Access Hilfe
    Access 2010 - Fehler bei Spaltenvergleich in Abfrage: Hallo erst mal, ich habe ein Problem mit Access 2010. Und zwar wenn ich in einer Abfrage zwei Spalten miteinander vergleiche, dann erhalte ich ein flasches Ergebnis, wenn eine der Zellen leer...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden