[gelöst] Einträge einer List Page Filtern via C/AL Code

26. Oktober 2018 11:24

Hallo liebe Community

Leider komme ich bei folgendem Problem nicht weiter und benötige Hilfe.

Ausgangslage:
Ich habe eine List Page 50000 - WrongAddressList erstellt welche als Source Table Address hat.
Nun möchte ich via Code alle Records der Tabelle Address auf bestimmte Dinge prüfen und in meiner Page dann nur die Adressen anzeigen welche auf meine Prüfung zutreffen.
Die Filterung/Selektierung kann nicht via SourceTableView umgesetzt werden und muss zwingend im Code geschehen.

Bisheriger Code:
Ich habe folgenden Code bereits im OnOpenPage() , OnAfterGetRecord(),OnAfterGetCurrRecord() und in eigener Action ausprobiert, leider hat er nie funktioniert.
Ich erhalte immer noch alle Einträge und nicht nur die markierten.

Code:
Rec.FINDSET;
REPEAT
  HasWrongCharG := FALSE;
  IF StringHasWrongChar(Rec.Name) THEN
    HasWrongCharG := TRUE;
  IF StringHasWrongChar(Rec."Name 2") THEN
    HasWrongCharG := TRUE;

  IF HasWrongCharG = TRUE THEN
    Rec.MARK;
UNTIL Rec.NEXT = 0;
Rec.MARKEDONLY;


Was mache ich falsch oder wie könnte ich dies umsetzen das ich nur die markierten Einträge in dieser Page anzeige?
Besten Dank für die Vorschläge
Joshua
Zuletzt geändert von Joshua am 26. Oktober 2018 12:07, insgesamt 1-mal geändert.

Re: Einträge einer List Page Filtern via C/AL Code

26. Oktober 2018 11:38

Versuch es mal am Ende mit Parameter ;-)
Code:
Rec.MARKEDONLY(TRUE);

Re: Einträge einer List Page Filtern via C/AL Code

26. Oktober 2018 11:52

Natalie hat geschrieben:Versuch es mal am Ende mit Parameter ;-)
Code:
Rec.MARKEDONLY(TRUE);


Danke für den Hinweis.
Habe ich auch bereits versucht, leider hat das auch nicht geklappt.

Mit folgendem Code wird mir nun gar keine Adresse mehr angezeigt und auch der Count des Rec's am Ende gibt mir 0 zurück.
Wenn ich aber debugge sehe ich das mind. 2 Adressen markiert werden!

Code:
Rec.FINDSET;
REPEAT
  HasWrongCharG := FALSE;
  IF StringHasWrongChar(Rec.Name) THEN
    HasWrongCharG := TRUE;
  IF StringHasWrongChar(Rec."Name 2") THEN
    HasWrongCharG := TRUE;
  IF StringHasWrongChar(Rec."Search Description") THEN
    HasWrongCharG := TRUE;
  IF StringHasWrongChar(Rec.Address) THEN
    HasWrongCharG := TRUE;
  IF StringHasWrongChar(Rec."Address 2") THEN
    HasWrongCharG := TRUE;
  IF StringHasWrongChar(Rec.City) THEN
    HasWrongCharG := TRUE;
  IF StringHasWrongChar(Rec."E-Mail") THEN
    HasWrongCharG := TRUE;

  IF HasWrongCharG = TRUE THEN
    Rec.MARK;
UNTIL Rec.NEXT = 0;
Rec.MARKEDONLY(TRUE);
MESSAGE(FORMAT(Rec.COUNT));

Re: Einträge einer List Page Filtern via C/AL Code

26. Oktober 2018 12:03

Code:
  IF HasWrongCharG = TRUE THEN
    Rec.MARK;


du musst auch hier
Code:
    Rec.MARK(true);

machen

Re: Einträge einer List Page Filtern via C/AL Code

26. Oktober 2018 12:06

Vielen Dank nun hat es geklappt. Habe die MARK Funktion wohl etwas falsch verstanden :oops: :roll:
Danke für die schnelle Hilfe!