StyleSheet und "wenn.. dann" Regel in Word

27. November 2009 12:04

Ich habe noch ein Problem mit einem StyleSheet. Ich habe Felder, die in NAV leer sein können. Bei der Ausgabe im Word-Dokument möchte ich in so einem Fall "unbek." stehen haben.

Meine Regel in Word sieht so aus:
Code:
{if {Mergefield Item_Alcohol }<> "" "," "unbek.,"}


alternativ habe ich auch schon probiert
Code:
{if {Mergefield Item_Alcohol }= "" "unbek.," "," }


Als Ausgabe erhalte ich aber immer "unbek.," mit angedruckt, egal ob das Feld leer ist oder nicht. Was überseh ich denn hier?

Volker

Re: StyleSheet und "wenn.. dann" Regel in Word

27. November 2009 12:12

Wenn die Syntax nach <> wirklich ohne Trennzeichen funktionert, dann geht es vielleicht so (ich habe nur ein Leerzeichen hinzugefügt):
Code:
{if {Mergefield Item_Alcohol }<> " " "," "unbek.,"}

Re: StyleSheet und "wenn.. dann" Regel in Word

27. November 2009 12:19

Leider nein. Die Syntax sollte richtig sein, würde schließlich von Word als Regel selber erstellt.

Wie "leer" sind denn leere Felder in NAV? " " würde ja bedeuten, dass eine leeres Feld ein Leerzeichen enthält, aber NAV entfernt doch führende Leerzeichen.

Re: StyleSheet und "wenn.. dann" Regel in Word

27. November 2009 12:23

vsnase hat geschrieben:Wie "leer" sind denn leere Felder in NAV? " " würde ja bedeuten, dass eine leeres Feld ein Leerzeichen enthält, aber NAV entfernt doch führende Leerzeichen.


Tatsache ist, dass NAV keine wirklich leeren Felder (in SQL: NULL) anlegt. Zahlenfelder enthalten eine 0, Textfelder einen Leerstring. Deswegen hätte es funktionieren können.

Re: StyleSheet und "wenn.. dann" Regel in Word

27. November 2009 12:52

Das kommt mir schon wieder bekannt vor :-)

Ich habe das auch nicht hinbekommen. Möglicherweise liegt das daran, dass die Mergefields im Worddokument nicht wie im üblichen Fall (Serienbrief und externe Datenquelle), sondern mehr für Navision verwendet werden, damit er weiß, welcher Wert im Dokument wo hin kommen soll (?).

Welche Version des Tools benutzt du? Noch die originale1.1? Dann könntest du dir mal das Tool von Fido ansehen (viewtopic.php?f=20&t=6893, oder Fido mal fragen, ob er Hilfe weiß). Da hat er eine Option erweitert, die den anstelle des Werts Null einen leeren String übergibt (CoU682). Da kannst du dir so ähnlich erweitern, dass bei deinem bestimmten Feld in derundder Tabelle anstelle des leeren Strings "unbek." übergeben wird. Etwas eleganter wird es, wenn in den Stylesheet-Feldern generell mit zwei neuen Feldern so eine Möglichkeit einrichtet: Wenn Wert=Sowieso dann ersetze durch irgendwas anderes. So habe ich das auch gemacht.

Macht keinen Spaß, aber klappt :-?

Ob das Stylesheet-Tool 2.0 da besser ist, kann ich nicht sagen, da die meisten Änderungen den RTC betreffen. Auf mich hat es aber den Eindruck gemacht, als hätte man hauptsächlich dafür gesorgt, dass sich die NAV2009-Anwender nicht ausgeschlossen fühlen und sich ebenfalls über das Stylesheet-Tool ärgern können :wink:

Re: StyleSheet und "wenn.. dann" Regel in Word

27. November 2009 13:00

Dein Problem ist mit etwas XSL sicher kein großes mehr.

Grundsätzlich sollte das Feld ungefähr in der folgenden Weise in Word ausgegeben werden:
Code:
<xsl:value-of select="//<irgendein-XPath-Konstrukt>/<Datenfeld>" />


Da kann man etwa folgendes draus machen:
Code:
<xsl:if test="//<irgendein-XPath-Konstrukt>/<Datenfeld> = ''">
    <xsl:text>unbek.</xsl:text>
</xsl:if>
<xsl:value-of select="//<irgendein-XPath-Konstrukt>/<Datenfeld>" />


Gib mir mal dein Stylesheet und die Info, um welches Datenfeld es geht, dann kann ich dir sicher noch genauer helfen.

Beste Grüße
Falk

Re: StyleSheet und "wenn.. dann" Regel in Word

27. November 2009 13:19

Irgendwie geht das nicht mit den Regeln. Ich habe jetzt mal auf den tatsächlichen Feldinhalt prügen lassen (42%) aer das wird trotzdem nix.

Wenn ich das recht verstehe, dann muss ich das manuell in der xml.Datei ändern. Unten mal die von Word erstellte Version.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.