Redundanzen haben den Vorteil, daß Du dir Lookups sparst. Nachteil ist ganz klar, daß man bei Änderungen in den Stammdaten dafür sorgen muß, daß diese auch in die zugehörigen Dokumente übertragen werden.
Das kann man allerdings recht einfach, wenn diese als Antwortdokumente angelegt sind. Dann kann man bei Änderung im Hauptdokument direkt alle Antworten updaten (DocCollection bilden und dann mit StampAll die betroffenen Felder schießen).
Ansonsten würde ich eine Subform anlegen und da die benötigten Felder für die Stammdaten reinpacken.
In einem zusätzlichen berechneten Feld holst Du dir per DBLookup die benötigten Werte.
Die anderen berechneten Felder holen sich per @Word aus der Werteliste den jeweils benötigten Wert.
Dafür brauchst Du natürlich irgendeinen Key (Kundennummer oder so was).
Für den DBLookup kannst Du eine gesonderte Ansicht anlegen, sortiert nach dem Key. In der zweiten Spalte werden dann die benötigten Werte als ein Textstring mit Trennzeichen versehen angezeigt (z.B. ~~ als Trennzeichen).
Der DBLookup liefert dann einen String zurück, z.B.
Meyer~~Gerd~~Herr~~etc. pp.
In den einzelnen berechneten Feldern der Subform wird dann der jeweils benötigte String per @Word ermittelt, z.B. für den Vornamen :
@Word(<Ergebnis DBLookup>; "~~"; 2)
Keine Ahnung, ob das State of the Art ist, aber es funktioniert und reduziert die Lookups in der Subform.