Extension - Neuer Key auf Basistabelle nicht möglich?

4. Mai 2020 11:04

Hallo allerseits,

ich möchte die Sortierung der Datensätze beim Öffnen einer Page ändern. Typischerweise mache ich das mit SetCurrentKey und SetAscending (um das Sortierfeld zu wählen). Nun möchte ich aber nach einem Basis-Feld sortieren, das nicht in den Keys der Basistabelle enthalten ist. Gutes Beispiel hierfür wäre z.B. die "Description 2" der Tabelle "Item".

In älteren Versionen habe ich einfach einen entsprechenden Key hinzugefügt. Wenn ich das aber über eine Table-Extension versuche, akzeptiert die Extension nur eigene Felder der jeweiligen Extension. "Description 2" wird in diesem Kontext nicht akzeptiert.

Mir fallen im Moment nur folgende Workarrounds ein:
- Ändern der Basistabelle > möchte ich unbedingt vermeiden!
- gewünschtes "Sortier-Feld" als eigenes Extension-Feld duplizieren/synchronisieren und dann einen Key auf des eigene Feld sezten > das ist umständlich und unschön!

Habt ihr eventuell eine bessere Lösung - oder übersehe ich etwas, wie es doch ohne Workarround klappen sollte?

Falls es keine optimale "Extension-Lösung" gibt:
In der Page kann ich ja über das Kontextmenü der Spaltenüberschrift nach jedem Feld sortieren. Könnte ich mir das irgendwie zu nutze machen und per Code beim Öffnen einer Page vorgeben?

Beste Grüße
Ralf

Re: Extension - Neuer Key auf Basistabelle nicht möglich?

4. Mai 2020 12:26

Nur für die Sortierung brauchst du keinen Key anlegen; geht aber ggf. zu Lasten der Performance. Hast du das schon ausprobiert?

Neue Keys mit Standardfeldern anlegen müsste eig. funktionieren - solange ein Key NUR (!) Standardfelder enthält.

Re: Extension - Neuer Key auf Basistabelle nicht möglich?

4. Mai 2020 12:34

Hallo Natalie,

Neue Keys mit Standardfeldern anlegen müsste eig. funktionieren - solange ein Key NUR (!) Standardfelder enthält.

Das habe ich in einer Extension vergeblich versucht! Dazu habe ich probehalber einfach den KEY auf "Description 2" bei einer Extension der Item-Tabelle eingebunden. Also nur ein einziges Standard-Feld. Deine Vermutung, das das eig. funktionieren müsste kann ich also leider nicht bestätigen.

Nur für die Sortierung brauchst du keinen Key anlegen; geht aber ggf. zu Lasten der Performance. Hast du das schon ausprobiert?

Aber wie setze ich dann die Sortierung per Code (SetCurrentKey geht hier ja nicht, da die Anweisung nur mit Keys arbeitet). Das es ohne festen Key ein Performance-Thema ist, ist mir schon klar.

Gruß
Ralf

Re: Extension - Neuer Key auf Basistabelle nicht möglich?

4. Mai 2020 13:21

Das Zauberwort dürfte wohl SETASCENDING lauten.

Re: Extension - Neuer Key auf Basistabelle nicht möglich?

4. Mai 2020 13:59

Hast recht, kannst gar keine Standardfelder verwenden:
https://docs.microsoft.com/en-us/dynami ... ifications

Re: Extension - Neuer Key auf Basistabelle nicht möglich?

4. Mai 2020 14:27

Bezüglich der Thematik "Einen neuen Key zu erstellen" - gerade wenn es Performance-relevant sein könnte - bleiben mir dann wohl tatsächlich nur meine beschriebenen Workarrounds :-(

Für die "einfache" Sortierung habe ich in der Artikelliste folgenden Code eingefügt und tatsächlich wurden die Artikel dann nach Bezeichnung 2 sortiert:
Code:
    trigger OnOpenPage()
    begin
        SetCurrentKey("Description 2");
        SetAscending("Description 2", false);
    end;

Ich war in der irrigen Annahme, das für SetCurrentKey auch ein Key erforderlich ist und nicht stattdessen genauso gut ein Feld verwendet werden kann, das nicht zu einem Key gehört.
Dabei habe ich auch festgestellt, das ich bei mehreren SetAscending-Anweisungen und gleichzeitiger Reihenfolge der da verwendeten Felder in der "SetCurrentKey"-Anweisung auch nach mehreren Feldern sortieren kann :-)
Klar diese Nutzung kann natürlich an der Performance nagen!

Was bei uns allerdings nicht funktioniert: ob wir bei SetAscending true oder false (auf-/absteigend) verwenden, hat keinerlei Einfluss. Es wird immer aufsteigend sortiert.
Ist das bei euch genauso?

Gruß
Ralf

Re: Extension - Neuer Key auf Basistabelle nicht möglich?

5. Mai 2020 11:01

Wenn Du das nicht zur Laufzeit machen musst, dann kannst Du das auch in den Properties der Page festlegen:
Code:
SourceTableView = sorting("Description 2")

oder mit Sortierung:
Code:
SourceTableView = sorting("Description 2") order(descending);
funktioniert hier auch abwärts.

Re: Extension - Neuer Key auf Basistabelle nicht möglich?

5. Mai 2020 13:46

Hallo Eddie,

das wäre eine gute Idee gewesen - haut aber leider auch nicht hin :-(
Ich kriege dann die Meldung:
Sorting field 'Description 2' should be part of the keys for table 'Item'

Das geht also auch scheinbar nur mit Key-Feldern der Basistabelle.

Aber - darf ich deinem alternativen Vorschlag entnehmen, das SETASCENDING auch bei dir nicht mit absteigende Sortierung funktioniert?

Gruß
Ralf

Re: Extension - Neuer Key auf Basistabelle nicht möglich?

5. Mai 2020 13:54

Sorting field 'Description 2' should be part of the keys for table 'Item'


Kriegst Du das als Warning oder als Error beim kompilieren? Bei mir funktioniert das. Habe das allerdings auch mit einer eigenen Tabelle im Einsatz. Werde das nachher mal mit ner Standard-Tabelle versuchen.

Nein, ich habe das mit Ascending nicht ausprobiert beim Setcurrentkey. Probier ich nachher auch mal aus...

Re: Extension - Neuer Key auf Basistabelle nicht möglich?

5. Mai 2020 14:07

ich habe das mit der Tabelle "Customer" und dem Feld "Name 2" ausprobiert. Funktioniert im Property der Page ohne Fehlermeldung.

Im OnOpenForm hat SetAscending false bei mir auch keine Auswirkung, funzt also bei mir auch nicht.

Re: Extension - Neuer Key auf Basistabelle nicht möglich?

5. Mai 2020 15:11

Danke Eddi,

die Meldung kommt als "Warnung". Ich kann es zwar gerade nicht testen - aber ich gehe mal davon aus, das die Veröffentlichung dann trotzdem möglich ist und dein Vorschlag mit "SourceTableView" funktioniert.
Und auch vielen Dank, das du den Bug bei "SetAscending" bestätigen konntest. Nicht schön ... aber dann weiß ich wenigstens, das es nicht an mir liegt.

Gruß
Ralf

Re: Extension - Neuer Key auf Basistabelle nicht möglich?

5. Mai 2020 20:59

Hallo,

Ihr müsst zwei Dinge unterscheiden
1. Die Sortierung. Da kannst du in einer Page angeben was du möchtest. Ob das dann auch performant ist, hängt davon ab, ob es nur wenige Datensätze sind, oder es einen passenden Schlüssel in der Tabelle gibt, womit wir bei Punkt 2 wären.
2. Den Schlüssel in der Tabelle. Hier dürfte es Probleme geben, wenn du Schlüssel über Felder aus Extension und der Base-App anlegen willst,

Gruß Fiddi