Feld einer Record als Variable[Gelöst]

2. März 2009 11:00

Hallo liebe NAV-Freunde,

kann man Felder als Vraiblen handhaben?

Folgendes Problem ich möchte über verschieden Felder einer Record einen Mittelwert berechnen. Dazu habe ich eine Funktion entwickelt die das leistet:

Code:
x:= Rec.Field;

IF Rec.FIND('-') THEN BEGIN
  count:=0;
  REPEAT
    count:=count+1;
  UNTIL  Rec.NEXT = 0;

  Rec.CALCSUMS(x);
  Sum:=x;
  average:= Sum/count;
END;


Da diese Funktion auf zig Felder angewandt werden soll, habe ich verständlicherweise wenig Lust sie immer wieder einzutippen.
Das Problem ist: wenn ich Rec.Feld in der Funktion variabel halte, ist der Code nicht mehr Kompilierbar

("es wude eine Feld einer Datensatzvariable erwartet!Z.B. Datensatz.Feld")

Wie bekomme ich es hier hin, damit das Feld immer variable bleibt. Die Record ist an sich immer dieselbe, bloß verschiedene Felder
Zuletzt geändert von Natalie am 2. März 2009 12:23, insgesamt 2-mal geändert.
Grund: Quelltext eingerückt, um ihn für andere lesbarer zu machen

Re: Feld einer Record als Variable

2. März 2009 11:12

NAVGATOR hat geschrieben:count:=0;
REPEAT
count:=count+1;
UNTIL
Rec.NEXT = 0;
Das ließe sich auch in Count:=rec.count zusammen fassen.

NAVGATOR hat geschrieben:Wie bekomme ich es hier hin, damit das Feld immer variable bleibt. Die Record ist an sich immer dieselbe, bloß verschiedene Felder
Schau dir in der Hilfe mal Fieldref an.

Re: Feld einer Record als Variable

2. März 2009 11:55

Habe in der Doku nachgesehen:

bei Rec.Calcsums(x);

muss x vom Typ Record sein.

habe den Parameter meiner Funktion auf diesen Datentyp angepasst.

nun beschwert sich der Compiler: "Table Data 0 existiert nicht"

Re: Feld einer Record als Variable

2. März 2009 12:03

Problem kann ich aber denke ich anders lösen.
Die Berechenung der Summe lasse ich außerhalb der Funktion machen :-D

In Rec.Calcsums(Field1, Field2, ...) lassen sich laut Doku beliebig viele berechnen

Nachtrag Field ist natürlich vom Typ decimal , nicht Record wie ich oben behauptet habe, sorry!