3. Oktober 2009 12:26
Irgendwo muss es einen Abbruch gegeben haben (nicht unbedingt beim aktuellen Vorgang, das kann auch schon eine Weile zurück liegen), sonst wäre die Datenbank nicht in diesem Zustand. Durch AddOns und Branchenlösungen befinden sich häufig zusätzliche COMMITs in der Buchungsroutine, da sonst dort sonst das altbekannte Riesenfenster auftaucht, das einzeln auflistet, was innerhalb von Buchungsroutinen nicht erlaubt ist, z.B. Forms modal aufzurufen. Hier ist dann der letzte Satz "Verwenden Sie ein COMMIT, um ihre Änderungen abzuschließen". Wenn man dann diesem Ratschlag folgt, ist das Kind in den Brunnen gefallen. Besser wäre es da natürlich, den Buchungsprozess anders zu gestalten, aber das ist auch nicht immer machbar.
Der Fehler kann aber durchaus nicht im Buchungscode liegen, sondern auch in Inkonsistenzen liegen, die schon länger existieren, die aber erst jetzt angesprochen wurden. Dann es zu z.B. dem anderen bekannten Fehler " Es ist nicht genügend Stackpeicher vorhanden..." kommen, der unter normalen Bedingungen niemals auftauchen würde. So einen Fall hatte ich z.B. mit falschen Mengen in den Ausgleichsposten, siehe
hier.
Die einzige absolute Inkonsistenzsperre im System besteht auf Sachpostenebene. Es ist nicht möglich, eine einseitige Sollbuchung zu verbuchen, ohne den gleichen Betrag auch ins Haben zu buchen. Dann bricht der Vorgang mit einer INCONSISTENT-Meldung ab. Das kommt normalerweise in der Praxis nicht vor (beim Entwickeln schon einmal
), aber da die Sachpostenbuchungen normalerweise am Ende des Buchungsvorgangs stehen, wären bei einer Routine mit COMMITs auch hier sofort Inkonsistenzen in anderen Tabellen vorhanden.