27. Mai 2020 14:09
Hallo Community,
ich weiß leider nicht, wie ich die erste Zeile beim Import skippe kann.
Ich habe 2 DataItems und zwar Integer (für die Überschriften) und GLAccount (Da sind die Datensätze).
Der Export funktioniert reibungslos, aber der Import nicht. Diese Fehlermeldung taucht auf:
2.jpg
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von CronusAG am 2. Juni 2020 09:03, insgesamt 1-mal geändert.
27. Mai 2020 14:41
Hallo,
du könntest es mit einem CurrDataPort.Skip im OnBeforeImport- Trigger versuchen.
Gruß Fiddi
27. Mai 2020 14:48
Habe ich bereits. Er zeigt die gleiche Fehlermeldung, egal wo ich CurrDataport.Skip eintrage.
27. Mai 2020 14:52
Ja genau. Aber dieses mal sind es zwei. Ich brauch das eine, um damit die Überschriften zu erzeugen.
27. Mai 2020 14:56
Hallo,
hast du vergessen Felder für den Import anzugeben?
Gruß Fiddi
27. Mai 2020 14:56
Das geht auch mit mehreren Dataitems. Der Code muss nur beim ersten stehen.
27. Mai 2020 14:58
Es ist ein Objekt, welches Export und Import ausführt. Ohne das DataItem Integer funktioniert das Objekt fehlerfrei.
27. Mai 2020 15:03
678.jpg
Es funktioniert immer noch nicht. So sieht die Export-Datei aus:
hi.jpg
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
27. Mai 2020 15:16
Wenn da nur die Überschriften drin sind, kann man gleich abbrechen, also vor dem ersten Dataitem im OnPreDataItem
- Code:
IF CurrDataport.IMPORT THEN
CurrDataport.BREAK;
oder anders aufbauen, ohne Dataportfields und die Daten manuell zusammenstellen und beim Import die erste Zeile in eine Dummyvariable einlesen so wie hier:
Beginners Tip: Creating and Handling Headers in Dataports
27. Mai 2020 15:27
Was meinst du mit Dummy?
27. Mai 2020 16:10
Der Inhalt der ersten Zeile wird in eine Textvariable eingelesen, die dann nicht weiter ausgewertet wird.
Siehe Codebeispiel im Artikel:
- Code:
CurrFile.READ(Dummy); // read line into text variable
27. Mai 2020 16:19
Hallo,
was machen die beiden zusätzlichen Felder in der Überschrift?
Werden die benötigt? Falls nein, weg damit.
Falls Ja, solltest du diese auch importieren,
Dann solltest du für jedes zu importierende Feld eine ausreichend große Text Variable angeben.
Im OnBeforeImport- Trigger
Wenn du in der ersten Zeile (Zeilenzähler oder Boolean einbauen) bist, machst zu einen Skip, ansonsten weißt du die importierten Texte per EVALUATE den eigentlichen Variablen zu.
Beim Export im OnBeforeExport, aus den internen Variablen, den Textvariablen per FORMAT die Werte zuweisen.
Gruß Fiddi
27. Mai 2020 16:23
Er nimmt jetzt beim Importieren nur die erste Zeile mit ins Record, aber nicht die weiteren.
27. Mai 2020 16:32
Hallo,
den Skip oder Break (bitte noch mal probieren. Hab schon lange keinen Dataport mehr programmiert
) sollte er nur machen, wenn es die erste Zeile ist.
Gruß Fiddi
27. Mai 2020 16:41
1.jpg
Das ist der Übeltäter.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
27. Mai 2020 16:44
Hallo
was steht denn zwischen den Feldern eines Datensatzes? Doch wahrscheinlich kein <NewLine> sondern <TAB> oder etwas ähnliches.
Gruß Fiddi
27. Mai 2020 16:51
Tab damit Excel es in die Spalten hinzufügt.
27. Mai 2020 17:00
Eine NewLine als DataItemSeparator sollte kein Problem sein. Vorgabe ist ja 2 x Newline (also zusätzlich eine Leerzeile).
Er nimmt jetzt beim Importieren nur die erste Zeile mit ins Record, aber nicht die weiteren.
Da das erste DataItem ja nur eine Zeile hat, meinst du damit das zweite DataItem?
27. Mai 2020 17:05
Eine NewLine als DataItemSeparator sollte kein Problem sein. Vorgabe ist ja 2 x Newline (also zusätzlich eine Leerzeile).
Du hast recht. Ich meinte eigentlich den FieldSeparator
(ich hab das son lange nicht mehr gemacht).
Wenn du einzelne Felder importieren willst, dann solltest du in diesem Fall aber <TAB> als FieldSeparator benutzen.
Gruß Fiddi
29. Mai 2020 15:47
ich habe ein neues Problem und zwar die Überschriften sind länger als 250 Zeichen. Hat einer eine Idee?
- Code:
IF NOT CurrDataport.IMPORT THEN BEGIN
CurrFile.TEXTMODE(TRUE);
CurrFile.WRITE(
GLAccount.FIELDCAPTION("No.") +
FORMAT(Tab) +
...
GLAccount.FIELDCAPTION(Balance));
CurrFile.TEXTMODE(FALSE);
END ELSE BEGIN
CurrFile.TEXTMODE(TRUE);
CurrFile.READ(Dummy);
CurrFile.TEXTMODE(FALSE);
END;
2. Juni 2020 09:03
Mit der Funktion SEEK hat es funktioniert.
2. Juni 2020 09:07
Ist die Technik da auch noch von 4.x? Textvariablen können bis schon seit vielen Jahren 1024 Zeichen enthalten, ab NAV 2013 sogar unbegrenzt (=2GB).
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.