[gelöst] Excelexport mit 'Senden an'

28. Januar 2009 11:51

Hallo,

ich habe da gerade ein kleines Problem mit dem 'Senden An'- Button in NAV 5.0 Sp1.
Wenn ich in der Datenbank z.B. in gebuchte Rechnungen gehe, und sage dort bei einer Rechnung 'Senden an Excel', habe ich ein merkwürdiges Phänomen.

Stylesheets aus der Addon-DB: Datumsfelder werden korrekt übertragen, Dezimalfelder werden als Text übertragen und enthalten einen '.' als Dezimaltrenner (mit Ihnen kann nicht gerechnet werden)

Stylesheets aus der Standard DE-Cronus: Datumsfelder werden in eine merkwürdige Dezimalzahl umgewandelt, Dezimalzahlen enthalten jetzt zwar ein ',' als Dezimaltrenner, die Beträge sind aber mit 100 multipliziert.

Kann jemand dieses Beobachtungen nachvollziehen, und hat evtl. schon eine Lösung dafür?

Gruß, Fiddi
Zuletzt geändert von fiddi am 29. Januar 2009 11:46, insgesamt 1-mal geändert.

Re: Excelexport mit 'Senden an'

28. Januar 2009 13:46

Such mal im Stylesheet nach folgenden Zeilen (Wenn Orginal, dann ab Zeile 260):

Code:
         <Data>
            <xsl:choose>
               <xsl:when test="string(number(translate(@value,',.','11')))!='NaN'">
                  <xsl:choose>
                     <xsl:when test="contains(@value,'..')">
                        <xsl:attribute name="ss:Type">String</xsl:attribute>
                        <xsl:value-of select="@value"/>
                     </xsl:when>
                     ...
                  </xsl:choose>
               </xsl:when>
               <xsl:otherwise>
                  <xsl:attribute name="ss:Type">String</xsl:attribute>
                  <xsl:value-of select="@value"/>
               </xsl:otherwise>
            </xsl:choose>
         </Data>



und ergänze die folgenden vier Zeilen gleich unter dem ersten <xsl:choose> (Zeile 261):

Code:
               <xsl:when test="string(number(translate(@value,'.','11')))!='NaN'">
                  <xsl:attribute name="ss:Type">String</xsl:attribute>
                  <xsl:value-of select="@value"/>
               </xsl:when>


Das Stylesheet schneidet Kommas und Punkte aus einem Wert und prüft, ob es dann eine Zahl (!=NaN) ist. Das trifft natürlich auch auf Datumswerte zu. Also prüfen die vier Zeilen erstmal, ob der Wert um Punkte bereinigt eine Zahl ist (ein Datum oder Integer) und belässt den Wert wie er ist als String.

Wenn ich noch etwas Zeit finde, werde ich noch zwischen Integer und Datum unterscheiden und Integer wieder als Number ausgeben lassen. Aber fürs erste sollte es so funktionieren.

Beste Grüße
Falk

Re: Excelexport mit 'Senden an'

28. Januar 2009 21:34

Hallo fiddi,

du schreibst hier, dass das Demo-Stylesheet Zahlen mit Dezimal-Punkt ausgibt. Das ist bei mir nicht der Fall. Ich schlage vor, dass du das Daten-XML-Dokument einfach mal wegspeicherst und hier postest. Dazu musst du einfach nur in der Codeunit 403 - LaunchApp vor dem EXIT(TRUE) ein
Code:
DataXML.save('<Pfad>\<Dateiname>');
einfügen.

Beste Grüße
Falk

Re: Excelexport mit 'Senden an'

29. Januar 2009 09:22

Hallo FAFL,

ich hab jetzt mal die XML-Dateien aus den Standard-DBs erzeugt, und hänge die XSLT-Dateien nochmal mit an.

Nochmal zur Verdeutlichung: Es gibt von NAV für Deutschland zwei verschiedene Datenbanken. Die normale DB, die bei der Client-Installation dabei ist, und die Addon-DB für die Leute die mit Zahlungsverkehr und/oder Kostenrechnung arbeiten. Diese DBs enthalten unterschiedliche XSLTs für die Standard Excel-Konvertierung.

  • Standard-DB liefert ein grausiges Datum und Dezimalwerte um den Faktor 100 multipliziert (siehe Anhang Standard.xml).
  • Die Addon-DB liefert ein korrektes Datum und korrekte Dezimalwerte leider mit einem '.' als Dezimaltrenner, mit dem Excel nicht rechnen kann.(siehe Anhang Addon.xml)

Wenn man sich die XSLTs anschaut, versucht die Standard.xslt mit merkwürdigen Operationen numerische Werte mit unbrauchbarem Ergebnis zu ermitteln. Die Addon.xslt kennt schon einen subtype, leider scheint der NAV-Client davon noch nichts gehört zu haben.

Gruß, Fiddi

P.S.: Deine Anpassungen bewirken, dass die XML-Datei genauso aussieht, wie bei der Addon.xml.
Die Tests habe ich mit einem Client 5.0 SP1 Build 27191 durchgeführt.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Excelexport mit 'Senden an'

29. Januar 2009 10:46

Hallo fiddi,

dein Dateianhang enthält zwar die Stylesheets und die resultierenden XML-Dokumente, aber nicht das Quelldokument. Da steht aber in einem Feld namens DecimalSeparator, ob Punkt oder Komma als Dezimaltrennzeichen verwendet werden soll.

Auch sollte im Quelldokument der Subtype als Attribut vorhanden sein. Da ich aber nicht weiß, welche Subtypes Navision exportiert, wäre es gut, wenn du dieses Quelldokument (siehe "DataXML.save") bereitstellst, dann kommen wir sicher ein gutes Stück weiter.

Beste Grüße
Falk

Re: Excelexport mit 'Senden an'

29. Januar 2009 11:45

Hallo FAFL,

entschuldige, ich hatte dich da falsch verstanden. Aber danke für den Tip. Ich hab mir jetzt mal die XML-Datei nach deinem Verfahren ausgeben lassen, und ich möchte am liebsten irgendwo hinfahren und kräftig wo draufhauen :twisted: .
Die vom NAV-Client erzeugte XML-Datei enthält sehr wohl einen Datentyp nur heißt der nicht 'subtype', wie im Stylesheet der Addon, sondern 'datatype' und der Typ heißt nicht 'number', sondern 'Decimal'. Ändert man das Stylesheet der Addon (siehe Anlage) entsprechend, so kommt auc in Excel was brauchbares an.

Vielen Dank, Fiddi
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: [gelöst] Excelexport mit 'Senden an'

29. Januar 2009 11:54

Jetzt wird es auch bei mir langsam hell.

Ich haba das ganze auf eine 5er-Datenbank ohne SP1 getestet und die gibt weder nen Subtype noch nen Datatype aus. Da war es wirklich noch nötig, aus der Notation der Daten, den Datentyp zu erraten.

Naja, hat der ganze Aufwand wenigstens die Erkenntnis gebracht, dass mit SP1 an wenigstens einer Stelle wirklich was brauchbares ergänzt wurde. :-)

Re: [gelöst] Excelexport mit 'Senden an'

23. Juli 2009 11:56

Hallo,
jetzt muss ich mich hier auch nochmal einhängen, ich habe das selbe Problem, allerdings folgendes Verhalten:

Ich bekomme in einem NAV 5.0SP1 (auf SQL Server 2005) überhaupt keine datatypes mit in das XML exportiert, wie es scheinbar vor SP1 normal war. Wir haben allerdings direkt mit 5.0SP1 gestartet und noch nie eine ältere Version gehabt.

Ich habe, wie vorgeschlagen, mal das rohe XML rausgespeichert und erhalte nur Zeilen folgender Art:

<Control type="TextBox" value="683,20" width="2196" id="1000000002" name="Amount" />
<Control type="TextBox" value="683,20" width="2196" id="1000000004" name="Amount Including VAT" />
...

Mir fehlen hier einfach die datatypes der Felder aus der Tabelle. Daher exportiert NAV mir auch mit der geänderten Stylesheetvorlage keine Zahlen nach Excel.
Habe ich vielleicht doch irgendwelche 5.0 ohne SP1 Dinge in meiner Datenbank? Oder ist das eine Einstellungssache?

Irgendwer eine Idee?
Vielen Dank

Marc

Re: [gelöst] Excelexport mit 'Senden an'

23. Juli 2009 12:00

Hallo Marc,

schau mal welches Build dein Client hat, meiner, mit dem ich das getestet hab, war 27191.


Gruß, Fiddi

Re: [gelöst] Excelexport mit 'Senden an'

23. Juli 2009 12:03

Hmm,
aus der EXE-Datei bekomme ich eine Buildnummer 26084. Ansonsten habe ich in Navision selber keine Anzeige der Buildnummer, oder?
Nur woher bekomme ich denn Client-Updates? Habe nur Customersource und die Entwicklerlizenz für Kunden.

Grüße
Marc

Re: [gelöst] Excelexport mit 'Senden an'

23. Juli 2009 12:08

Hallo Marc,

da wirst du dich wohl an einen MS-Partner wenden müssen, es sei denn du kommst an die KB-Artikel, wie sie hier (siehe 5.0 Sp1) aufgeführt sind.

Gruß, Fiddi

Re: [gelöst] Excelexport mit 'Senden an'

27. Juli 2009 13:07

Hi Fiddi,
ich habe heute das Update von unserem NSC bekommen und jetzt funktioniert das ;)

Vielen Dank nochmal!

Grüße
Marc

Re: [gelöst] Excelexport mit 'Senden an'

28. Januar 2010 12:19

MarcB hat geschrieben:Hi Fiddi,
ich habe heute das Update von unserem NSC bekommen und jetzt funktioniert das ;)

Vielen Dank nochmal!

Grüße
Marc



Hallo Marc,

Welches Update war denn das genau???

Re: [gelöst] Excelexport mit 'Senden an'

28. Januar 2010 12:25

Hallo,
das war das "Update 1 für NAV 5.0 Servicepack 1" Paket.

Viele Grüße
Marc