Tabelle aufteilen

19. April 2007 17:08

Hi Ihr.

Die "Sales Header" Tabelle (T36) aus einem unserer Projekte platzt langsam aus allen Nähten:

[img]http://www.staehelicars.ch/images/stbo/platzt.PNG[/img]

Nun habe ich den Auftrag bekommen zu schätzen wie lange es dauern würde, Navision so umzubiegen, dass alles mit einer zweiten Sales Header Tabelle weiterfunktioniert, in die die weiteren Felder ausgelagert werden.

Hat jemand von euch schon mal so etwas gemacht und kann mir Tipps geben für meine Aufwandschätzung und die Ausführung?

zu Beachten (Vorgabe vom Projektleiter):
  • Der Impact in den Standard darf nirgends mehr als zwei Zeilen Code sein. Alle Funktionen müssen in einer eigenen CodeUnit erstellt werden
  • Es muss auch eine Update-Routine erstellt werden, mit der bestehende
    Aufträge auf die neue Struktur gesplittet werden können, also Records
    in der neuen Tabelle anlegen sowie Daten übertragen, und aus der alten
    Tabelle entfernen, damit die Felder gelöscht werden können.
  • Daran denken, dass auch ein Eingriff in der Buchungsroutine nötig ist, um
    beim Buchungsvorgang die Daten in die gebuchten Belege mitzunehmen

19. April 2007 17:26

zuerst mal musst du sehen, welche Felder den Overflow verursachen.
Wenn es neue Felder sind, hält sich der Änderungsaufwand in Grenzen, da alles weitere diese Felder betreffende ja eh noch programmiert werden muss.
zum anderen musst Du die Forms ändern, die neuen Felder entweder in eine Subform einbauen und diese auf einer eigenen Registerkarte anzeigen, oder wenn es mit vorhandenen Feldern gemixt werden muss, muss im OnAfterGetRecord-Trigger programmiert werden, dass der zugehörige Datensatz geholt bzw neu angelegt wird.
Subform hat den Vorteil, dass du dich nicht um das schreiben der Daten in die Zusatztabelle kümmern musst.

23. April 2007 16:41

Der Aufwand ist sicherlich sehr hoch, da wegen der Belegkopierfunktionen etliche Header- und Archiv Tabellen gedoppelt werden müssten. Beim SQL Server beträgt die max. Datensatzlänge ca. 8000 Bytes. Eine Umstellung auf SQL wäre eventuell mit weniger Aufwand verbunden.

24. April 2007 10:54

Hallo Kai

Vielen Dank für deine Antwort.

Komischerweise benutzen wir schon SQL als DB-Server. Muss man für die volle Funktionalität noch irgendwo irgendwas aktivieren?

Navision-Version: MBS Dynamics NAV 4.0 SP3

Gruss
Bo

25. April 2007 11:53

Die 4000 Byte Grenze existiert auch für den Native Server seit 2.60, vorher war sie bei 2000 Bytes. Weshalb die erweiterten SQL-Möglichkeiten hier bislang nicht genutzt werden, kann ich dir leider nicht sagen.