Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Problem mit Post (https://www.delphipraxis.net/182969-problem-mit-post.html)

Natcree 30. Nov 2014 22:44

Datenbank: mysql • Version: 5.7 • Zugriff über: Ado

Problem mit Post
 
Hallo Wenn ich mein tquery auf insert setze und anschließßend auf post gehe dann kommt diese Fehlermeldung

---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EDatabaseError with message 'Die zum Aktualisieren angegebene Zeile wurde nicht gefunden. Einige Werte wurden seit dem letzten Lesen ggf. geändert'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------

Aber nur wenn ich nicht geändert habe.

Wie kann ich abfragen ob etwas geändert wurde?

himitsu 30. Nov 2014 23:05

AW: Problem mit Post
 
Hat die Tabelle irgendwelche datenbankseitig veränderliche Felder? (Autoinc, Trigger usw.)

Vermutlich hast du vergessen der Query-Komponente das ID-Feld zu nennen und selber war sie nicht dazu in der Lage ... drum vergleicht die Komponente eventuell den gesamten Datensatz oder zumindestens das/eines der veränderten Felder, weswegen dann natürlich der Datensatz weg ist, für die Query-Komponente.

Auch wenn das ID-Feld serverseitig verändert wird, sollte "RefrehAfterPost" aktiv sein, um den veränderten Wert zu erhalten.

Natcree 30. Nov 2014 23:14

AW: Problem mit Post
 
Ja das Feld ID ist Primery Key und auto inc. Wie sage ich es denn der Query komponente?

Natcree 30. Nov 2014 23:59

AW: Problem mit Post
 
Habs jetz so gelöst. :)

jedesmal wenn ich die datenbank auf edit setze ändert er ein Field mit diesem Code dadurch kommt der fehler jetz nicht mehr

Delphi-Quellcode:
clientdataset1.FieldByName('aenderung').AsString:='0';
i := 1 + Random(100);
clientdataset1.FieldByName('aenderung').AsString:=inttostr(strtoint(clientdataset1.FieldValues['aenderung'])+i);

himitsu 1. Dez 2014 01:01

AW: Problem mit Post
 
k.A. ... gibt es an dem Query irgendwo sowas wie OID?


PS:
Delphi-Quellcode:
ClientDataSet1.FieldByName('aenderung').AsString := '0';
i := 1 + Random(100);
ClientDataSet1.FieldByName('aenderung').AsString := IntToStr(StrToInt(ClientDataSet1.FieldValues['aenderung']) + i);
Delphi-Quellcode:
ClientDataSet1.FieldByName('aenderung').AsInteger := 0;
i := 1 + Random(100);
ClientDataSet1.FieldByName('aenderung').AsInteger := ClientDataSet1.FieldByName['aenderung'].AsInteger + i;
Delphi-Quellcode:
//ClientDataSet1.FieldByName('aenderung').AsInteger := 0;
i := 1 + Random(100);
ClientDataSet1.FieldByName('aenderung').AsInteger := 0 + i;
Delphi-Quellcode:
//ClientDataSet1.FieldByName('aenderung').AsInteger := 0;
ClientDataSet1.FieldByName('aenderung').AsInteger := 1 + Random(100);
:gruebel:

baumina 1. Dez 2014 06:18

AW: Problem mit Post
 
Damit ein insert oder edit einer Query richtig funktionieren kann, ist es zwingend notwendig die eindeutige ID (AutoInc) mit im select zu haben, ansonsten wird der Datensatz in der Datenbank nicht gefunden.

Mit TDataset.Modified kann man feststellen, ob es Änderungen im Datensatz gibt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz