Seite 1 von 1

HModify ändert nicht, sonder fügt hinzu - warum?

Verfasst: 7. Juli 2014, 09:41
von Magic
Hi,

folgendes Problem:

Ich hole mir eine Datensatz mit FileToScree(...) in ein Fenster zum editieren.
Nach dem editieren führe ich ein ScreenToFile(...) um anschließend den Datensatz per HModify(...) zu ändern.

Die Tabelle ist in einer HFSQL Ver. 17.
Merkwürdigerweise wird dann der Datensatz nicht geändert, sondern ein neuer angelegt. wie als hätte ich ein HAdd(...) ausgeführt.
Woran kann es nur liegen? Was habe ich übersehen? Dieses Verhalten habe ich bei mind. 2 unterschiedlichen Tabellen.

Re: HModify ändert nicht, sonder fügt hinzu - warum?

Verfasst: 7. Juli 2014, 17:49
von Herbert
Nein, kenne ich nicht.
Bist du sicher,m dass nirgendwo sonst bereits ein Hadd() steht?

Was hast du denn für Inhalte? Kannst du sehen, ob vorher ein Hreset() erfolgte? Hmodify() speichert einfach den aktuellen Satz ab, sonst müsstest du ja Daten des zuletzt gelesenen Satzes dabei haben.

Prüfe mal auf ..newrecord auf die Tabelle. Müsstest ja in deinem Fall ein true haben. So musst du dann rückwärts suchen, woher dies kommt.

Re: HModify ändert nicht, sonder fügt hinzu - warum?

Verfasst: 9. Juli 2014, 08:17
von Magic
Herbert hat geschrieben:Bist du sicher,m dass nirgendwo sonst bereits ein Hadd() steht?
Ja.
Herbert hat geschrieben:Hmodify() speichert einfach den aktuellen Satz ab, ...
Genau das will ich auch.

Aber jetzt hat es "klick" gemacht. Natürlich ...
Vor dem HModify(...) prüfe ich ob die Daten OK sind und ob es z.B. bereits einen Datensatz mit dann den gleichen Daten gibt. Dazu führe ich z.B. ein HReedSeek(...) aus. Ist jetzt klar, danach steht der Satzzeiger auf einem anderen Datensatz. Hätte auch früher drauf kommen können.
Nach der Prüfung müsste ich also nur wieder zurück auf dem ursprünglichen Datensatz positionieren.

Aber wie gestalte ich denn solch eine Prüfung mit dem WieDev Mitteln?
Nutzt Ihr hierfür das automatische Exception verhalten, welches WinDev anbietet?

Re: HModify ändert nicht, sonder fügt hinzu - warum?

Verfasst: 9. Juli 2014, 09:29
von Magic
OK, hab es gelöst.
Direkt nach dem FileToScreen(...) merke ich mir die Datensatznummer mit HRecNum(...).
Beim HModify(...) gebe ich als Parameter die Nummer des Datensatzes an, der geändert werden soll und alles ist gut.