[Gelöst] Filterung einer Tabelle nach Records aufgrund...

21. Juli 2008 16:57

Ciao Kollegen,

Ich bin neu in der Programmierung von Navision. Mal vorneweg gesprochen, das Produkt ist ziemlich zum Kotzen, aber einarbeiten muss ich mich trotzdem.

Mein Problem: Ich möchte eine Tabelle nach Records filtern (bei einfacheren Problemen würde ich SETFILTER oder SETRANGE nehmen, aber das passt hier nur bedingt), allerdings das Kriterium ist das Vorhandensein eines Eintrags in einer anderen Tabelle mit einem gleichen Feldwert. Wie würde ich dazu vorgehen? Meinungen, Anregungen, Beispielcode bitte!

Bei einer SQL-basierten Datenbank wäre das kein Problem, aber hier wird die native Navision-DB genutzt :-(

Vielen Dank im Voraus.
Zuletzt geändert von GARMIN am 23. Juli 2008 11:09, insgesamt 1-mal geändert.

21. Juli 2008 22:08

Hallo Garmin,

zuerst möchte ich dich herzlich in unserer Community willkommen heißen.

Nun zu deinem Problem:
Na, wer wird denn gleich den Kopf hängen lassen?

Ja, es ist richtig, dass die Entwicklungsumgebung von Dynamics NAV bei Weitem nicht so umfangreich ist, wie bei anderen Programmiersprachen, aber NAV ist ja keine Programmiersprache, sondern ein ERP-System, welches auf sehr einfache Art angepasst werden kann.
Und hier liegt der Schwerpunkt auf Einfachheit, da müssen komplexe Programmierbefehle leider zurückstecken.

Da du hier von SETFILTER und SETRANGE zum filtern sprichst, gehe ich davon aus, dass du die Datensätze per C/AL-Code filtern möchtest.
Dies ist möglich. Hier mal ein kleines Beispiel, welches sowohl SETRANGE als auch SETFILTER verwendet:
Code:
IF Tabelle1.FINDSET THEN
  REPEAT
    Tabelle2.SETRANGE(Feld1,Tabelle1.Feld4711);
    Tabelle2.SETRANGE(Feld2,Tabelle1.Feld4711,Tabelle1.Feld4712);
    Tabelle2.SETFILTER(Feld3,'%1..%2|%3',Tabelle1.Feld4711,Tabelle1.Feld4712,Tabelle1.Feld4713);
    IF Tabelle2.FINDSET THEN
      REPEAT
        // Dein Programmcode hier
      UNTIL Tabelle2.NEXT = 0;
  UNTIL Tabelle1.NEXT = 0;

Bitte frage nicht nach dem Sinn meiner Filterbedingungen, denn sie sollen nur die Möglichkeiten darstellen. ;-)

23. Juli 2008 10:12

danke timo,

also verschachtelung von setranges und setfilters die auf verschiedenen tabellen arbeiten. soweit hatte ich nicht gedacht. bin halt doch an andere arbeitsmethoden gewöhnt.

zu deiner aussage: es ist ja nur ein ERP-system - trotzdem sollte man seinem system eine ordentliche programmiersprache und anbindung an gängige systeme gönnen, denn gerade dies sind erhebliche verkaufsargumente. wer will sein ERP-system schon von der stange??

bis später, G.