[GELÖST]GETRECORD richtig angewendet?

21. Januar 2015 14:00

Schönen guten Tag,

ich bin nun schon seit mehreren Stunden dabei mich mit diesem Problem auseinander zu setzen.
Ich erläutere kurz den Ablauf den ich mir Wünsche:

1. Ich öffne PageX und drücke auf eine Funktion.
2. Funktion startet einen ReportY.
2.1 ReportY filtert ein Record
2.2 ReportY startet eine PageZ mit dem gefiltertem Record.
3. In PageZ makiert man mit der Maus die gewünschten Zeilen die man haben möchte.
3.1 Mit drücken auf OK wird die Page geschlossen
4. Der ReportY soll nun die makierten Zeilen weiterverarbeiten.

Nun zu meinem bisherigen Code (vereinfacht / Ab Report):

Report - OnPreDataItem()

Record_1_Global.RESET;
Record_1_Global.SETRANGE(Feld1,10000);
IF Record_1_Global.COUNT <> 0 THEN BEGIN
Page_1_Local.SETRECORD(Record_1_Global);
Page_1_Local.SETTABLEVIEW(Record_1_Global);
Page_1_Local.LOOKUPMODE(TRUE);
Page_1_Local.EDITABLE(FALSE);
IF Page_1_Local.RUNMODAL = ACTION::LookupOK THEN
Page_1_Local.GETRECORD(Record_1_Global);
END ELSE
ERROR('');


In der Page_1 passiert folgendes:

Page_1 - OnQueryClosePage

Record_2_Local.RESET;
CurrPage.SETSELECTIONFILTER(Record_2_Local);
IF Record_2_Local.COUNT <> 0 THEN BEGIN
Rec.RESET;
Rec.COPY(Record_2_Local);
END ELSE
ERROR('');


Mein Problem ist nun, dass ich mit GETRECORD nun nicht das bekomme was ich haben möchte.
Die Page hat allerdings beim schließen die richtigen Werte.
In meinem Beispiel hat "Rec" in der Page "3" Zeilen, was auch richtig so ist.
Mein "Page_1_Local.GETRECORD(Record_1_Global);" hat aber 9 Zeilen, was nun falsch ist.

Verwende ich GETRECORD nun falsch oder wie bekomme ich nun in meinem Report die 3 Zeilen die im "Rec" stehen?

Ich hoffe ich habe das ganze verständlich dargestellt und freue mich auf schnelle Antwort.
MfG,
Masaky
Zuletzt geändert von Masaky am 21. Januar 2015 17:14, insgesamt 1-mal geändert.

Re: GETRECORD richtig angewendet?

21. Januar 2015 14:11

Masaky hat geschrieben:3. In PageZ makiert man mit der Maus die gewünschten Zeilen die man haben möchte.

Allein schon weil du scheinbar mehrere Records gleichzeitig markieren darfst, hilft dir GETRECORD (ein Record) nicht weiter. Du brauchst SETSELECTIONFILTER (siehe Onlinehilfe).
Bei dem Befehl brauchst du eine neue Recordvariable, in welche die Auswahl geschrieben wird. Diesen mit Filtern gefüllten Record kannst du dann (mittels einer selbst geschriebenen Funktion) an den Report zurückreichen und entsprechend weiterverarbeiten.

Übrigens: fasse hier Codestellen bitte mit [Code]-Tags ein. Dies erhöht die Lesbarkeit des Quelltextes deutlich.

Re: GETRECORD richtig angewendet?

21. Januar 2015 17:00

Danke für die schnelle Antwort.

Auf der Page passiert nun folgendes:
Code:
Service_l.RESET;
CurrPage.SETSELECTIONFILTER(Service_l);
IF Service_l.COUNT <> 0 THEN
CopyServiceLines.StartCopy(Service_l);


Habe nun über ".StartCopy" die Recordvariable als Parameter mitgegeben.
Wenn ich auf dem Report nun den Parameter verwende ist dieser ungefilter.
Wieso passiert das?

MfG,
Masaky

Re: GETRECORD richtig angewendet?

21. Januar 2015 17:06

Ich habe mir meine Frage gerade selbst beantwortet.
Ich hab vergessen bei dem Parameter "VAR" mit anzuharken.

Augen auf kann ich mir selbst nur raten.

MfG,
Masaky