[Gelöst] Mehrere Zeilen selektieren

25. März 2014 11:01

Hallo Gemeinde,

ich habe wieder mal eine Hürde im NAV zu überwinden. Es geht im großen und ganzen um die Selektierung mehrerer Zeilen einer Subpage und ausführen einer Funktion für alle dieser selektierten Zeilen. Ich habe jetzt auch schon reichlich recherchiert aber bin aus diversen Anleitungen nicht wirklich schlauer geworden. Der Button für die Funktion befindet sich direkt auf der Subpage (54 - Purchase Order Subform). Es soll also nicht umbedingt eine Weiterreichen der Information an die "Vater Page" geschehen, da dies ja immernoch nur über Umwege möglich ist. Einzelne Zeilen stellen auch kein Problem dar, allerdings hab ich es noch nicht geschafft mehrere Zeilen anzusprechen, es ist immer die letzte, welche mit einem Mausklick markiert wurde. Ich hoffe es ist einigermaßen verständlich :-). Vielen Dank im Voraus für eure Hilfe.
Zuletzt geändert von jkahnt am 25. März 2014 11:59, insgesamt 1-mal geändert.

Re: Mehrere Zeilen selektieren

25. März 2014 11:12

Kennst du schon den Befehl SETSELECTIONFILTER (siehe Onlinehilfe)?
Dieser muss auf der Subpage aufgerufen werden und liefert eine Recordvariable, die auf alle markierten Zeilen gefiltert ist. Diese Recordvariable kannst du ggf. an weitere Funktionen weiter reichen.

Re: Mehrere Zeilen selektieren

25. März 2014 11:28

Hallo Natalie,

ja ich habe schon einiges mit der Funktion SETSELECTIONFILTER probiert allerdings führte da bis jetzt nichts zum Erfolg. Kurz zum Verlauf:

1. Versuch:

Subpage(54):

Function SetSelection(VAR purchaseLine : Record "Purchase Line"){
CurrPage.SETSELECTIONFILTER(purchaseLine);
purchaseLine.MARKEDONLY(TRUE);
}

Hauptpage(50):

Buttonfunktion:
...
CurrPage.PurchLines.PAGE.SetSelection(purchaseLine);

--> Funktionierte leider nicht.

2. Versuch

Subpage:

Buttonfunktion:
...
CurrPage.SETSELECTIONFILTER(Rec);
MARKEDONLY(TRUE) // auch ohne probiert

--> funktionierte auch nicht.

Ich vermute das ich vermutlich nur ein Verständnisproblem bei der Funktion habe, bin aber aus allen Anleitung bzw. Forenthreads leider nicht schlauer geworden :-(.

Re: Mehrere Zeilen selektieren

25. März 2014 11:41

jkahnt hat geschrieben:1. Versuch:

Subpage(54):

Function SetSelection(VAR purchaseLine : Record "Purchase Line"){
CurrPage.SETSELECTIONFILTER(purchaseLine);
purchaseLine.MARKEDONLY(TRUE);
}

Das MARKEDONLY brauchst du nicht, das ist bereits im SETSELECTIONFILTER enthalten (stand so in der Onlinehilfe ;-)).
Dürfte eigentlich keinen Unterschied machen, aber teste es sicherheitshalber ohne das MARKEDONLY noch einmal.
purchaseLine als VAR-Paramater war absolut richtig und auch notwendig, falls du die gewählten Datensätze außerhalb des Subpage-Objektes benötigst.

2. Versuch

Subpage:

Buttonfunktion:
...
CurrPage.SETSELECTIONFILTER(Rec);
MARKEDONLY(TRUE) // auch ohne probiert

--> funktionierte auch nicht.

was hätte denn hier passieren sollen? Bitte nicht auf Rec anwenden, sondern auf eine neue Recordvariable.

Also, ich würde es an deiner Stelle zuerst mit der einfachsten Lösung probieren:
In Subpage neue Action mit folgenden Quelltext (keine neue Funktion, daher auch keine Parameter):
Code:
CurrPage.SETSELECTIONFILTER(PurchaseLine);
// du kannst auch zu Testzwecken hier ein MESSAGE(FORMAT(PurchaseLine.COUNT)) absetzen.
IF PurchaseLine.FINDSET THEN BEGIN
  REPEAT
    
// was auch immer du mit den gewählten Datensätzen vorhattest
  UNTIL PurchaseLine.NEXT = 0;
END

Erst wenn das funktioniert, kannst du versuchen, die Funktionalität auszulagern.

Re: Mehrere Zeilen selektieren

25. März 2014 11:42

jkahnt hat geschrieben:1. Versuch:

Subpage(54):

Function SetSelection(VAR purchaseLine : Record "Purchase Line"){
CurrPage.SETSELECTIONFILTER(purchaseLine);
purchaseLine.MARKEDONLY(TRUE);
}

Das MARKEDONLY brauchst du nicht, das ist bereits im SETSELECTIONFILTER enthalten (stand so in der Onlinehilfe ;-)).
Dürfte eigentlich keinen Unterschied machen, aber teste es sicherheitshalber ohne das MARKEDONLY noch einmal.
purchaseLine als VAR-Paramater war absolut richtig und auch notwendig, falls du die gewählten Datensätze außerhalb des Subpage-Objektes benötigst.

2. Versuch

Subpage:

Buttonfunktion:
...
CurrPage.SETSELECTIONFILTER(Rec);
MARKEDONLY(TRUE) // auch ohne probiert

--> funktionierte auch nicht.

was hätte denn hier passieren sollen? Bitte nicht auf Rec anwenden, sondern auf eine neue Recordvariable.

Also, ich würde es an deiner Stelle zuerst mit der einfachsten Lösung probieren:
In Subpage neue Action mit folgenden Quelltext (keine neue Funktion, daher auch keine Parameter):
Code:
CurrPage.SETSELECTIONFILTER(PurchaseLine);
// du kannst auch zu Testzwecken hier ein MESSAGE(FORMAT(PurchaseLine.COUNT)) absetzen.
IF PurchaseLine.FINDSET THEN BEGIN
  REPEAT
    
// was auch immer du mit den gewählten Datensätzen vorhattest
  UNTIL PurchaseLine.NEXT = 0;
END;

Erst wenn das funktioniert, kannst du versuchen, die Funktionalität auszulagern.

Re: Mehrere Zeilen selektieren

25. März 2014 11:58

Perfekt. Es lag an der Rec Variable, genau das war der große Fehler. Mit der Record Variable PurchaseLine auf den Record "Purchase Line" funktioniert es jetzt wunderbar. Vielen Herzlichen Dank.