Korrupte Form - Rettung oder Remake?
Während meiner Arbeit an dieser Datenbank-Applikation, die habe ich offenbar geschafft, beschädigte ein Formular in der Anwendung - Sie versuchen zu speichern, zu Bearbeiten, zu jedem Feld auf dem Formular führen, dass Access abstürzt, und für die Datenbank-Datei auf Bericht beschädigt ist, wenn Access versucht, öffnen Sie es erneut.
Habe ich versucht, exportieren die gesamte form + Steuerelemente wie text -, dann re-importieren Sie mithilfe von VB-code (von Allen Browne ' s website), aber es wird nicht re-import, ohne Absturz Zugreifen oder Sie sagen mir, die form ist nicht import-in der Lage, aufgrund eines Fehlers (keine Fehlernummer oder in der Beschreibung angegeben).
Form ist ziemlich Komplex, daher bin ich zögerlich, um nur ein remake, es von Grund auf, also gibt es eine Möglichkeit, es zu speichern? Wenn ich es schaffen, Sie zurückzugewinnen, bedeutet das, dass ich übertragen soll alles in eine neue MDB-Datei (falls es eine Kaskadierung Ausfall-Effekt)?
Um ehrlich zu sein, ich habe es nie geschafft, eine korrupte Access-Datenbank-Objekt vor, so dass ich don T wissen, ob dies ist etwas, das signalisiert das Ende der MDB-Datei, oder einfach nur etwas, was ich beheben kann und so weiter machen wie bisher.
- Wenn Sie "exportieren der gesamten form + controls als text" meinst du mit der SaveAsText-Funktion?
- Ja, mit der SaveAsText-Funktion - es wurde vorgeschlagen, als etwas zu versuchen, auf Allen Browne ' s website.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Andere geliefert haben, Sie mit verschiedenen Ansätzen, um möglicherweise wiederherstellen Ihrer beschädigten form. Manchmal ist ein code-Lager-Access-Objekt wird unwiederbringlich beschädigt und keine dieser Methoden funktioniert. In diesem Fall müssen Sie look= at-sicherungen finden Sie eine nicht beschädigte version als Ausgangspunkt und import, und dann überarbeiten Sie es zurück auf den aktuellen Zustand des Objekts.
Bin ich Entsendung eine Antwort vorschlagen, dass Sie wahrscheinlich brauchen, um Ihre Codierung Praktiken, wenn Sie die Begegnung mit der Korruption in den code-tragenden Objekten.
Erste, Sie brauchen, um sicherzustellen, dass Sie regelmäßige backups und nicht überschreiben. Rollback zu einer früheren version ist immer der Letzte Ausweg.
Schalten Sie immer KOMPILIERUNG AUF NACHFRAGE in den VBE-Optionen. Lesen Sie Michael Kaplans Artikel über Der Real Deal auf dem Decompile-Schalter für die Erklärung, warum.
In der VBE, fügen Sie den compile-button (und den call-stack-Taste), um Ihre regelmäßige VBE-Symbolleiste, und drücken Sie die Schaltfläche kompilieren nach allen paar Zeilen code, und speichern Sie Ihre code.
Entscheiden, auf einem angemessenen Intervall zu sichern und zu dekompilieren der app. Wenn Sie heavy-duty-code stampfen, möchten Sie vielleicht, dies zu tun jeden Tag. Wenn Sie erlebt haben eine Access-Absturz während der Codierung, die Sie wahrscheinlich wollen, um Ihre backup-und dekompilieren/kompilieren. Sicherlich vor dem verteilen an Benutzer, Sie sollten zu dekompilieren und kompilieren der app.
Wenn Sie diese Praktiken, die Ursachen der Korruption in code-Lager-Access-Objekte minimiert werden, so viel wie möglich, während Sie haben auch viel von backups (mehrere Ebenen von redundanten backups sind ein muss, denn wenn die backup-Fehler passieren, sind Sie fast immer Kaskade über mehrere Ebenen-haben mehrere Arten von backup-und verlassen Sie sich nicht auf eine automatische Sicherung (backup).
Aber der wichtigste Punkt:
Kompilieren oft, zu dekompilieren einigermaßen oft und eklig Zeug niemals eine chance haben, sich in die p-code Ihrer Anwendung.
Was ich am Ende tun war re-erstellen Sie das Formular, und kopieren Sie element in element, bis ich entdeckte, dass die strSupplierID combo-box selbst war die Ursache für den Absturz. Ich neu erstellt, es von Grund auf manuell geben Sie die gleichen Eigenschaften haben, und ersetzen die VB von gespeicherten Kopien, die ich Ausschneiden und einfügen in die Zwischenablage. Das Formular funktioniert jetzt, und ich entfernte den beschädigten form, und die Datenbank komprimiert. Danke für die Hilfe, jeder! 🙂
Dekompilieren ist eine gute Sache, zu versuchen, einmal, Sie haben eine Kopie der Datenbank. Haben Sie versucht, speichern das Formular unter einem anderen Namen mit Datei >> Speichern unter? Auch versuchen Sie, kopieren und einfügen das Formular mit einem anderen Namen aus der Datenbank-Fenster.
Außerdem ist es meine Erfahrung gewesen, dass eine korrupte form/Bericht nicht zu verbreiten, um dem rest der Datenbank. Das heißt, es tut nicht weh, Dinge zu bereinigen. Komprimieren und reparieren behebt nur Tabellen und damit verbundene Daten, wie Indizes und Beziehungen. Zu reinigen beschädigt, die anderen Objekte wie Formulare und Berichte müssen Sie importieren in eine neue MDB/ACCDB. Tipp: Schließen Sie die Datenbank-container-Fenster, wenn Sie eine Menge von Objekten. Zugang verschwendet viel Zeit beim import aktualisieren der Datenbank-container Fenster.
Haben Sie schaute auf den vollständigen Satz von Methoden für den Umgang mit Korruption von Allen Browne: http://allenbrowne.com/ser-47.html ? Insbesondere zu dekompilieren.
Kann es sich lohnen, versuchen Sie, ein kopieren und einfügen der Steuerelemente in eine neue form und fügen Sie allmählich wieder in den code.
Habe ich, dass mir das passieren viele Male. Hier sind ein paar der Dinge, die gespeichert mein Speck. Ich gehe davon aus, dass Sie mit Access 2003 oder höher. Probieren Sie konvertieren die Datenbank in Access 2002 oder 2000-format. Dann konvertieren Sie die Datenbank zurück, um Ihre aktuelle version.
Hier ist etwas code, den ich erstellt zur Bekämpfung von Paketen in früheren Versionen. Es löste auch dieses Problem für mich 95% der Zeit.
Option Compare Database
Option Explicit
Habe ich festgestellt, dass combo-Boxen mit 10 oder mehr Spalten kann die Ursache für ein Access-Formular zu verderben. Verringern Sie die Anzahl der Spalten oder entfernen, die combo-box zu sehen, wenn die form spart richtig. Dieses problem wurde in Bezug auf die Arbeit in der Win 7 64 bit-Betriebssystem mit Access 2003-Datenbanken. Es war kein problem beim entwickeln in XP in anderen Worten, die Formen speichern gut mit großen Spalten, zählt in combo-Boxen. Hoffe diese information hilft weiter, weil es verursacht eine Menge Verschwendete Zeit denken, wurde die Datenbank beschädigt.