[Gelöst] Command Button funktioniert nur einmal?

7. März 2008 16:35

Hallo ich bins mal wieder,

also ich habe ein Form (Main, Subform), das sind 2 Tabellen nebeneinander.

Nun habe ich einen Knopf drin, bei dem in onPush folgender Code hinterlegt ist:


IF rec_LAGE000014.ARTIKELNR = '' THEN BEGIN
rec_LAGE000014.ARTIKELNR := ARTIKELNR;
rec_LAGE000014.VERKAUF1 := VERKAUF1;
rec_LAGE000014.BEZ1 := BEZ1;
rec_LAGE000014.BEZ2 := BEZ2;
rec_LAGE000014.VERKAUF := VERKAUF;
rec_LAGE000014.BESTAND := BESTAND;
rec_LAGE000014.LIEFERANT_NR := LIEFERANT_NR;
rec_LAGE000014.FWEINKAUF := FWEINKAUF;

rec_LAGE000014.INSERT(TRUE);
CurrForm.UPDATE;
END;

Das kuriose ist nun, das wenn ich das Form öffne und auf einem beliebigen Datensatz den Button betätige wird in der anderen Tabelle der Datensatz kopiert/eingefügt. Und dann funktioniert der Button nicht mehr.

Erst wenn ich das Form wiweder schließe und neu aufrufe funktioniert der Button wieder 1x!

Und ich weiss nicht warum :-) Kann mir jemand helfen?

Vielen Dank.
Zuletzt geändert von tesarolle am 10. März 2008 11:01, insgesamt 1-mal geändert.

7. März 2008 18:15

Kann es sein, dass beim ersten mal rec_LAGE000014.ARTIKELNR effektiv '' ist. Jedoch beim zweiten mal dann nicht mehr weil der Zeiger noch auf dem selben Record steht, und deshalb der ganze IF-Block nicht mehr ausgeführt wird?

Kannst ja mal END; durch END ELSE MESSAGE('IF-Block übersprungen'); ersetzen und gucken was passiert.

7. März 2008 22:46

wenn artikelnr im rec_lage000014 der Primärschlüssel ist, dann würde ich in der If-zeile schreiben
Code:
if not rec_lage000014.get(artikelnr) then begin

Dadurch prüfst du erstmal ob es die aktuelle artikelnr schon gibt, und wenn nicht wird der Code ausgeführt. Rick hat schon treffend gesagt, warum deine Version nur beim ersten Aufruf funktioniert. Um das Feld wieder leer zu machen müsstest du ein Init oder ein Clear machen. aber wenn dann die Artikelnr schon vorhanden ist, knallts.

10. März 2008 11:00

Hallo!

Dankke für Eure Hilfe.

Ich habe einfac hden Code von Michael in meiner ersten Zeile eingefügt (und meine erste Zeile ersetzt) und nun gehts...