[gelöst]Table Box ohne Bestätigung keine Werte ändern

21. September 2006 16:05

Hallo,

ich habe in einer Form eine Tabelle im Table Box dargestellt.

Der User ändert da einige Werte. Ich möchte, dass die Werte nur dann in der Tabelle geändert werden, wenn der User zusätzlich den Button "Ändern" klickt. Sonst wenn der User, z.B die Werte ändert und auf "X" auf der Form drückt, sollen die Werte nicht geändert werden.
Kann man sowas realisieren?

Vielen Dank voraus,
Boris
Zuletzt geändert von boris am 21. September 2006 18:04, insgesamt 1-mal geändert.

21. September 2006 16:23

Das geht nur, wenn du vorher die zu ändernden Datensätze in eine temporäre Tabelle schreibst, diese Tabelle dann in der Form anzeigst und wenn der User auf Ändern klickt, wird der entsprechende Original-Datensatz geändert z.B. mit Transferfields.
Wenn man die Form einfach schließt wird die Temporäre Tabelle mit allen geänderten Daten dem Bit-Recycling übergeben (auf Deutsch: in die Tonne gekloppt ;-) )

21. September 2006 16:42

Vielen Dank!
Ich glaube heute ist mein Navision-Begeisterungstag. :-(
Andere Frage:
Wenn ein Wert sich in der Tabelle ändert, dass die Tabelle neu gelesen wird?

Re: Table Box ohne Bestätigung keine Werte ändern

21. September 2006 16:48

boris hat geschrieben:Der User ändert da einige Werte. Ich möchte, dass die Werte nur dann in der Tabelle geändert werden, wenn der User zusätzlich den Button "Ändern" klickt. Sonst wenn der User, z.B die Werte ändert und auf "X" auf der Form drückt, sollen die Werte nicht geändert werden.


Das entspricht eben leider nicht der Navision-Philosophie, wie Datensätze behandelt werden. Ich habe da auch schon viele Stunden investiert, um dahingehende Kundenwünsche zu erfüllen. Aber wirklich gute Lösungen sind nur mit enormem Aufwand zu bewerkstelligen.

Mein Tipp: Sich hier mit dem Standard anfreunden :wink:

21. September 2006 16:56

rotsch hat geschrieben:entspricht eben leider nicht der Navision-Philosophie, wie Datensätze behandelt werden. Ich habe da auch schon viele Stunden investiert, um dahingehende Kundenwünsche zu erfüllen. Aber wirklich gute Lösungen sind nur mit enormem Aufwand zu bewerkstelligen.

Mein Tipp: Sich hier mit dem Standard anfreunden


Ich schon, für mich kein Problem, mir wäre am liebsten, wenn gar keine Änderungen vorgenommen werden müssen. Leider die lieben Kunden!!! :evil:

21. September 2006 17:00

boris hat geschrieben:Andere Frage:
Wenn ein Wert sich in der Tabelle ändert, dass die Tabelle neu gelesen wird?

Dann bleibt Dir nur, im OnAfterGetCurrentRecord die temporäre mit der originalen zu vergleichen und bei bedard zu aktualisieren.
Dadurch würden dann auch Änderung in anderen als der aktuellen Zeile, die noch nicht mit "Ändern" gespeichert wurden, wieder zurückgesetzt, sobald man diese Zeile mit dem Cursor anklickt.

21. September 2006 17:04

Ich habe in einem ähnlichen folgende Lösung verwendet. Vielleicht wäre das noch ein Ansatz für dich:

Code:
IF NOT CONFIRM('Wollen Sie die Adresse wirklich ändern?') THEN BEGIN
  Rec := xRec;
  MODIFY;
  EXIT;
END;

21. September 2006 17:32

Vielleicht denke ich zu kompliziert(komme von anderen Programmiersprachen und EPR-Systemen):

ich habe die Aufgabe die Datensätze aus einer Datei anzuzeigen. Der User soll Möglichkeit haben entweder den Datensatz übernehmen (Feld uebernommen sollte auf TRUE gesetzt werden und der Datensatz soll nicht mehr angezeigt werden) oder löschen (Feld geloescht sollte auf TRUE gesetzt werden und der Datensatz soll nicht mehr angezeigt werden)

Was ist die beste Lösung für das Problem?

21. September 2006 17:47

Hi Boris,
boris hat geschrieben:[...]
ich habe die Aufgabe die Datensätze aus einer Datei anzuzeigen. Der User soll Möglichkeit haben entweder den Datensatz übernehmen (Feld uebernommen sollte auf TRUE gesetzt werden und der Datensatz soll nicht mehr angezeigt werden) oder löschen (Feld geloescht sollte auf TRUE gesetzt werden und der Datensatz soll nicht mehr angezeigt werden)


1. Beim Öffnen der Form würde ich den Dataport starten, der die Daten importiert. Die Form zeigt dann die Tabelle an, in der die Daten importiert wurden.

2. Im "OnValidate"-Trigger des Feldes "Übernehmen" überträgst du den Datensatz in die andere Tabelle und löscht ihn anschließend.

3. Im "OnValidate"-Trigger des Feldes "Löschen" löscht du den Datensatz einfach mit dem Befehl DELETE.

Gruß, Marc

21. September 2006 17:52

Hallo Marc,

genauso habe ich es realisiert, mein Problem, der Datensatz bleibt nach "OnValidate" auf dem Bildschirm angezeigt und das wird bemängelt.

Gruss,
Boris
Zuletzt geändert von boris am 21. September 2006 17:54, insgesamt 1-mal geändert.

21. September 2006 17:54

Dann machst du im OnAfterValidate noch ein Currform.update und ggf noch ein Next ....

21. September 2006 18:00

Vielen Dank an alle!!! Jetzt läuft wie der Kunde wünscht!