Filtern - Satzmarkierung (SETFILTER - MARK)

15. März 2007 14:07

Hallo!

Ich habe heute versucht einen Filter zu bauen, welcher nur Zeilen der Tabelle 37 Sales Line anzeigt, wenn der Wert1 größer dem Wert2 ist.

Nachdem ich mit das ganze mit SETFILTER nicht hinbekommen habe, habe ich auf die Funktion MARK zurückgegriffen. Jedoch überlege ich mir die ganze Zeit schon ob es nicht doch über SETFILTER auch geht. Vor allem würden dann die Satzmarkierungen bei der Anzeige der Tabelle nicht so auffallen.

Folgendes habe ich gemacht.

Code:
IF FIND('-') THEN
   REPEAT
    IF "WERT1" > "WERT2" THEN
         MARK(TRUE);
  UNTIL NEXT = 0;

MARKEDONLY(TRUE);


Aber eigentlich müsste das ja auch gehen. Oder?
SETFILTER("WERT1",'> "WERT2"');

Aber damit bekomme ich immer einen Fehler.

Was mache ich falsch. Bitte um Verbesserungsvorschläge.

DANKE

15. März 2007 14:12

Probiers mal mit

Code:
SETFILTER("WERT1",'>%1', "WERT2"');

SETFILTER - TEST

15. März 2007 17:08

Danke für den Tipp. Der Zeile SETFILTER funktioniert prinzipell. Jedoch habe ich zweifel ob ich damit überhaupt ans Ziel kommen.

Angezeigt werden die Daten in einem Tabellen Form. Ich habe versucht den Code auf so ziemlich jedem Trigger zu positionieren. Aber es wird immer der Filter des ersten Wertes angelesen, und gesetzt. Und nachdem der Filter eigentlich pro Zeile gesetzt werden soll, bezweifle ich ob ich mit SETFILTER da überhaupt weiterkomme.

Danke vielmals für die schnelle Antwort.

15. März 2007 17:24

Du möchtest pro Zeile gucken, ob Wert1 DIESER Zeile größer ist Wert2 DIESER Zeile und nur dann diese Zeile anzeigen?

Dann war der Weg über MARKEDONLY schon eine von zwei möglichen Lösungen. Welche Fehlermeldung hast du denn auf diese Weise bekommen?

Die andere Lösung wäre es, vor/bei Aufruf der Form eine temp. Recordvariable zu füllen und die Form dessen Inhalt anzeigen zu lassen.

Diesen temp. Record füllst du dann so:
Code:
IF FIND('-') THEN
  REPEAT
    IF "WERT1" > "WERT2" THEN BEGIN
       TempRec := Rec;
       TempRec.INSERT;
    END;
  UNTIL NEXT = 0;

Temp Tabelle

15. März 2007 19:47

Hallo Natalie!

Danke für den Tipp.

Eine Sache hast du nur falsch verstanden. Das mit MARK hat eigentlich ganz gut funktioniert. Ich bin nur ein I-Tüpferl-Reiter (Österreichisch) und mich haben legendlich die angezeigten Satzmarker gestört.

Ich werde mal die Lösung mit der Temp Tabelle versuchen.

Danke.

15. März 2007 21:31

Mit einem SETFILTER wirst du kein Glück haben, da in jedem Record unterschiedliche Werte stehen können.
(Beim SETFILTER , wird immer die ganze Tabelle gefiltert. Sobald du den Filter auf dem Feld Wert1 änderst, wird der vorherrige SETFILTER aufgehoben!)

Die Variante von Natalie wird dich schon ehr zum Erfolg bringen
Gruß Mikka