"Speichern und Nächster" im Suchfenster funkioniert nicht korrekt

Issue #76 resolved
MxO2204 created an issue

Version: 121-EE3 (und alle vorherigen) OS: Windows 10

Ich habe das Ganze mal vereinfacht nachgestellt. Ausgangslage: es sind 5 Filme in der Datei. Das "MyNr" Feld enthält folgende Angaben: Film 1: "1 / A", Film 2: "2 / B", Film 3: "3 / A", Film 4: "4 / B", Film 5: "5 / A".

Was will ich machen? Ich möchte bei allen Filmen den bisherigen Lagerort, der als "A" oder "B" im "MyNr" Feld hinter dem / steht ins korrekte Feld "Lagerort" stellen und dann aus dem "MyNr" Feld löschen, sodass tatsächlich nur noch meine Filmnummer steht. Ich kenne natürlich die Stapelverarbeitung, kann sie hier aber nicht verwenden.

Verhalten: Mit der Suche wird nach "A" im "MyNr" Feld gesucht. Es werden korrekt die Filme 1, 3 und 5 angezeigt. Film 1 wird bearbeitet. Das "MyNr" Feld wird auf "1" korrigiert, der Lagerort wird auf "A" gesetzt (war vorher leer). Der Film wird mit "Speichern und Nächster" gespeichert.

Problem: im Suchfenster verschwindet korrekt Film 1. ABER zum Bearbeiten wird jetzt Film 5! angezeigt. Nun wird erneut das "MyNr" Feld auf "5" korrigiert und der Lagerort wird auf "A" gesetzt. Beim Speichern stürzt das Programm mit Fehler "Schreiben der Daten fehlgeschlagen" direkt ab. Der Fehler ist reproduzierbar.

Nach dem Neustart steht bei Film 1 korrekt "A" im Lagerort, Film 3 wurde nicht geändert und bei Film 5 steht manchmal "A" im Lagerort, machmal aber auch nichts.

Die Bearbeitung funktioniert korrekt, wenn die Änderungen mit "Speichern" gesichert werden. Wichtig ist, dass die gefundenen Filme in der Tabelle nicht hintereinander liegen.

Zum einfachen Nachstellen habe ich das Backup der Test DB beigefügt.

Comments (16)

  1. Atze Danjo

    Ich habe mir das mal genauer angesehen, was hier passiert ist folgendes:

    Die Tabelle (die Ausgewählte Zeile ist in Fettschrift) mit den Suchergebnissen enthält 3 Zeilen:

    Nr MyNr
    1 1 / A
    3 3 / A
    5 5 / A

    Ich wähle die 1. Zeile, bearbeite den Eintrag, klicke auf Speichern & nächster Speichern und nächster sind 2 Schritte. Erst wird die Änderung gespeichert und die Tabelle aktualisiert.

    Nr MyNr
    3 3 / A
    5 5 / A

    Dadurch wird aus der 2. Zeile die 1. Zeile und aus der 3. Zeile die 2. Zeile. Im nächsten Schritt, wird dann die ausgewählte Zeite um 1 erhöht (1 + 1 = 2) und diese zum Bearbeiten geöffnet.

    Nr MyNr
    3 3 / A
    5 5 / A

    So weit, so logisch... Ich lasse das mal hier, um A) unserer fleißigen Community zu zeigen, dass wir fleißig sind und B) in der Hoffnung, dass einer meiner beiden fleißigen "Kollegen" eine gute Idee hat :)

  2. tbengel

    Ich habe es genau nach den Schritten von MxO2204 gemacht (sehr gute Anleitung), und ich habe den selben Effekt, wie von MxO2204 beschrieben.

    Fehlermeldung:

    "Unexpected token: in statement [select id,ort,nr,bild,titel,originaltitel,regie,genre,laenge,fsk,erscheinungsjahr,herstellungsland,ofdb,note,inhalt,filter from STARTDB where ]"

    Atze, wenn Du es genauso machst, wie von MxO2204 beschrieben (also auch das Umbenennen der beiden Felder MyNr und Lagerort), gibt es genau den reproduzierbaren Bug zu beobachten. Zuerst wir ein Film übersprungen und beim Speichern gibt es dann die Fehlermeldung.

    Das Problem liegt daran, dass (warum auch immer) ein Film übersprungen wird, was mit dem Filter im Suchefenster zu tun haben könnte ...

  3. Atze Danjo

    @tbengel Ja, ich weiß, siehe meinen vorherigen Kommentar in dem ich versucht habe darzustellen, warum das passiert.

  4. tbengel

    Sorry ich dachte Du hast den Fehler nicht reproduzieren können, da Du geschrieben hast "So weit, so logisch" und ich finde es nicht logisch, dass der 2.te Film übersprungen wurde, weshalb ich der Annahme bin, dass genau hier das Problem liegt.

  5. Atze Danjo

    "So weit, so logisch" bezog sich auf die Ursache des Symptoms (Film wird übersprungen)

    Ich bin mir gerade nicht sicher, wie ich dir das verständlich machen kann, da mir nicht klar ist, was denn bisher unverständlich bzw. missverständlich an meiner Darstellung war. Vielleicht hilft es, wenn du dir meinen Kommentar noch mal durchliest, mit dem Gedanken im Hinterkopf, dass er darstellen soll, warum der Fehler passiert!?

    P.S.: Mit "Was hier passiert" ist gemeint, "Was in dem von MxO2204 geschilderten Szenario passiert", nicht "Was hier bei mir passiert, wenn ich versuche das zu reproduzieren"

  6. tbengel

    Problem ist also, dass sich durch die Aktualisierung der Tabelle die Grundmenge der angezeigten Filme ändert, der Prozess aber davon ausgeht, dass die Grundmenge gleich geblieben ist. Versuche doch mal die Schritte zu tauschen, also erst Erhöhung um 1 und dann die Aktualisierung ... dies wäre jetzt mein Ansatz, den ich versuchen würde zu verfolgen ...

  7. Atze Danjo

    Ne, das Problem ist, das die 1. Zeile aus der Tabelle verschwindet. Würden die ersten beiden Zeilen unverändert bleiben, würde es kein Problem geben.

    Die ausgewählte Zeile vor dem Speichern um 1 zu erhöhen zum selben Ergebnis führen:

    Nr MyNr
    1 1 / A
    3 3 / A
    5 5 / A
    Nr MyNr
    1 1 / A
    3 3 / A
    5 5 / A
    Nr MyNr
    3 3 / A
    5 5 / A

    Man müsste das irgendwie in 2 Fällen behandeln

    1. Wenn die Tabelle unverändert bleibt, nächste Zeile = aktuelle Zeile + 1
    2. Wenn Tabelle verändert, dann nächste Zeile = aktuelle Zeile
  8. tbengel

    Zweitens: Wenn Tabelle verändert, dann nächste Zeile = aktuelle Zeile --> aber dies nur dann, wenn die aktuelle Zeile nicht mehr vorhanden, ansonsten 1.

  9. tbengel

    Nach Umstellung auf das neue Tabellemodell, tritt dieser Fehler ab der Version 1.9.2 nicht mehr auf (gerade mit Beispieldatenbank getestet).

  10. Log in to comment