Suche…


Einführung

Wenn Sie eine Fehlermeldung erhalten: "Microsoft Access ist auf ein Problem gestoßen und muss geschlossen werden". Oft sind nicht viele Informationen vorhanden, die Ihnen helfen, die Fehlerursache zu ermitteln. Nachfolgend finden Sie eine Reihe von Schritten, um die Ursache der Fehler zu beheben.

Bemerkungen

Stellen Sie sicher, dass Sie beim Testen andere Variablen aus der Gleichung entfernen

Netzwerkbeschädigung

Laden Sie den Client nicht aus einem Netzwerk. Legen Sie es auf das lokale Laufwerk und starten Sie es von dort aus.

Corporate Builds

Wenn Sie sich in einer Unternehmensumgebung befinden, die "Computer Builds" verwendet, und mit Dekompilierung, Speicherprüfung oder Entfernen von Binärdaten keinen Erfolg hatte, können Sie weitere Tests nicht durchführen, bis das IT-Team dem Benutzer eine Testmaschine zur Verfügung stellt Nur Windows, Office und Service Packs sind installiert.

Alle Software und Updates sollten von Hand installiert werden, ohne dass eine unbeaufsichtigte Installation erforderlich ist. Installieren Sie zum Testen auf diesem Computer kein Antivirus.

Verstehen Sie, dass viele IT-Abteilungen einfach versuchen, mit den Builds einen One-Size-Fits-All-Ansatz zu verfolgen, und alle Builds basieren auf einander. Im Laufe der Zeit können Softwarekonflikte dazu führen, dass Access direkt abstürzt oder ungewöhnlich wirkt.

Schlechte Energie

Wie im Speicherbeispiel erwähnt, können Leistungsschwankungen Computerfehler verursachen. Wenn sich die Datenbank in einem Industriegebäude befindet, versuchen Sie, sich eine Stromaufbereitungsanlage oder eine USV zu beschaffen, die sauberen Strom liefert (aus der Batterie, nicht durch einen Metalloxid-Varistor).

Überprüfen Sie auch das Stromversorgungskabel, das in die Stromschiene oder Steckdose eingesteckt wird. Stellen Sie sicher, dass die Angaben für das Messgerät und die Spannung ausreichend sind. IT-Abteilungen lassen häufig Stromkabel an der Station angeschlossen und entfernen die Maschine einfach. Nach vielen Jahren verwenden sie stärkere Netzteile, haben jedoch das Kabel nicht ausgeschaltet. Es macht einen Unterschied. Wenn Sie Zweifel haben, bringen Sie ein neues, dickeres Kabel mit.

Datenbank dekompilieren

Dies sollte immer Ihr erster Fix sein. Eine gute Richtlinie ist das Dekompilieren der Datenbank vor jeder Version.

  1. Erstellen Sie eine dekompilierte Verknüpfung . Dadurch wird die Datenbank mit einem Schalter "/ decompile" geladen.

    1. Klicken Sie mit der rechten Maustaste auf Ihre Datenbankdatei. Wählen Sie Kopieren
    2. Klicken Sie mit der rechten Maustaste in das Explorer-Fenster und wählen Sie "Verknüpfung einfügen".
    3. Klicken Sie mit der rechten Maustaste auf die Verknüpfung und wählen Sie "Eigenschaften".
    4. Gehen Sie im Feld Ziel bis zum Ende der Zeile und fügen Sie /decompile
    5. Klicken Sie auf OK, um die Verknüpfung zu schließen
  2. Datenbank mit Shift öffnen.
    Halten Sie die Umschalttaste gedrückt und doppelklicken Sie auf diese Verknüpfung. Dadurch wird verhindert, dass automatische Läufe in der Datenbank ausgeführt werden. Sie sollten direkt zum Navigationsfenster gehen.

  3. Komprimieren und reparieren Sie die Datenbank. Sobald die Datenbank geladen ist, müssen Sie auf die Schaltfläche Kompakt und Reparieren klicken.

    1. Suchen Sie die Datenbank komprimieren und reparieren Werkzeuge auf die Schaltfläche Band.
    2. Halten Sie die Umschalttaste gedrückt. Halten Sie sie gedrückt, während Sie auf die Schaltfläche Kompakt und Reparieren klicken.
  4. Kompilieren Sie die Datenbank neu

    1. Gehen Sie in das VBA-Fenster (Strg + G)
    2. Wählen Sie im Menü Debug -> Compile

Dies ist der vollständige Dekompilierungsprozess. Im Allgemeinen sollten 99% aller Access-Abstürze oder seltsames Formverhalten behoben werden.

Computerspeicher testen

Wenn Ihre Abstürze zufällig oder sporadisch sind, führen Sie diesen Schritt aus. Wenn Ihre Datenbankabstürze jedes Mal auftreten, wenn Sie die Datenbank ausführen, wird das Problem durch diesen Schritt nicht behoben.

Verwenden Sie einen Speichertester, der außerhalb des Betriebssystems bootet und mehrere Durchgänge ausführt. Zwei beliebte Optionen sind MemTest86 (Commercial) und MemTest86 + (Open Source).

Starten Sie den Test und lassen Sie ihn während der Arbeitszeit laufen. Der Grund dafür ist, dass andere Faktoren im Gebäude, z. B. Rauschen in den Stromkreisen, Speicherfehler verursachen können. Daher möchten Sie versuchen, die Variablen gleich zu halten.

Wenn Sie Speicherfehler haben, müssen Sie feststellen, ob es sich um einen unzureichenden Arbeitsspeicher im Computer oder einen anderen Faktor handelt. Dies ist jedoch nicht Gegenstand dieses Dokuments.

Entfernen Sie binäre Daten aus dem Formular

Manchmal treten die Abstürze ständig in einem einzigen Formular oder Bericht auf oder nur beim Drucken. Möglicherweise sind die binären Daten im Formular / Bericht beschädigt.

Speichern Sie das Formular- / Berichtobjekt als Text. Es gibt zwei undokumentierte Funktionen. Application.SaveAsText und Application.LoadFromText. Mit diesen Funktionen können Sie die Formular- / Berichtdefinitionen exportieren, die Definition bereinigen und anschließend erneut importieren.

  1. Machen Sie eine Sicherungskopie Ihrer Datenbank, bevor Sie fortfahren
  2. Gehen Sie zum VBA-Direktfenster (Strg + G).
  3. Typ Application.SaveAsText acForm, "MyForm", CurrentProject.Path & "\MyForm.txt" (Ersetzen Sie MyForm durch den Namen des Formulars / Berichts. Verwenden Sie acReport, wenn es sich um einen beschädigten Bericht handelt, den Sie korrigieren.)
  4. Benennen Sie das ursprüngliche Formularelement (z. B. in MyForm.Bak umbenennen) im Datenbankfenster um

Bereinigen Sie die Form / Report Definitions-Datei

  1. Öffnen Sie die exportierte Datei (z. B. MyForm.txt) im Editor

  2. Löschen Sie die Zeile "Checksum =" (sollte sich in Zeile 3 befinden)

  3. Löschen Sie binäre Daten

    1. Identifizieren Sie die binären Datenblöcke. Durchsuchen Sie die Datei und Sie sehen Zeilen, die mit "Parameter = Begin" beginnen. Im Anschluss an diese Zeilen haben Sie Zeilen mit codierten Binärdaten. Schließlich endet der Binärblock mit einer Zeile, die nur aus "End" besteht. Der Binärdatenblock enthält die erste Zeile (mit der Begin-Anweisung) und alle Zeilen bis einschließlich der letzten Zeile (mit der End-Anweisung).

      Hinweis: Alle diese Blöcke sollten VOR Ihren Formularsteuerungsdefinitionen angezeigt werden

    2. Löschen Sie die binären Datenblöcke für die folgenden Parameter:

      • NameMap
      • PrtMip
      • PrtDevMode
      • PrtDevNames
      • PrtDevModeW
      • PrtDevNamesW
  4. Suchen Sie nach anderen Problemen. Wenn Sie die Datei geöffnet haben, scrollen Sie durch den Rest der Datei und suchen Sie nach etwas, das Sie auffällt, insbesondere im VBA-Modulcode unten. Sie werden nach etwas Ausschau halten, das sich vom Rest abhebt, und möglicherweise Korruption sein.

  5. Speicher die Datei.

Laden Sie das Formular / den Bericht zurück in Access und Test

  1. Laden Sie das Formular wieder in Access.
    • Gehen Sie in Access zum nächsten Fenster (Strg + G).
    • Typ Application.LoadFromText acForm, "MyForm", CurrentProject.Path & "\MyForm.txt"
    • Decompile / Compact Repair / Recompile (Siehe das andere Beispiel in der Dokumentation)
    • Öffnen Sie das Formular / den Bericht zum Testen. Hoffentlich funktioniert jetzt alles.
    • Löschen Sie das alte beschädigte Formular (zB MyForm.bak)

Verhindern Sie diese Korruption in der Zukunft

Die häufigste Ursache für beschädigte binäre Daten in einem Bericht / Formular ist, wenn mehrere Computer / Benutzer dieselbe Datenbank-Client-Datei verwenden, anstatt eine eigene Kopie zu haben. Aus diesem Grund sollte jeder Benutzer auf seinem Desktop eine eigene Client-Datei haben, die er ausführt.

Entfernen Sie "OLE Object" -Felder

Wenn Sie Bilder oder andere Daten in Access selbst als OLE-Objekte gespeichert haben, sollten Sie einen besseren Ansatz finden. Wenn die OLE-Daten gespeichert sind, werden sie entsprechend der Software (und Version der Software) auf dem Computer gespeichert, auf dem sie gespeichert sind. Wenn ein anderer Computer die OLE-Objektdaten im Formular anzeigt, die genaue Software / Version jedoch nicht installiert ist, führt dies häufig zum Absturz der Anwendung.

Wenn Sie Bilddaten speichern, empfiehlt es sich, den Dateinamen und stattdessen die Bilder an einem Standardspeicherort zu speichern. Neuere Zugriffsversionen verfügen über die systemeigenen Steuerelemente, um dies zum Weg zu machen.

Erstellen Sie die gesamte Datenbank neu

Dies ist eine Menge Arbeit, also als letzter Ausweg, nachdem alle anderen Möglichkeiten ausgeschöpft wurden. Sie müssen dies nur tun, wenn das Problem für verschiedene Benutzer auf verschiedenen Computern auftritt. Wenn dies nicht für alle Benutzer der Fall ist, handelt es sich höchstwahrscheinlich nicht um einen beschädigten Datenbankcontainer.

Ähnlich wie beim Entfernen binärer Daten werden Sie Ihre Datenbank von Grund auf neu erstellen. Dieser Prozess ist ein wenig ritualistisch, aber wenn er akribisch mit Sorgfalt durchgeführt wird, um mögliche Korruption nicht zu "bewahren", ist der Prozess äußerst effektiv.

Erstellen Sie einen neuen Zugriffsdatenbankcontainer.

  • In Access können Sie auf der Registerkarte "Datei" "Neu" auswählen. Erstellen Sie eine neue, leere Datenbank im ACCDB-Format.

Verschieben Sie alle Objekte in den neuen Container

Verwenden Sie nicht die Import- / Exportfunktionen in Access, um die Objekte zu verschieben, und klicken Sie nicht einfach darauf und ziehen Sie nicht. Dadurch können die beschädigten Elemente in den neuen Container kopiert werden.

Tabellen:

  • Erstellen Sie für jede Tabelle im alten Zugriffscontainer eine neue Tabelle im neuen Container.
  • Kopieren Sie die Felddefinitionen aus der Entwurfsansicht.
  • Überprüfen Sie die Tabelleneigenschaften, um sicherzustellen, dass sie in beiden Datenbanken übereinstimmen
  • Verschieben Sie auch beliebige Datenmakros (siehe Makros).
  • Um die Daten zu verschieben, exportieren Sie die alten Daten in XML oder CSV und importieren Sie sie dann aus diesem Format.

Anfragen:

  • Laden Sie jede Abfrage in die SQL-Ansicht.
  • Kopieren Sie den SQL-Text.
  • Einfügen in die neue Datenbank.
  • Vergleichen Sie die Abfrageeigenschaften, um sicherzustellen, dass sie übereinstimmen.

Formulare / Berichte:

  • Verwenden Sie für jedes Formular / jeden Bericht die Application.SaveAsText-Funktion, um die Formulare / Berichte in eine Textdatei zu exportieren.
  • Entfernen Sie die Binärdaten (siehe Binärdaten aus der Formulardokumentation entfernen, um sich mit diesem Vorgang vertraut zu machen.)
  • Verwenden Sie die Application.LoadFromText-Funktion, um die Objekte in die neue Datenbank erneut zu importieren

Makros

Sie haben drei Methoden, um die Makros zu verschieben.

  1. Erstellen Sie jedes Makro in dem neuen Datenbankcontainer von Hand neu.
  2. Verwenden Sie die Application.SaveAsText / Application.LoadFromText Methode mit dem Parameter acMacro .
  3. Makrodefinitionen für jedes Makro kopieren / einfügen
    • Wählen Sie Alle (Strg + A) aus, um alle Makroelemente auszuwählen. Dann kopieren Sie (Strg + C).
    • Öffnen Sie ein leeres Notepad-Dokument und fügen Sie die Makro-XML ein.
    • Erstellen Sie ein neues leeres Makro im neuen Datenbankcontainer.
    • Markieren Sie im Editor den gesamten Text (Strg + A). Dann Kopieren (Strg + C)
    • Fügen Sie im leeren Makro Einfügen (Strg + V) ein. Das Makro sollte angezeigt werden. Speichern Sie es.

Module

  • Wählen Sie für jedes Modul den gesamten Code (Strg + A) aus, und fügen Sie (Strg + V) den neuen Datenbankcontainer ein.
  • Stellen Sie sicher, dass Sie die Datenbankeigenschaften überprüfen (gehen Sie im VBA-Fenster zu Extras -> Client-Eigenschaften).

Datenmakros

Verwenden Sie für jedes Datenmakro die SaveAsText / LoadFromText-Methoden.

  1. Gehen Sie in das VBA-Direktfenster (Strg + G).
  2. Typ Application.SaveAsText acTableDataMacro, "MyTableName", CurrentProject.Path & "\MyTableName.txt" (Ersetzen Sie MyTableName durch den Namen der Tabelle, die die Datenmakros enthält).
  3. Überprüfen Sie die Datei auf Anzeichen von Korruption
  4. Laden Sie die Definition im neuen Datenbankcontainer mit Application.LoadFromText acTableDataMacro, "MyTableName", CurrentProject.Path & "\MyTableName.txt"

Wie bereits erwähnt, ist dies eine Menge Arbeit, aber es hat Ergebnisse. Diese Methode sollte auch bei der Migration einer Access 97-Datenbank nach 2000 oder einer Access 2000-Datenbank nach 2003 verwendet werden.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow