24. Oktober 2011 11:38
Hallo zusammen,
damit ihr nicht genauso dumm aus der Wäsche guckt, falls sich euch mal die Fehlermeldung
Microsoft Dynamics NAV hat geschrieben:"Die komprimierte Datei hat ein ungültiges Format"
präsentiert, hier die Ursache sowie die Lösung zu dieser Meldung.
Ursache: Mindestens ein Objekt ist in der Datenbank kaputt (fehlerhafte Informationen in dem BLOB-Feld der Tabelle Objekt).
Lösung: Wir müssen das Objekt (aus einer noch funktionierenden Sicherung) wiederherstellen, da das Objekt in der Datenbank nicht mehr zu retten ist.
Lösungsweg:
- Identifizierung des fehlerhaften Objektes
- Kompilieren aller Objekte, dabei genau auf die Fortschrittsanzeige achten, um den Objekttyp und annähernd die betroffene Objekt-ID zu erkennen.
- Fehlermeldung wegklicken und sich im Object Designer langsame der Objekt-ID nähern, um die letzte heile Objekt-ID vor dem fehlerhaften Objekt zu identifizieren.
- In einer (möglichst exakt gleichen) Datenbank die nachfolgende Objekt-ID ermitteln.
- Löschen des fehlerhaften Objektes
Da es nicht möglich ist, das Objekt durch eine fehlerfreie Version zu ersetzen, muss das Objekt zuerst aus der Datenbank gelöscht werden.
Da es jedoch bei einem direkten Zugriff auf die Objekttabelle zu der besagten Fehlermeldung kommt, müssen wir den betroffenen Datensatz aus der Tabelle löschen, ohne ihn direkt anzusprechen.
Hierzu erstellen wir uns eine neue Form, platzieren dort einen CommandButton und tragen im OnPush-Trigger folgende Zeilen ein:
(Als Beispiel möchten wir den Report 393 löschen.)
- Code:
Object.SETRANGE(Type,Object.Type::Report);
Object.SETRANGE("Company Name",'');
Object.SETRANGE(ID,393); // ID direkt eingeben! Nicht Report::"393" o. ä. schreiben!
Object.DELETEALL; // Direkt ohne GET, FIND o. ä. löschen!
Diese Form braucht nicht gespeichert werden, sondern kann direkt aus dem Designer heraus mit [Strg]+[R] gestartet werden. - Wiederherstellung des Objektes
Da das Objekt nun nicht mehr existiert, können wir es aus einer Datensicherung/Datenbankkopie/... wiederherstellen, indem wir es dort als FOB exportieren und in unserer DB importieren. - Prüfung auf weitere fehlerhafte Objekte
Die Schritte 1-4 solange wiederholen, bis sich alle Objekte ohne die oben zitierte Fehlermeldung kompilieren lassen.
(Nicht kompilierbare Objekte interessieren uns in diesem konkreten Fall nicht, da sie nicht für die o. g. Fehlermeldung verantwortlich sind.)
Hinweis:Es könnte sein, dass eure Lizenz das Löschen des Objektes nicht zulässt.
Wenn ihr End-Anwender seid, dann wendet euch bitte an euren zuständigen Microsoft Partner, damit er den Schritt 2 mit seiner Lizenz durchführt.
Wenn ihr Microsoft Partner seid, dann wendet euch an den Eigentümer des Objektes, damit dieser das Objekt mit seiner Lizenz löschen kann.
Sollte jemand von euch eine elegantere/einfachere/... Methode kennen, so lasst uns an eurem Wissen teilhaben.