[GELÖST] Page Action in Zusammenhang mit Filter

30. September 2015 09:29

Hallo liebe Community,

ich habe folgende Frage zu einer Filterungsaufgabe.

Folgendes:
Ich möchte in einer Subpage (Zeilen) ein Boolsches Feld setzen (auch wenn in den Zeilen ein Filter gesetzt wird).

Ich habe eine Page Action erstellt erstellt und dazu folgenden Code geschrieben.
C/AL Locals » Variables: PhysInvRecLine vom Typ Record
Code:
CurrPage.SETSELECTIONFILTER(PhysInvRecLine);
IF PhysInvRecLine.FINDSET THEN BEGIN
  REPEAT
    Recorded := TRUE;
  UNTIL PhysInvRecLine.NEXT = 0;
END;


Jedoch wird nur die Zeile beansprucht, welche markiert ist. Ich möchte aber gerne, dass das Feld "Erfasst" bei allen angezeigten (aktiver Filter) Zeilen gesetzt wird.

Wer kann mir helfen?

In anderen Beiträgen im Forum konnte ich schon herauslesen, dass der SETSELECTIONFILTER grade für markierte Zeilen gilt. Gibt es eine andere Filtermöglichkeit?

Gruß,
Boyrinho
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Boyrinho am 30. September 2015 11:14, insgesamt 1-mal geändert.

Re: Page Action in Zusammenhang mit Filter

30. September 2015 09:39

Code:
CurrPage.SETSELECTIONFILTER(PhysInvRecLine);
IF PhysInvRecLine.FINDSET THEN BEGIN
  REPEAT
    PhysInvRecLine.Recorded := TRUE; // muss ein Feld des Records sein
    PhysInvRecLine.MODIFY; // ohne Speicherung ist der Wert beim Verlassen des Datensatzes weg
  UNTIL PhysInvRecLine.NEXT = 0;
END;


Oder das Obige in eleganter und performanter:
Code:
CurrPage.SETSELECTIONFILTER(PhysInvRecLine);
PhysInvRecLine.MODIFYALL(Recorded,TRUE);

Re: Page Action in Zusammenhang mit Filter

30. September 2015 10:03

SETSELECTIONFILTER verwendet man, wenn man auf alle aktuelle ausgewählten Datensätze filtern möchte. Das heißt, wenn du mehrere Zeilen in deiner Subpage markierst sollten alle markierten den Haken bekommen.

Wenn du alle immer alle Datensätze in der Subpage durchgehen möchtest, dann sollte das wie folgend funktionieren:

Code:
PhysInvRecLine.SETVIEW(GETVIEW);
PhysInvRecLine.MODIFYALL(Recorded,TRUE);

Re: Page Action in Zusammenhang mit Filter

30. September 2015 10:44

Hallo Natalie und Hallo Michael,

wann darf ich Euch einen ausgeben? :)

Im übrigen:

der SETSELECTIONFILTER wollte trotzdem nicht so wirklich funktionieren. Habe es mit dem COPYFILTER versucht, und es hat geklappt.

Code:
IF CONFIRM(Text001, TRUE) THEN BEGIN //Abfrage für den Anwender
  PhysInvRecLine.COPYFILTERS(Rec); //Anstatt SETSELECTIONFILTER
  IF PhysInvRecLine.FINDSET THEN BEGIN
    REPEAT
      PhysInvRecLine.Recorded := TRUE;
      PhysInvRecLine.MODIFY;
    UNTIL PhysInvRecLine.NEXT = 0;
  END ELSE BEGIN
    RESET;
  END;
END;


Vielen Dank und viele Grüße,
Boyrinho

Re: Page Action in Zusammenhang mit Filter

30. September 2015 11:11

Ah ja Copyfilter. Ich wusste da gibt's noch was...
Das RESET im ELSE Zweig finde ich problematisch. Damit werden die Tableview Einstellungen der Page u.U. umgangen. Ich denke Folgendes wäre besser:

Code:
IF CONFIRM(Text001, TRUE) THEN BEGIN //Abfrage für den Anwender
  PhysInvRecLine.COPYFILTERS(Rec); //Anstatt SETSELECTIONFILTER
  PhysInvRecLine.MODIFYALL(Recorded, TRUE);
END;

Re: Page Action in Zusammenhang mit Filter

30. September 2015 11:14

Super! Passt!!! Danke nochmal!