[gelöst] Frage zum Setview und Sprachen

25. November 2008 11:38

Guten Morgen,

ich will die Datensätze in meinem Formular nach verschiedenen Keys sortieren lassen. Habe die Keys auch in meiner Tabelle angelegt und will die Ansicht über nen Button (o.ä.) umschalten können.

Die Navision-Hilfe sagt nur, ich soll es analog zum "SourceTableView" formulieren, also kommt raus:

Record.SETVIEW('SORTING(Belegdatum) ORDER(Ascending)'); bzw.
Record.SETVIEW('SORTING(Belegnummer) ORDER(Ascending)');


Jetzt fällt sicher schon auf, dass ich dort die deutsche Variablenbezeichnung verwende, und genau das ist mein Problem. Wenn ich die (orginalen) englischen Bezeichnungen verwende, kommt bei mir ne Fehlermeldung, mit deutschen Namen funktioniert es problemlos. Wenn ich allerdings die Sprache im Navision auf Englisch stelle, kommt der Fehler bei den deutschen Bezeichnungen und ich muss die englischen Variablennamen nehmen.

Das kann doch nicht der Ernst sein, oder? Damit kann ich das Formular praktisch nur in einer Spracheinstellung verwenden. Oder mach ich grundsätzlich was falsch? Oder kann ich irgendwie anders die Sortierung auf nen anderen Key umstellen?

Grüße
Zuletzt geändert von enno am 25. November 2008 13:16, insgesamt 1-mal geändert.

Re: Frage zum Setview und Sprachen

25. November 2008 11:40

Schlüssel setzt du im Quelltext per SETCURRENTKEY (siehe Onlinehilfe).
Dabei wird jedes Feld im Schlüssel mit seinem Namen (nicht Caption) angesprochen, so wie es überall in C/AL gemacht wird. D.h., dass es mit der Mehrsprachigkeit überhaupt kein Problem gibt.

Re: [gelöst] Frage zum Setview und Sprachen

25. November 2008 13:20

Mein Gott bist du schnell :lol:

Damit wär das Problem erledigt ...

Aber vielleicht trotzdem nochmal nachgehakt, um ein paar kleine Wissenslücken bei mir zu füllen:

Wofür kann ich dann aber Setview nutzen? Für ne Sortierung anhand eines Nicht-Schlüssel-Feldes?
Und warum arbeitet das Setview trotzdem nicht multilingual?

Grüße

Re: [gelöst] Frage zum Setview und Sprachen

25. November 2008 13:29

Wofür kann ich dann aber Setview nutzen? Für ne Sortierung anhand eines Nicht-Schlüssel-Feldes?
Wär das schön, wenn´s ginge .. ;)

Ich nehme SetView eigentlich nur bei der Verwendung von RecordRef-Variablen, wenn ich eine andere View vorher ausgelesen habe. So ist man dabei variabler, weil jede Art der Sortierung kopiert werden kann. Also RecordRef.SetView(Table.GetView). Sonst ginge es andersherum und von Tabelle<->Tabelle.

Re: [gelöst] Frage zum Setview und Sprachen

25. November 2008 13:43

enno hat geschrieben:Wofür kann ich dann aber Setview nutzen?

Wenn ich einen Rec1 (mit Schlüssel und Filtern) und einen Rec2 (ohne alles) habe und ich möchte die Rec1-Eigenschaften in menien Rec2 hineinkopieren, habe ich folgende Möglichkeiten:

Code:
Rec2 := Rec1; // setzt nur die einzelnen Felder von Rec2 wie in Rec1; keine Schlüssel oder Filter

Rec2.COPY(Rec1); // All filters, marks, and keys are included in the copy.

Rec2.SETVIEW(Rec1.GETVIEW)); // wie man sehen kann, mat SETVIEW nur mit einem vorherigen GETVIEW wirklich Sinn. Kopierergebnis wie bei COPY - außer Satzmarken, die fehlen


Die Unterschiede zwischen COPY und SETVIEW sind nun: für COPY brauchst du nur deine Record-Variablen, für SETVIEW dagagen einen String (statt einer Stringvariable wurde hier einfach mit Rec1.GETVIEW gearbeitet).

Falls nicht sofort ersichtlich, der SETVIEW arbeitet also so:
Code:
DeinString := Rec1.GETVIEW;
Rec2.SETVIEW(DeinString);


Mit SETVIEW wird nur selten gearbeitet, z.B. dann wenn man sich den String (aus GETVIEW) irgendwo in einem Report o.ä. anzeigen lassen möchte.
Und ein Vorteil, den ich aber noch nie genutzt habe: Der String wird unabhängig von den verwendeten Tabellen ausgegeben.
- Wenn Rec1 auf Tabelle1 und Rec2 auf Tabelle2 zeigt, führt Rec2.COPY(Rec1) zu einem Fehler.
- SETVIEW dagegen funktioniert, solange nur die gleichnamigen Schlüssel und Felder in beiden Tabellen existieren.

Eine andere Anwendungsmöglichkeit fällt mir ad hoc nicht ein, aber dies kann jemand anderes dann noch ergänzen ...
Nur wie die Onlinehilfe schon sagte, das Ergebnis eines GETVIEWs ist genau das, was du z.B. in der Form-Eigenschaft SourceTableView u.a. siehst., z.B. hier bei der Auftragsmaske:
Code:
WHERE(Document Type=FILTER(Order))

(hier sieht man noch einmal ganz schön, dass der Tabellenname keine Rolle spielt)

Und warum arbeitet das Setview trotzdem nicht multilingual?

Das frag mal die Dänen, die es mal vor Urzeiten verzapft haben ;-)

Re: [gelöst] Frage zum Setview und Sprachen

25. November 2008 14:41

Achtung:

In Bezug auf multilanguage immer GetView(FALSE) aufrufen.

Dann ist es kein Problem.



Gruss

Re: [gelöst] Frage zum Setview und Sprachen

25. November 2008 14:53

martinst hat geschrieben:In Bezug auf multilanguage immer GetView(FALSE) aufrufen.


Stimmt ... Falls man SETVIEW danach verwenden sollte, um Filter an unterschiedliche Tabellen zu überreichen, nützt es nun nichts mehr, wenn die Feldcaptions identisch sind - dann müsste die ID der Felder identisch sein, ganz gleich, wie sie heißen ...
Aber das nur zur Ergänzung :-)

Re: [gelöst] Frage zum Setview und Sprachen

25. November 2008 14:53

martinst hat geschrieben:In Bezug auf multilanguage immer GetView(FALSE) aufrufen.


Stimmt ... Falls man SETVIEW danach verwenden sollte, um Filter an unterschiedliche Tabellen zu überreichen, nützt es nun nichts mehr, wenn die Feldcaptions identisch sind - dann müsste die ID der Felder identisch sein, ganz gleich, wie sie heißen ...
Aber das nur zur Ergänzung :-)