[Gelöst]Dataport - Export -> zu viele leere Zeilen

8. April 2008 12:09

Hallo zusammen,

wir haben einen Dataport bei uns im System, der aus mehreren Tabellen Daten exportiert. Der Dataport hat 6 DataItems, dabei sind drei eingerückt (also werden in einer Schleife durch das darüber liegen DataItem durchlaufen).

In den OnBeforeExportRecord's einiger DataItems werden noch Prüfungen gemacht, und unter Umständen dann auch ein CurrDataport.SKIP;

Oft stehen in den Tabellen für die gefilterten Sachen auch einfach keine Daten drin.

Mein Problem ist jetzt, dass in der Export-Datei sehr viele leere Zeilen drin sind. Stellenweise so viel das man wenn man die Datei öffnet oben nur den Kopfsatz sieht und dann lange nichts, man muss dann scrollen bis man was sieht. :-( Und unsere User haben sich dann gemeldet und behauptet, dass der Dataport nicht funktioniert.

Vielleicht noch zu den Properties des Dataports:
RecordSeparator -> <NewLine>
DataItemSeparator -> <None>

Ich arbeite in diesem Fall mit einem Navision, dass technisch auf Version 5 ist und unten drunter liegt ein SQL Server 2005.

Hat jemand eine Idee wie ich die leeren Zeilen weg bekomme?
Zuletzt geändert von sas_fisch am 8. April 2008 14:33, insgesamt 1-mal geändert.

8. April 2008 12:32

Hallo!

Eine Sache verstehe ich nicht. Was hast du denn in der Dataport-Eigenschaft FileFormat stehen?

Gruß, Marc

8. April 2008 12:34

In dem Property FileFormat steht noch der Default also <Variable>

8. April 2008 12:36

Noch eine Frage ;-) : Nutzt du den 5er-Client?

8. April 2008 12:37

Ja wir sind technisch auf 5.

8. April 2008 12:38

Dann verstehe ich nicht wie du eingerückte DataItems nutzen kannst. Hier zu müsste man das FileFormat doch auf UPXML stellen und das gibt es doch in der 5er-Version doch gar nicht mehr...
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

8. April 2008 13:19

Sehr seltsam. Aber schau mal im Screenshot, die sind wirklich eingerückt.

Wenn ich aber jetzt zum Beispiel den letzten DataItem einrücken will, dann bekomme ich beim Abspeichern die gleiche Fehlermeldung wie Du.

Vielleicht hat das was damit zu tun, dass es ursprünglich 3.60 Objekte waren.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

8. April 2008 13:22

Es liegt scheinbar daran, dass das letzte DataItem nicht eingerückt sein darf. Vor dem letzten DataItem kann ich noch jede Menge eingerückte einfügen.

8. April 2008 13:24

Gibts ja nicht. Wenn ich noch ein DataItem am Ende hinzufüge, welches nicht eingerückt ist, dann bekomme ich keine Fehlermeldung. Cool, aber verstehen tue ich das noch nicht... :-(

8. April 2008 13:41

Um jetzt aber mal dein Problem nachvollziehen zu können, habe ich mir auch einen Dataport mit zwei DataItems (das 2. ist eingerückt) angelegt. Zusätzlich am Ende noch ein Integer-DateItem um das Probelm von oben zu beseitigen. Auch habe ich deine Dataport-Eigenschaften (Record-Separator und DataItem-Separator) übernommen.

Jetzt habe ich das Problem, dass die 1. Zeile vom 2. DataItem in die Zeile des 1. DataItem geschrieben wird. Hast du das Problem auch? Ich konnte es beseitigen indem ich einen Zeilenwechsel über die "Dataport Fields" direkt gesetzt habe.

Gruß, Marc

8. April 2008 13:48

Oh ja das hab ich auch. Ist mir nur nicht aufgefallen, weil gleich nach dem Kopf (also der ersten Zeile) erst Mal viele Leerzeilen kommen.

Mein Problem ist halt, dass die eingerückten DataItems zwar immer durchlaufen werden, aber manchmal halt keinen Daten zum ausgegeben gefunden werden. Trotzdem wird scheinbar am Ende des DataItems eine Leerzeile ausgegeben. Somit habe ich manchmal eine Kopfzeilen, dann unheimlich viele Leerzeichen, und dann endlich mal einen echte Satz an Daten...

8. April 2008 13:59

Vielleicht ist das so ein Problem wie bei den Reports. Wenn dort per SKIP Sections ausgelassen werden, reserviert Navision auch den Platz.

Eventuell könntest du schon im Vorfeld bei dem übergeordneten DataItem prüfen, ob nachfolgend noch Daten exportiert werden müssen und dann diesen übergeordneten DataItem skippen und nicht erst die nachfolgenden. Aber ist nur so eine Idee.

Bezüglich des Problems mit dem fehlenden Zeilenwechsel: Ich habe mir eine globale Textvariable (Länge 2) angelegt. Im Dataport-Trigger OnPreDataport folgendes:

Code:
Return[1]:=13;
Return[2]:=10;


Return ist die genannte neue Variable. Diese Variable habe ich dann in den Dataport Fields ganz am Ende hinzugefügt.

Gruß, Marc

8. April 2008 14:01

Dass es in die gleiche Zeile rutscht, liegt daran, dass ihr DataItemSeparator auf <none> stehen habt, normalerweise steht da <newline><newline> also zwei zeilenvorschübe. dadurch gibts eine Leerzeile zwischen den Dataitems

8. April 2008 14:09

Auch mit einem <NewLine> wird in der ersten exportierten Zeile das erste und zweite DataItem zusammengefasst. Weshalb ich dann den "Umweg" über die globale Variable gegangen bin.

8. April 2008 14:11

Ich werd das mit dem Variablen mal ausprobieren. Vielleicht kann ich auch beide Properties auf <None> stellen und immer nur dann einen Umbruch hinzufügen, wenn ich auch wirklich einen Datensatz in die Datei schreibe. Ich meld, mich ob es geklappt hat...

8. April 2008 14:11

Vorab schon mal DANKE!

8. April 2008 14:35

Also das hat prima geklappt. Ich hab jetzt wirklich beide Properties auf <None> gesetzt und das mit der Variable an das Ende der Dataport Fields gemacht. Und nun hab ich in jeder Zeile einen Datensatz stehen ohne die tausend Leerzeilen. Vielen Dank!