FEHLER: Schlechtere Performance bei verknüpften Tabellen in Access 2000

Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
261000 BUG: Slower performance on linked tables in Access 2000
In Artikel 275085 wird dieses Thema für Microsoft Access 2002 und höhere Versionen behandelt.
Moderat: Erfordert grundlegende Kenntnisse in den Bereichen Makros, Kodierung und Interoperabilität.

Dieser Artikel bezieht sich ausschließlich auf eine Microsoft Access-Datenbank (.mdb).

Problembeschreibung

Sie stellen vielleicht fest, dass verknüpfte Tabellen in Ihrer Datenbank beim Öffnen eine schlechtere Performance zeigen, oder dass die Durchführung von Aktualisierungen länger dauert als erwartet.

Dieses Verhalten tritt eventuell nach einer Konvertierung der Datenbank aus einer früheren Version von Microsoft Access auf. Das ist jedoch nicht der einzige Fall, in dem diese Symptome auftreten können.

Ursache

Die Datenbank hat viele verknüpfte Tabellen mit vielen Beziehungen. Bei der Tabelle, die Sie öffnen, ist die Eigenschaft Name des Unterdatenblattes auf [Auto] gesetzt. Das kann dazu führen, dass es lange dauert, die Tabelle zu öffnen. Unterdatenblätter sind eine neue Funktion in Access 2000. Deshalb ist es wahrscheinlicher, dass dieses Verhalten nach der Konvertierung einer Datenbank aus einer früheren Version auftritt.

Lösung

Setzen Sie die Eigenschaft Name des Unterdatenblattes auf [NONE], um dieses Verhalten zu umgehen. Sie können das manuell oder per Programm tun.

Manuelles Setzen des Namens für das Unterdatenblatt

So konfigurieren Sie die Eigenschaft Name des Unterdatenblattes manuell:
  1. Öffnen Sie in der Backend-Datenbank eine Tabelle in der Entwurfsansicht.
  2. Klicken Sie im Menü Ansicht auf Eigenschaften.
  3. Setzen Sie die Eigenschaft Name des Unterdatenblattes auf [NONE].
  4. Speichern und schließen Sie die Tabelle.

Eigenschaft per Code für alle Tabellen setzen

Sie können eine VBA-Funktion verwenden (VBA = Visual Basic for Applications), um die Eigenschaft Name des Unterdatenblattes für alle Nicht-Systemtabellen in einer Datenbank auf [NONE] zu setzen. Gehen Sie hierzu folgendermaßen vor:
  1. Öffnen Sie die Backend-Datenbank.
  2. Klicken Sie im Datenbankfenster auf Module, und dann auf Neu.
  3. Klicken Sie im Menü Extras auf Verweise. Vergewissern Sie sich, dass das Kontrollkästchen Microsoft DAO 3.6 Object Library aktiviert ist, und klicken Sie auf OK.
  4. Geben Sie den folgenden Code im neuen Modul ein oder fügen Sie ihn ein:
    Sub TurnOffSubDataSheets()
    Dim MyDB As DAO.Database
    Dim MyProperty As DAO.Property
    Dim propName As String, propVal As String, rplpropValue As String
    Dim propType As Integer, i As Integer
    Dim intCount As Integer

    On Error GoTo tagError

    Set MyDB = CurrentDb
    propName = "SubDataSheetName"
    propType = 10
    propVal = "[None]"
    rplpropValue = "[Auto]"
    intCount = 0

    For i = 0 To MyDB.TableDefs.Count - 1
    If (MyDB.TableDefs(i).Attributes And dbSystemObject) = 0 Then
    If MyDB.TableDefs(i).Properties(propName).Value = rplpropValue Then
    MyDB.TableDefs(i).Properties(propName).Value = propVal
    intCount = intCount + 1
    End If
    End If
    tagFromErrorHandling:
    Next i

    MyDB.Close

    If intCount > 0 Then
    MsgBox "The " & propName & " value for " & intCount & " non-system tables has been updated to " & propVal & "."
    End If

    Exit Sub

    tagError:
    If Err.Number = 3270 Then
    Set MyProperty = MyDB.TableDefs(i).CreateProperty(propName)
    MyProperty.Type = propType
    MyProperty.Value = propVal
    MyDB.TableDefs(i).Properties.Append MyProperty
    intCount = intCount + 1
    Resume tagFromErrorHandling
    Else
    MsgBox Err.Description & vbCrLf & vbCrLf & " in TurnOffSubDataSheets routine."
    End If
    End Sub
  5. Geben Sie folgenden Text im Direktfenster ein und drücken Sie dann die [EINGABETASTE], um die Funktion auszuführen:
    TurnOffSubDataSheets
    Falls die Tabellen nicht aktualisiert wurden, wird nach einer kurzen Zeit eine Meldung angezeigt, die besagt, dass die Eigenschaft SubDataSheetName für <NumberOfTablesUpdated> für nicht-systemeigene Tabellen auf [NONE] aktualisiert wurden.
Die Verwendung der hier aufgeführten Informationen, Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionalität sowie ohne Anspruch auf Support zur Verfügung. In diesem Artikel wird vorausgesetzt, dass Sie mit der in den Beispielen verwendeten Programmiersprache und mit den zum Erstellen und Debuggen von Prozeduren verwendeten Tools vertraut sind. Die Spezialisten von Microsoft Product Support Services können bei der Erläuterung der Funktionalität bestimmter Prozeduren helfen, jedoch werden sie diese Beispiele nicht in Bezug auf eine erweiterte Funktionalität verändern, noch werden sie Prozeduren entwickeln, die auf Ihre besonderen Bedürfnisse zugeschnitten sind.

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass 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 englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in 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üglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Eigenschaften

Artikelnummer: 261000 – Letzte Überarbeitung: 21.01.2006 – Revision: 1

Feedback