locked
c0000005-Absturz im Grid mit Optimize=.T. RRS feed

  • Frage

  • Hallo,

    ich habe hier folgendes Phänomen:

    Mein Kassenprogramm kann für alle möglichen Ereignisse sekundengenaue Log-Eintäge in eine DBF machen. Vom Backoffice-System kann ich diese Logs ansehen. Dort werden sie in einem Grid angezeigt. Es kann nach Ereignistyp, Kassennummer, Datum und Verkäufer gefiltert werden. Auf allen liegt ein Index. Im Grid hab ich OPTIMIZE=.T. gesetzt.

    Ist irgendeine der Filterungen aktiv und die Kassen im Netzwerk machen grad Logeinträge im Filter-Bereich, kommt es häufig zu C0000005-Abstürzen am Backoffice System, wenn ich ein bisschen im Grid herumscrolle. Zuerst hab ich das immer nur bei einem Kunden gesehen und seine spezielle Konfiguration in Verdacht gehabt, doch in seiner 2. Filiale passiert dasselbe (jeweils 5 Kassen gleichzeitig im Betrieb) und ich konnte es auch bei mir nachvollziehen, indem ich ein Kassenprogramm im Netzwerk jede Sekunde automatisch einen Logeintrag machen ließ. Setze ich OPTIMIZE=.F. im Grid, tritt der Fehler nicht auf. Geschwindigkeitsnachteile hab ich dabei auch nicht gesehen, aber trotzdem würde mich interessieren, wieso der Fehler überhaupt auftritt. Ist es ein bekannter BUG in VFP9?

    Übrigens, bevor die Frage kommt: Den Filter (über SET FILTER) bastel ich mit Konstanten zusammen, also kein Verweis auf andere Tabellen, Variablen oder Properties.

    Gruß,

    Winfried

    Mittwoch, 23. Mai 2012 21:34

Alle Antworten

  • Die .optimize property optimiert insbesondere das Aufsuchen des nächsten (oder vorigen) Datensatzes beim Füllen des Grids, oder beim Scrollen natürlich. Daher ist Deine Beobachtung und Analyse schon ganz sinnig.

    Die einfachste Lösung ist dann natürlich darauf zu verzichten. Das weist nochmal auf SMB Probleme hin, denn letztlich beruht der Grid.optimize - wie sollte es anders sein - auf indizes. Korrupte CDX, wie sie durch SMB oplocks auch nach meiner Erfahrung auftreten, führen dann logischerweise verstärkt zu C5.

    Tschüß, Olaf.

    PS: Wenn Du schon oplocks ausgeschaltet hast, probiere mal ob die Situation nach reindex aller Indizes wieder stabil wird.
    Donnerstag, 24. Mai 2012 20:19
  • Hallo Olaf,

    in diesem Fall sind keine CDXe kaputt und auch oplocks keine Ursache (der Netzwerk-Administrator des betroffenen Kunden hat auch Datenbank-Erfahrung und schaltet oplocks grundsätzlich aus). Es muss also eine andere Ursache haben. Der Programmcode, vorallem auf den Kassen, ist außerdem so einfach, dass da irgendwelche übersehenen Prammfehler auch unwahrscheinlich sind.

    Gruß,

    Winfried

    Freitag, 25. Mai 2012 11:34