SETRANGE - Vergleich zweier Spalten

20. April 2020 10:38

Hallo zusammen,

ich möchte eine Recordvariable filtern. Und zwar möchte ich nur die Datensätze sehen, bei denen Spalte A = Spalte B ist. Mit SQL ist das total simpel. Bei NAV 2018 fehlt mir gerade eine Idee. Ich benötige am Ende den Wert COUNT der gefilterten Recordvariable.

VG
Martin

Re: SETRANGE - Vergleich zweier Spalten

20. April 2020 10:44

NAV und einfache SQL Abfragen...

Du verwendest zwei Record Variablen und durchläufst beide mit einem Repeat Until und vergleichst dabei die Spalten A und B.

Alternative kannst du auch eine Query erstellen.

Re: SETRANGE - Vergleich zweier Spalten

15. Mai 2020 21:25

Code:
Record.RESET;
MESSAGE('%1',Record.COUNT);

IF Record.FINDSET THEN BEGIN
  REPEAT
    IF (Record."Field A" = Record."Field B") THEN BEGIN
      Record.MARK := TRUE;
    END;
  UNTIL Record.NEXT = 0;
END;

Record.MARKEDONLY(TRUE);
MESSAGE('%1',Record.COUNT);

Re: SETRANGE - Vergleich zweier Spalten

16. Mai 2020 09:59

Hallo,

dass man das mit Schleifen programmieren kann ist klar. Aber warum sollte man das machen, wenn SQL das selber kann. Ist mir ein Rätsel, warum NAV das nicht integriert.

Martin

Re: SETRANGE - Vergleich zweier Spalten

17. Mai 2020 09:31

Hallo,

doch das sollte gehen.

Wenn du ein Flowfield auf die gleiche Tabelle definierst, das eben diesen Filter sinngemäß setzt.

für SalesHeader auf Salesheader also z.B. EXIST( where (Document Type = Document Type) and (No. = No.) and (FeldA=FeldB))

Das Ergebnis sollte TRUE sein, wenn FeldA gleich FeldB ist.

Gruß Fiddi

Re: SETRANGE - Vergleich zweier Spalten

17. Mai 2020 11:28

speerwerfer hat geschrieben:...wenn SQL das selber kann. Ist mir ein Rätsel, warum NAV das nicht integriert...

Das ist NAV. Da wirst du dich daran geöhnen müssen, wenn du weiterhin mit NAV programmieren (möchtest/musst).
Du kannst dir eine Query erstellen, welche das umsetzt. Das kommt SQL am nähesten.
Oder wie beschrieben mit einer Schleife, wobei es natürlich mehrere Lösungsmöglichkeiten gibt.

SQL ist da natürlich deutlich schneller. Das liegt in der Natur der Sache. Dafür bietet NAV andere Vorteile.