Wert in Tabelle ganzheitlich setzen

28. Juli 2009 22:14

Hallo,

ich bin noch ein Anfänger auf dem NAV-Gebiet und daher stehe ich vor einem wohl eher primitiven Problem:
Ich möchte in einer Tabelle über einen Report ein bestimmtes Feld setzen (Haken Ja/Nein). Das Feld ist bereits vorhanden, jedoch ist kein Datensatz mit dem Haken versehen. Da es sich um tausende Datensätze handelt, dachte ich an einen Report, welcher über die komplette Tabelle läuft und den Wert entsprechend setzt. Wie würde ein derartiger Report aussehen? (ich habe von Programmierung keinen blassen Schimmer, sorry)

Viele Grüße
herschel81

Re: Wert in Tabelle ganzheitlich setzen

28. Juli 2009 22:20

Es geht tasächlich über einen Einzeiler:
Wenn nötig, vorher Filter setzen, sonst geht die folgende Zeile über alle Datensätze der Tabelle
Code:
DeinZielrecord.MODIFYALL(DeinBoolFeld, TRUE);


Dieser kann auch z.B. von einer Codeunit aufgerufen werden. In einen Report würde ich ihn nicht unbedingt packen, ist bei so einer Minimalanforderung genau genommen MEHR Aufwand :-)

Wenn ich mich nicht irre, ist ein MODIFYALL auch viel performanter, als wenn du die Datensätze in einer Schleife durchlaufen und dort ändern würdest.

Aber Achtung: Falls du beim Ändern des Feldes den OnValidate-Trigger aufrufen möchtest, musst du statt MODIFYALL wirklich einen Schleifendurchlauf programmieren
Code:
IF DeinRec.FIND('-') THEN BEGIN
  REPEAT
    DeinRec.VALIDATE(DeinBoolFeld, TRUE);
    DeinRec.MODIFY; // evtl. MODIFY(TRUE)
  UNTIL DeinRec.NEXT = 0;
END;

Re: Wert in Tabelle ganzheitlich setzen

28. Juli 2009 22:45

Wenn du verstehen möchtest, wie du ein solches Problem löst: Siehe Natalie's Antwort.

Wenn du einfach nur schnell eine funktionierende Lösung brauchst: Siehe unseren Download Tabellendaten aktualisieren ;-)