[Gelöst] Virtuelle Tabelle (Key)lässt sich nicht filtern(CC)

30. November 2010 18:47

Hallo zusammen!

Ich habe ein kleines Problem mit einer virtuellen Tabelle (2000000063 "Key"). Und zwar werden Filter (anscheinend) nicht korrekt umgesetzt. Diese Tabelle hat folgende Felder:

  • TableNo (int)
  • No. (int)
  • TableName (Text)
  • Key (Text)
  • SumIndexFields (Text)
  • SQLIndex (Text)
  • Enabled (Boolean)
  • MaintainSQLIndex (Boolean)
  • MaintainSIFTIndex (Boolean)
  • Clustered (Boolean)
Wenn ich mir nun eine Variable vom Typ "Record" und Subtype "Key" anlege, komme ich mit folgenden Filterungen zu keinem Ergebnis (ich möchte in dem Beispiel die Schlüssel der Item-Tabelle auslesen):

Code:
//Variante 1
Key.SETRANGE(TableNo, DATABASE::Item);
//Variante 2
Key.SETRANGE(TableNo, 27);
//Variante 3
Key.SETFILTER(TableNo, '27');
//Variante 4
Key.SETFILTER(TableNo, '%1', 27);
//Variante 5
Key.SETRANGE(TableName, 'Item');


Keine der Varianten von 1 - 4 führt zu einem Ergebnis - Variante 5 hingegen schon. Ich verstehe einfach nicht, warum die Filterung auf TableNo nichts bringt aber auf TableName hingegen schon (auf dieses Feld zu filtern ist halt nur sehr langsam). Es ist auch gar nicht sooo dramatisch, dass es nicht funktioniert - es wurmt mich einfach :-?

Vielleicht hat von euch ja jemand eine Idee dazu.

Viele Grüße
Kleba
Zuletzt geändert von Kleba am 1. Dezember 2010 12:08, insgesamt 1-mal geändert.

Re: Virtuelle Tabelle (Key) lässt sich nicht filtern (CC)

30. November 2010 21:05

Das ist echt interessant!
Dabei ist das Feld nicht anders definiert als andere Table No.-Felder. Ein FlowField ist es auch nicht.

Das einzig "normale" Verhalten: Bei der Rücknahme des Feldfilters wird etwas gefunden, d.h. bei
Code:
Key.SETFILTER(TableNo, '');

oder
Code:
Key.SETRANGE(TableNo);


Man könnte als Argument anführen: Tabellennummern sind nur ein tempärer aufbereiteter Wert - aber das ist die File-Tabelle auch, und trotzdem kann man sie per Quelltext filtern.

Re: Virtuelle Tabelle (Key) lässt sich nicht filtern (CC)

1. Dezember 2010 10:39

Diese Tabelle verhält sich wirklich seltsam.

Code:
Key.SETRANGE(TableNo, 27);

funktioniert nicht (wie schon oben erwähnt).

Code:
Key.SETRANGE(TableNo, 26, 27);

funktioniert !

Fragt mich bitte nicht, was das soll.

Re: Virtuelle Tabelle (Key) lässt sich nicht filtern (CC)

1. Dezember 2010 10:48

Geht denn
Code:
Key.SETRANGE(TableNo, 27, 27);

Wenn ja, dann ist das der gesuchte Workaround auf dem "richtigen" Feld.

Re: Virtuelle Tabelle (Key) lässt sich nicht filtern (CC)

1. Dezember 2010 10:59

Hab noch ein wenig rumprobiert.
Und jetzt wirds noch komischer.

Wenn man einen Filter auf das Feld TableNo setzt, funktioniert das Ganze nicht.
Setzt man zusätzlich einen Filter auf das Feld "No.", geht es plötzlich.
Man muss hier also einen Filter auf ALLE Felder des Primärschlüssels setzen.

Zum Beispiel:

Code:
SETRANGE(TableNo, 27);
SETFILTER("No.", '>%1', 0);


funktioniert wunderbar.

Ein weiteres ungelöstes Rätsel in der langen Liste der ungelösten Navision-Rätsel...

Re: Virtuelle Tabelle (Key) lässt sich nicht filtern (CC)

1. Dezember 2010 12:07

Hallo Natalie,
hallo MartinR,

ja, das ganze ist echt kurios. Aber wie MartinR ja schreibt, klappt's mit dem "erweiterten" Filter. Mir ist nur gerade beim probieren aufgefallen, dass man wirklich auf ">0" filtern muss. Mit "<>0" funktioniert das Ganze nämlich wieder nicht.

Vielen Dank für's miträtseln ihr beiden :)