Help and Support

Artikel-ID: 194374 - Geändert am: Freitag, 9. Januar 2004 - Version: 3.0

ACC97: Fehler: "Funktion steht in Ausdrücken nicht zur Verfügung"

Dieser Artikel wurde zuvor veröffentlicht unter D36818
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
194374  (http://support.microsoft.com/kb/194374/EN-US/ ) ACC97: "Function isn´t available in expressions..." Error
Alles erweitern | Alles schließen

Problembeschreibung

Wenn Sie eine Abfrage ausführen, kann es vorkommen, daß Sie folgende Fehlermeldung erhalten:
   "Funktion steht in Ausdrücken nicht zur Verfügung."
Sie sehen dann den Fehler "#Name" in Steuerelementen von Formularen und Berichten, deren Steuerelementinhalt einen Ausdruck enthält. Diese Verhaltensweise kann in Formularen, Abfragen oder Berichten auftreten, die eingebaute Funktionen in Ausdrücken verwenden, wie z.B. die Funktionen: Format(), Links() oder Rechts().

Ursache

Sie verweisen auf eine Objektbibliothek auf Ihrem Entwicklungsrechner und kopieren die Datenbank dann auf einen anderen Rechner, der über eine neuere Version dieser Bibliothek verfügt.

ANMERKUNG: Dieses Problem tritt in den meisten Fällen in Verbindung mit Verweisen auf die Datei Comctl32.ocx auf, kann aber auch mit anderen Bibliotheken auftreten.

Lösung

Um dieses Problem zu lösen, benötigen Sie entweder dieselbe Version der Objektbibliothek auf Ihrem Entwicklungsrechner und allen Computern, die diese Datenbank einsetzen oder Sie müssen die Verweise zur Objektbibliothek auf den jeweiligen Rechnern aktualisieren, damit Microsoft Access das Steuerelement erkennen kann. Im folgenden werden drei Methoden dargestellt dies durchzuführen:

Microsoft Access verwenden, um die Verweise zu aktualisieren

Sie können Microsoft Access verwenden, um die Verweise auf dem(den) Zielcomputer(n) manuell zu aktualisieren. Dazu gehen Sie folgendermaßen vor:
  1. Öffnen Sie die Datenbank, die die Fehler verursacht, die im Abschnitt Symptome beschrieben werden.
  2. Im Register MODULE klicken Sie auf NEU.
  3. Im Menü EXTRAS klicken Sie auf VERWEISE.
  4. Wählen Sie bitte im Dialogfenster VERWEISE einen Verweis, der nicht angehakt ist. Aktivieren Sie diese Referenz und merken sich bitte, welchen Verweis Sie hinzugefügt haben. Klicken Sie auf OK.
  5. Im Menü EXTRAS klicken Sie erneut auf VERWEISE.
  6. Klicken Sie den Verweis an, den Sie in Schritt 4 erstellt haben, um diesen zu entfernen, und bestätigen mit OK.
  7. Führen Sie die Abfrage, das Formular oder den Bericht aus, in dem Sie das Verhalten, das im Abschnitt Symptome beschrieben wurde, beobachtet haben. Der Fehler sollte nun nicht mehr auftreten.
Aktualisierung des Steuerelements

Sie können die Version des Steuerelements auf Ihrem Entwicklungsrechner aktualisieren, damit diese mit der auf dem Zielrechner übereinstimmt. Nachdem Sie das Steuerelement auf Ihrem Entwicklungsrechner und den entsprechenden Verweis in der Datenbank aktualisiert haben (vgl. den Abschnitt "Microsoft Access verwenden, um die Verweise zu aktualisieren"), können Sie die Datei wieder auf den Zielrechner kopieren. Wenn Sie eine Anwendung unter der Verwendung der Microsoft Office 97 Developer Edition (ODE) vertreiben, sollten Sie den Setup-Assistenten einsetzen, um die Installationsdisketten neu zu erstellen. Danach sollten alle Benutzer die Anwendung neu installieren.

Automatisches Aktualisieren der Verweise über Visual Basic für Anwendungen

Sie können Code aus Visual Basic für Anwendungen verwenden, um die Aktualisierung der Verweise automatisch durchzuführen. Diese Lösung verwendet eine Abfrage, um das Auftreten des in dem Artikel beschriebenen Problems zu testen. Anschließend wird Programmier-Code aus Visual Basic für Anwendungen eingesetzt, um die Verweise zu aktualisieren, wenn das Problem auftritt. Sofern Sie ODE-Anwendungen vertreiben, können Sie diese Lösung sowohl für neue Anwendungen als auch für Programmaktualisierungen einsetzen.
  1. Erstellen Sie eine neue Abfrage in Ihrer Datenbank, um festzustellen, ob das Problem auftritt. Diese Abfrage muß eine der eingebauten Access-Funktionen enthalten, z.B. Format(), Links() oder Rechts().
       Speichern Sie die Abfrage unter dem Namen "TestVerweise" ab.
Beispielsweise können Sie in der Nordwind-Beispieldatenbank eine Abfrage erstellen, die den ersten Buchstaben des Feldes Kategoriename in der Kategorientabelle liefert:

Abfrage: TestVerweise
Feld: Ausdr1: Links([Kategoriename];1)
  1. Erstellen Sie folgendes Makro und speichern es unter dem Namen AutoExec:
Makro-Name Aktion Funktionsname
AutoExecAusführenCode CheckRefs()
  1. Erstellen Sie das folgende Modul. Sie können dies entweder über die Zwischenablage einfügen oder abtippen:
Function CheckRefs()
Dim db As Database, rs As Recordset
Dim x
Set db = CurrentDb

On Error Resume Next

' Führt die Abfrage TestVerweise aus,um das Auftreten des Fehlers
' zu testen
Set rs = db.OpenRecordset("TestVerweise", dbOpenDynaset)
x = rs!ausdr1
' Wenn Sie nun den Fehler 3075 sehen, informieren Sie die
' Benutzer, daß Sie die Anwendung bearbeiten müssen.
' Fehler 3075 steht für folgende Meldung:
' "Funktion steht in Ausdrücken nicht zur Verfügung"

If Err.Number = 3075 Then
MsgBox "Diese Anwendung hat neuere Versionen " _
& "benötigter Dateien auf Ihrem Computer entdeckt. " _
& "Es kann einige Minuten dauern, Ihre Anwendung " _
& "erneut zu kompilieren."
Err.Clear
FixUpRefs
End If
End Function

Sub FixUpRefs()
Dim r As Reference, r1 As Reference
Dim s As String

' Sucht die erste Referenz in der Datenbank, die weder
' Access noch Visual Basic for Aplications ist.
For Each r In Application.References
If r.Name <> "Access" And r.Name <> "VBA" Then
Set r1 = r
Exit For
End If
Next
s = r1.FullPath

' Entfernt den Verweis und setzt ihn wieder ein.
References.Remove r1
References.AddFromFile s

' Ruft einen versteckten SysCmd-Befehl auf, um alle Moduleder
' Datenbank zu kompilieren bzw. zu speichern.
Call SysCmd(504, 16483)
End Sub

Status

Microsoft hat bestätigt, daß es sich hier um ein Problem in Microsoft Access 97 handelt.

Weitere Informationen

Wenn eine Objektbibliothek auf Ihrem Rechner installiert wird, werden bestimmte Informationen über diese Bibliothek in der Windows Registrierdatenbank abgelegt. Microsoft Access verwendet diese Informationen in der Registrierdatenbank für die Referenz und verwendet diese Objektbibliothek. Normalerweise hat die Installation einer neueren Version einer Objektbibliothek keine Auswirkungen auf die Programme, die diese verwenden. In einigen Fällen verursachen Veränderungen an der Objektbibliothek aber eine abweichende Registrierung. Wenn dieses Verhalten vorkommt, kann Microsoft Access die Objektbibliothek nicht verwenden bis die neuen Registrierungsinformationen in der References-Auflistung aktualisiert werden.

Schritte, um das Problem zu reproduzieren
  1. Formatieren Sie zwei Testrechner.
  2. Installieren Sie Microsoft Windows 95 oder Microsoft Windows 98 auf beiden Rechnern.
  3. Installieren Sie Microsoft Access 97 auf dem ersten Rechner.
  4. Installieren Sie zusätzlich die Microsoft Office 97 Developer Edition auf diesem Rechner.
  5. Erstellen Sie auf diesem Rechner eine neue Datenbank.
  6. Wählen Sie in dieser Datenbank den Register Tabellen, klicken auf Neu und dann auf Entwurfsansicht.
  7. Erstellen Sie in der Entwurfsansicht die folgende neue Tabelle:
       Tabelle1
       Feldname: KategorieID
       Felddatentyp: Autowert
       Indiziert: Ja (ohne Duplikate)
       Feldname: Kategoriename
       Felddatentyp: Text
       Feldname: Ort
       Felddatentyp: Text
       Feldgröße: 20
       Indiziert: Ja (Duplikate möglich)
       Tabelleneigenschaften: Tabelle1
       PrimaryKey: KategorieID
       Index1: Kategoriename; Ort
  8. Speichern Sie die Tabelle als Tabelle1 und wechseln in die Datenblattansicht.
  9. Fügen Sie in der Datenblattansicht einige Datensätze hinzu.
  10. Erstellen Sie eine neue Abfrage, die auf der Tabelle basiert.
  11. Fügen Sie das Feld KategorieID ebenso in die Abfrage ein wie folgenden Ausdruck:
        Ausdr1: Format([KategorieID];"#")
  12. Speichern Sie die Abfrage unter dem Namen "Abfrage1" und schließen sie diese.
        Führen Sie die Abfrage bitte nicht aus.
  13. Öffnen Sie ein neues, leeres Formular in der Entwurfsansicht.
  14. Fügen Sie das Microsoft CommonDialog-Control (Version 5.0) und das Microsoft Treeview Control (Version 5.0) in das Formular ein.
  15. Im Menü ANSICHT klicken Sie bitte auf CODE, um die Module hinter dem Formular zu sehen (Dies setzt die Eigenschaft 'Enthält Modul' automatisch auf Ja.).
  16. Im Menü EXTRAS klicken Sie auf VERWEISE und überprüfen, ob die folgenden Verweise gesetzt sind (in dieser Reihenfolge):
        Visual Basic ForApplications
        Microsoft Access 8.0 Object Library
        Microsoft DAO 3.5 Object Library
        Microsoft Common Dialog Control 5.0
        Microsoft Windows Common Controls 5.0
  17. Im Menü TESTEN klicken Sie auf ALLE MODULE KOMPILIEREN UND SPEICHERN. Speichern Sie das Formular unter dem Namen "Formular1" ab, wenn Sie dazu aufgefordert werden.
  18. Schließen Sie das Formular.
  19. Führen Sie die Abfrage "Abfrage1" aus und prüfen Sie, ob diese korrekt arbeitet.
  20. Kopieren Sie die Datenbank auf einen zweiten Computer, der über die Version 5.00.4319 oder später der Datei Comctl32.ocx verfügt. Diese Version des Steuerelements wird von Microsoft Visual Studio 5.0 SP3 oder Visual Studio 6.0 mitgeliefert.
  21. Öffnen Sie die Datenbank auf dem zweiten Rechner und führen die Abfrage "Abfrage1" aus. Sie erhalten dann folgende Fehlermeldung:
       "Funktion steht in Ausdrücken nicht zur Verfügung in Abfrageausdruck
       'Format([CategoryID], " #")'"
Wenn Sie danach die Verweise auf jede beliebige Art verändern, ist das Problem gelöst. Sie können z.B. eine zufällige Referenz hinzufügen, mit OK die Verweise-Dialog-Box bestätigen und danach die Referenz wieder entfernen.

Informationsquellen

Für weitere Informationen zu Referenzen suchen Sie im Index der Online-Hilfe nach "References-Auflistung"oder befragen den Microsoft Access 97 Office Assistenten.

Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, daß nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachige(n) Produktversion(en). Die Richtigkeit dieser Informationenin Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglichder Vollständigkeit oder Richtigkeit der Übersetzung.

Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Access 97 Standard Edition
  • Microsoft Office 97 Developer Edition
Keywords: 
kberrmsg KB194374
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Retired KB ArticleDisclaimer zu nicht mehr gepflegten KB-Inhalten
Dieser Artikel wurde für Produkte verfasst, für die Microsoft keinen Support mehr anbietet. Der Artikel wird deshalb in der vorliegenden Form bereitgestellt und nicht mehr weiter aktualisiert.

SPRACHE AUSWÄHLEN