Letzte version im Archiv

8. Dezember 2009 17:51

Hallo,

Ich habe eine Mainform & eine Subform erstellt:
die mainfrom ist die Customer table.
die Subform zeigt aller Archivierten Aufträge & Angebote zu dem Kunden.
jetzt möchte nur die letzte Archivierte Verison anzeigen lassen.
zuerst habe versucht die Letzte Arch.version über Flowfield zu erzeugen (wie hier beschrieben ist: http://www.msdynamics.de/viewtopic.php?f=7&t=1864)
das problem bekam ich später nachdem ich versucht habe ,für die neuen Felder einen neuen Key anzulegen, dann sagt mir navision dass ein Flowfiled nicht teil eines Schlüssel sein kann.

wie würdet ihr sowas lösen ohne das die performance darunter leidet?

danke im Voraus.

Re: Letzte version im Archiv

8. Dezember 2009 17:55

So ins Blaue hinein: Subform mit einem temporären Recordset füllen.
Zuletzt geändert von McClane am 8. Dezember 2009 18:08, insgesamt 1-mal geändert.

Re: Letzte version im Archiv

8. Dezember 2009 18:00

hallo,

geht es vielleicht einfacher.
mit recordset kenne ich mich gar nicht aus... :roll:

Re: Letzte version im Archiv

8. Dezember 2009 18:12

Hmm :roll: ... alle älteren archivierten Versionen vorher löschen? :mrgreen:

Man könnte noch die Daten des letzten Belegs an die Subform geben und alle anderen da weg filtern.

Vielleicht war Recordset eben auch nur blöd ausgedrückt; gemeint war eine temporäre Tabelle, in der nur dein aktueller Beleg drin steht.

Re: Letzte version im Archiv

8. Dezember 2009 18:17

Was McClane meint, ist das du eine Tabelle als Variable temporär deklarierst und dieses mit daten füllst und entsprechend sortierst.
Wir nutzen dieses Prinzip oft, um Daten für Reports aufzubereiten, ich könnte aber vermuten das es bei vielen Datensätzen in die "Knie" gehen wird (wäre aber einen Versuch wert)

Alternativ (ich vermute das diese schneller sein wird) könntest du der Archivtabelle ein zusätzliche Felder anfügen (+ Sortierschlüssel) vom Typ Integer mit Namen "LFD." und das Feld Customer.No.
Auf dem OnInstert-Trigger die LFD automatisch hochzählen und die Cust.-No füllen.

Da die Tabelle bereits Daten enthält, einmalig per Report oder so durchlaufen und durchnummerieren (Hierbei wäre zu beachten, wann welcher Beleg gebucht wurde!). Nun hat die Tabelle einen eindeutigen Sortierschlüssel.

Nun kannst je Customer (schnell) Filtern und den letzten DS aufrufen.

Re: Letzte version im Archiv

8. Dezember 2009 18:27

mikka hat geschrieben:Alternativ (ich vermute das diese schneller sein wird) könntest du der Archivtabelle ein zusätzliche Felder anfügen (+ Sortierschlüssel) vom Typ Integer mit Namen "LFD." und das Feld Customer.No.
Auf dem OnInstert-Trigger die LFD automatisch hochzählen und die Cust.-No füllen.

Da die Tabelle bereits Daten enthält, einmalig per Report oder so durchlaufen und durchnummerieren (Hierbei wäre zu beachten, wann welcher Beleg gebucht wurde!). Nun hat die Tabelle einen eindeutigen Sortierschlüssel.

Ist das nicht mit Kanonen auf Spatzen schießen? Es soll doch nur ein Beleg angezeigt werden, dessen Daten über Flowfield schon bekannt sind (wenn ich nicht mal wieder etwas überlesen habe :roll: ).

Re: Letzte version im Archiv

8. Dezember 2009 23:30

Kanonen?
Naja, eine Bazooka ist es schon :lol:

Aber im ersten Posting war die Frage gestellt worden, wie soetwas performand bzw. ohne das die performance darunter leidet gelöst werden könnte.
Und eine Tabelle mit neuen Feldern und passenden Key ausstatten ist schnell (sofern man es nicht übertreibt mit Keys uns Feldern!)

Ich denke wenn je Debitor die Temp. Tabelle neu berechnet werden must, leidet der Server darunter und wenn die gesammte Tabelle beim öffnen erst berechnet werden muß, dann kann es sein, das es dauert bis die Daten da sind.
Sollte es sich um wenig Datensätze handel z.B. weniger 10.000 könnte Variante A. eine Lösung sein.

Re: Letzte version im Archiv

9. Dezember 2009 09:34

Jetzt habe ich immerhin gefunden, was ich überlesen habe :oops: :wink:

Ich ziehe meinen Vorschlag also zurück, und würde stattdessen während des Archivierens an den neuesten Datensatz ein Kennzeichen hängen.