Announcement

Collapse
No announcement yet.

Werte seit dem letzten Lesen geändert

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Werte seit dem letzten Lesen geändert

    Hallo Entwicklergemeinde,

    seit Tagen schon suche ich nach einer Fehlerursache und kann sie nicht finden. Beim Versuch, in ein als Currency deklariert Feld zu schreiben, erhalte ich folgende Fehlermeldung: Im Projekt MyApp.exe ist eine Exception mit der Meldung 'Die zum Aktualisieren angegebene Zeile wurde nicht gefunden. Einige Werte wurden seit dem letzten Lesen ggf. geändert' aufgetreten.

    Es handelt sich um eine Kundentabelle mit Adress-Daten in einer MS-Access-Datenbank. Das problematische Datenfeld Summe ist vom Typ Double, hat das Format Euro und zwei Dezimalstellen. In einer anderen Tabelle, in der die Verkäufe erfaßt werden, gibt es ebenfalls zwei Datenfelder mit den gleichen Vorgaben. Dort tritt der Fehler beim Schreiben nicht auf.

    In den Datasets für Käufer und Verkaufsvorgang sind die Felder für die Beträge ebenfalls exakt gleich definiert.

    Ich hab auch schon versucht, vor dem Schreiben in das Feld Summe currency auf false zu stellen und danach wieder auf true (was keine saubere Lösung darstellt). Die Fehlermeldung erscheint dennoch.

    (Das Seltsame ist nun: wenn ich im Käufer-Dataset das Property currency auf false stelle, funktioniert das Schreiben problemlos. Leider fehlt dann verständlicherweise das Euro-Zeichen hinter dem Betrag, und die beiden Stellen hinter dem Komma werden nur angezeigt, wenn der Wert hinter dem Komma ungleich 0 ist.)

    Dieser Absatz ist falsch! Auch bei currency=false kommt der Fehler. Ich habe nun die Aktualisierung der Summenfelder in der Käufer-Tabelle gleich nach dem Aktualisieren der Tabelle herausgenommen und lasse den Anwender die Käufer-Summen per Button aktualisieren. Und seltsam: es funktioniert fehlerfrei ... wenn ich die Berechnung der Käufersummen nicht sofort nach der letzten Aktualisierung der Auktions-Tabelle vornehme.

    Abhilfe geschaffen hat eine Abmeldung und Wiederanmeldung der Datenbank nach der letzten Aktualisierung der Auktionstabelle. Nun kann ich sofort die Käufersummen aktualisieren, ohne daß eine Fehlermeldung erscheint. Ich versteh's dennoch nicht ganz ...

    Code:
    {Hier funktioniert das Zuweisen an ein Currency-Feld}
    PROCEDURE DatenEintragen;
    ...
    BEGIN
    DatMod.Aset_Auktion.Edit; DatMod.Aset_Auktion.FieldByName('AukEnde').AsDateTime := StrToDateTime(AukEnde); DatMod.Aset_Auktion.FieldByName('Anzahl').AsString := Anzahl; DatMod.Aset_Auktion.FieldByName('Endpreis').AsCurrency := StrToCurr(Preis); DatMod.Aset_Auktion.FieldByName('Aktualisiert').AsBoolean := TRUE; DatMod.Aset_Auktion.Post; SummeEintragen;
    END; {Hier funktioniert das Zuweisen an ein Currency-Feld nicht} PROCEDURE SummeEintragen; VAR Kaufer : LONGINT; Summe, Preis : Currency; BEGIN Kaufer := DatMod.Aset_Auktion.FieldByName('Kaufer').AsInteger; Preis := DatMod.Aset_Auktion.FieldByName('Endpreis').AsCurrency; DatMod.Aset_Kaufer.Locate('Index',Kaufer,[]); Summe := DatMod.Aset_Kaufer.FieldByName('Summe').AsCurrency; DatMod.Aset_Kaufer.Edit; DatMod.Aset_Kaufer.FieldByName('Summe').AsCurrency := Summe + Preis; DatMod.Aset_Kaufer.Post; END;
    Wer hat eine Idee, woran das liegen könnte?

    mfg - Perlsau
    Zuletzt editiert von Perlsau; 14.11.2009, 02:17. Reason: Inkorrekte Beschreibung ...
    Die Tränen, die du nicht weinen willst, müssen andere für dich vergießen. (Frei nach: wer nicht leiden will, muß hassen.)
Working...
X