Probleme beim Import von Fahrtenbucheinträgen

Einen Fehler in efa2 melden

Moderatoren: nick, smg

Forumsregeln
Beim Melden eines Fehlers, gib bitte die verwendete efa2-Version und Dein Betriebssystem an, sowie eine genaue Beschreibung der Fehlersituation und ggf. der Fehlermeldungen.
Antworten
iww-martin
Beiträge: 266
Registriert: Fr 24. Feb 2012, 15:42
Wohnort: Itzehoe
Kontaktdaten:

Probleme beim Import von Fahrtenbucheinträgen

Beitrag von iww-martin » Di 10. Jul 2012, 22:06

Hallo Nick,

ich habe heute versucht, in efa 2.0.2_03 eine xml-Datei mit Fahrtenbucheinträgen zu importieren. Es waren alles neue Einträge, die mit neuer laufender Nummer am Ende des Fahrtenbuches hinzugefügt werden sollen. Als Vorlage habe ich eine zuvor exportierte xml-Datei genommen.

Leider hat der Import nicht funktioniert. Das Ergebnis sind bestenfalls neue Einträge, die nur eine (neue) laufende Nummer haben. Alle anderen Felder bleiben leer...

Es sind 57 zu importierenden Einträge. Am Ende des Imports meldet efa den Import von 59 Datensätzen.

Ich schicke Dir als Testbeispiel die von mir verwendete xml-Datei für den Import an help (at) efa (punkt) nmichael (punkt) de. Vielleicht habe ich etwas übersehen...

Viele Grüße
Martin

Itzehoer Wasser-Wanderer e.V.

nick
Beiträge: 1300
Registriert: Sa 10. Jul 2010, 11:45

Re: Probleme beim Import von Fahrtenbucheinträgen

Beitrag von nick » Mi 11. Jul 2012, 06:59

Hallo Martin,

ich vermute, daß du die von efa beim Export erzeugte xml-Datei mit einem Editor bearbeitet hast, bevor du sie wieder versucht hast zu importieren? Welchen Editor hast du benutzt?

Als erste zwei Zeichen (noch vor dem <?xml) enthält die Datei die Bytes 0xfeff und ist damit keine valide XML-Datei. Diese Zeichen sind definitiv nicht von efa generiert worden. Dies führt dazu, daß efa die Datei nicht als XML-Datei erkennt, sondern als CSV-Datei versucht zu importieren. Daher selektiert efa auch bei Auswahl der Datei die Option CSV-Datei (efa erkennt automatisch, welchen Typ die Datei hat, die du versuchst zu importieren). Und daher bekommst du beim Import auch als die Fehleraussschrift WARNING: Value '<export type=text>' for Field '��<?xml version=1.0 encoding=UTF-8?>...

Ich habe versucht, efa toleranter zu gestalten und diese Zeichen am Anfang zuzulassen, aber dann spuckt der XML-Parser von Java, der damit nicht klarkommt.

Leider werden diese beiden Bytes auch in meinem Texteditor nicht dargestellt, so daß die Datei (wenn ich sie öffne) völlig ok aussieht. Unter Linux habe ich diese Bytes mit dem Tool od sichtbar gemacht:

Code: Alles auswählen

$ od -x -N 10 efa_fahrtenbuch_import.xml
0000000 feff 0065 0078 0070 006f
0000012
Du könntest auch einen Hex-Editor benutzen.

Nachdem ich den Inhalt der Datei über die Zwischenablage in eine neue Datei kopiert und diese im Texteditor gespeichert hatte, waren die Zeichen weg (da der Texteditor sie nicht dargestellt hat, waren sie auch nicht in der Zwischenablage). Danach ließ sich deine Datei einwandfrei importieren. Alternativ könntest du auch versuchen, diese Bytes mit einem Hexeditor abzuschneiden.

Gruß,
Nicolas

iww-martin
Beiträge: 266
Registriert: Fr 24. Feb 2012, 15:42
Wohnort: Itzehoe
Kontaktdaten:

Re: Probleme beim Import von Fahrtenbucheinträgen

Beitrag von iww-martin » Mi 11. Jul 2012, 08:02

Hallo Nick,

vielen Dank für die schnelle Antwort!

Ich habe die xml-Datei mit einem Makro aus einer Excel-Datei erzeugt. Das Ergebnis habe ich mit Notepad angesehen...
Das ist nicht die erste xml-Datei, die ich auf diese Weise erstelle. Ich bin mal gespannt, wo die beiden überflüssigen Zeichen herkommen.

Viele Grüße
Martin

Itzehoer Wasser-Wanderer e.V.

iww-martin
Beiträge: 266
Registriert: Fr 24. Feb 2012, 15:42
Wohnort: Itzehoe
Kontaktdaten:

Re: Probleme beim Import von Fahrtenbucheinträgen

Beitrag von iww-martin » Mi 11. Jul 2012, 09:42

Hallo Nick,

ich habe mir einen Hex-Editor installiert und habe die Ergebnisse aus dem überarbeiteten Excel-Makro geprüft. ...gefunden!

Die Dokumentation zum Erstellen einer Textdatei in Visual Basic benennt als Parameter den Dateinamen und zwei optionale, boolesche Parameter: CreateTextFile(Dateiname[, überschreiben[, Unicode]])
Da können man meinen, um eine Unicode-Datei zu erstellen, sehen die Parameter wie folgt aus: CreateTextFile("efa_import.xml", True, True). Dieser Aufruf erzeugt aber die beiden zusätzlichen Zeichen 0xfeff... :(
Alles andere sieht aus wie gewünscht.

Lässt man den zweiten optionalen Parameter weg, wird mit CreateTextFile("efa_import.xml", True) eine xml-Datei ohne die beiden Zeichen erstellt. So hatte ich das in anderen Projekten für andere xml-Dateien auch gemacht. Keine Ahnung, warum ich es diesmal den zweiten optionalen Parameter verwendet habe.

Das Problem entstand also nicht durch das Öffnen und die Bearbeitung mit dem Editor. Das Übel lag an der Wurzel bei der Dateierstellung...

Ich werde heute abend das Ergebnis in mein efa-Testsystem importieren.

Noch zwei Fragen...
Derzeit gebe ich konstant eine 1 als Bootsvariante an: <BoatVariant>1</BoatVariant>
Kann ich dies Attribut leer lassen oder ganz weglassen und efa ordnet nach dem Import das für das Fahrtdatum gültige Boot bzw. die Bootsvariante über den Bootsnamen zu?

Die als Vorlage exportierte xml-Datei enthält für jeden exportierten Datensatz alle Mannschafts-Attribute (<Cox>, <Crew1>, ..., <Crew24)), die meisten davon sind leer. <BoatCaptain> ist nur enthalten, wenn wir in einem Drachenboot einen Trommler (=Obmann) eingetragen haben. <EndDate> und <Comments> ist nur enthalten, wenn diese Felder ausgefüllt wurden. <SessionGroup> ist für jeden Datensatz leer enthalten. Damit komme ich zur zweiten Frage...

Kann man alle leeren Attribute weglassen oder gibt es Attribute, die in der xml-Struktur für den Import angegeben werden müssen?

Viele Grüße
Martin

Itzehoer Wasser-Wanderer e.V.

iww-martin
Beiträge: 266
Registriert: Fr 24. Feb 2012, 15:42
Wohnort: Itzehoe
Kontaktdaten:

Re: Probleme beim Import von Fahrtenbucheinträgen

Beitrag von iww-martin » Mi 11. Jul 2012, 21:05

Hallo Nick,

es war doch etwas schwieriger als gedacht. Eine korrekte Kodierung als Unicode oder UTF-8 hat mit dem Excel-Makro nicht funktioniert. Jetzt erstelle ich die xml-Datei mit dem Header <?xml version="1.0" encoding="ISO-8859-1"?> und der entsprechenden Zeichenkodierung. Damit hat der Import geklappt.

<BoatVariant> darf nicht leer sein, sonst gibt es eine Fehlermeldung. Ich habe jetzt für alle Datensätze <BoatVariant>1</BoatVariant> verwendet. Problem: ein Datensatz in der Importdatei ist ein Nachtrag, der nach seinem Fahrtdatum (<Date>) zur Bootsvariante 2 gehört. Das habe ich als Administrator im Fahrtenbuchdialog korrigiert. Es wird nicht so häufig vorkommen, da nur zwei unserer etwas mehr als 200 Boote mehr als eine Variante haben.

Die Fahrtart (<SessionType>) kann bei uns "Wanderfahrt", "Vereinsfahrt" oder "Verbandsfahrt" sein. In der Importdatei kommen Datensätze mit "Wanderfahrt" und "Vereinsfahrt" vor (siehe Beispieldatei). Im Fahrtenbuch kommt beim Import aber ausschließlich "Wanderfahrt" an...

Viele Grüße
Martin

Itzehoer Wasser-Wanderer e.V.

nick
Beiträge: 1300
Registriert: Sa 10. Jul 2010, 11:45

Re: Probleme beim Import von Fahrtenbucheinträgen

Beitrag von nick » Do 12. Jul 2012, 08:29

Hallo Martin,

den Fehler beim Import der Fahrtart habe ich in 2.0.2_05 behoben.

Das Problem mit den BootVariant's kann ich nicht ganz nachvollziehen. Könntest du die Fehlermeldung, die du da bekommst, bitte mal im Forum posten? Ich habe zwar auch das "korrigiert" (jeder Fahrtenbucheintrag erhält jetzt die erste Bootsvariante eines Bootes zugewiesen, sofern nichts anderen angegeben ist), aber auch ohne diese "Korrektur" wurden Einträge bei mir korrekt importiert.

Danke & Gruß,
Nicolas

iww-martin
Beiträge: 266
Registriert: Fr 24. Feb 2012, 15:42
Wohnort: Itzehoe
Kontaktdaten:

Re: Probleme beim Import von Fahrtenbucheinträgen

Beitrag von iww-martin » Do 12. Jul 2012, 09:31

Hallo Nick,

ich werde efa 2.0.2_05 installieren und das Verhalten mit und ohne Angabe von <BoatVariant> noch einmal testen...

Ist es aber richtig, bei der Übernahme stets die erste Variante zu nehmen?
Müsste nicht die Variante mit dem zu <Date> passenden Gültigkeitszeitraum genommen werden?

Viele Grüße
Martin

Itzehoer Wasser-Wanderer e.V.

iww-martin
Beiträge: 266
Registriert: Fr 24. Feb 2012, 15:42
Wohnort: Itzehoe
Kontaktdaten:

Re: Probleme beim Import von Fahrtenbucheinträgen

Beitrag von iww-martin » Do 12. Jul 2012, 19:30

Hallo Nick,

ich habe jetzt die Version 2.0.2_05 im Bootshaus installiert und die erste Importdatei wurde erfolgreich verarbeitet. Jetzt wird auch die Fahrtart korrekt übernommen.

Ich habe eben mit der Importdatei auf dem Testsystem noch ein wenig getestet...

Wenn das Attribut <BoatCaptain></BoatCaptain> oder <BoatVariant></BoatVariant> ohne Wert in der Importdatei steht, bricht der Import mit der Fehlermeldung java.lang.NumberFormatException: For input string """ ab.

Der Import klappt, wenn die Attributte nicht angegegben werden.

Das Boot zu jedem Fahrtenbucheintrag gehört zu einer gültigen Variante. Bei einem Update würde für <BoatVariant> mit einem leeren Attribut versucht, die Variante zu löschen. Das sollte nicht möglich sein. Entweder wird ein sinnvoller Wert eingetragen, oder das Attribut wird weggelassen.

Beim <BoatCaptain> kann für ein Drachenboot bei uns ein Trommler (im Standard der "Obmann") angegeben werden, dass muss aber nicht in jedem Fall sein. Bei Kajak und Kanadiern gibt es keinen Trommler und auch im Drachenboot wird dieser Platz nicht immer besetzt: es gibt Strecken (z.B. im Hamburger Stadtgebiet und auf der Schwentine), auf denen nicht getrommelt werden darf. Über den Import müsste es auch möglich sein, die Angabe für den Trommler zu löschen oder mit einem neuen Wert zu versorgen. Hier müsste also auch ein leeres Attribut angegeben werden können.

Der Import ist eine großartige Sache! Derzeit sind über 20 unser Paddlerinnen und Paddler für 14 Tage auf Sommerfahrt. Alle fahren normalerweise die gleichen Strecken. Da ist es viel einfacher, die etwa 300 Fahrtenbucheinträge durch zeilenweises Kopieren in Excel zu pflegen und komplett als Nachtrag zu importieren, statt dass jeder der Teilnehmerinnen und Teilnehmer ihre/seine 14 Tagesetappen einzeln als Nachtrag erfasst. Die Pflege der Excel-Datei kann ein Mitglied der Fahrtengruppe übernehmen. Unser Fahrtenbuch ist nun für diesen Weg bereit....

Bisher haben in der laufenden Saison - der ersten mit efa - 168 Paddlerinnen und Paddler 1.780 Fahrtenbucheinträge mit zusammen 33.244 Kilometern erfasst...

Danke!

Viele Grüße
Martin

Itzehoer Wasser-Wanderer e.V.

nick
Beiträge: 1300
Registriert: Sa 10. Jul 2010, 11:45

Re: Probleme beim Import von Fahrtenbucheinträgen

Beitrag von nick » Fr 13. Jul 2012, 07:23

Hallo Martin,
iww-martin hat geschrieben:Wenn das Attribut <BoatCaptain></BoatCaptain> oder <BoatVariant></BoatVariant> ohne Wert in der Importdatei steht, bricht der Import mit der Fehlermeldung java.lang.NumberFormatException: For input string """ ab.

Der Import klappt, wenn die Attributte nicht angegegben werden.
Ah, verstehe. Habe ich soeben behoben (2.0.2_06).
iww-martin hat geschrieben:Das Boot zu jedem Fahrtenbucheintrag gehört zu einer gültigen Variante. Bei einem Update würde für <BoatVariant> mit einem leeren Attribut versucht, die Variante zu löschen. Das sollte nicht möglich sein. Entweder wird ein sinnvoller Wert eingetragen, oder das Attribut wird weggelassen.

Beim <BoatCaptain> kann für ein Drachenboot bei uns ein Trommler (im Standard der "Obmann") angegeben werden, dass muss aber nicht in jedem Fall sein. Bei Kajak und Kanadiern gibt es keinen Trommler und auch im Drachenboot wird dieser Platz nicht immer besetzt: es gibt Strecken (z.B. im Hamburger Stadtgebiet und auf der Schwentine), auf denen nicht getrommelt werden darf. Über den Import müsste es auch möglich sein, die Angabe für den Trommler zu löschen oder mit einem neuen Wert zu versorgen. Hier müsste also auch ein leeres Attribut angegeben werden können.
Hmmm, ich verstehe zwar deine Motivation, aber das ist etwas, was efa nicht leisten kann - ich müßte ja dann für jedes Feld eine Sonderbehandlung einführen, und der schöne generische Ansatz wäre weg. Außerdem kommt bestimmt der nächste, der sehr wohl mit einem Update-Import fehlerhafte Einträge der BoatVariant von efa zurückgesetzt haben möchte und daher mit einer leeren BoatVariant importiert... Beim CSV-Import ist es nicht möglich, einzelne Felder in einzelnen Records wegzulassen, wenn sie in anderen Records benutzt werden, aber XML geht das ja. Warum läßt du dann nicht einfach für diesen Fall das XML-Element BoatVariant weg?

Abgesehen davon scheint mir ein Update-Import für die Fahrtenbuchdaten auch ein eher ungewöhnlicher Anwendungsfall zu sein. Bei Personen und Booten verstehe ich das ja, aber beim Fahrtenbuch?
iww-martin hat geschrieben:Der Import ist eine großartige Sache! Derzeit sind über 20 unser Paddlerinnen und Paddler für 14 Tage auf Sommerfahrt. Alle fahren normalerweise die gleichen Strecken. Da ist es viel einfacher, die etwa 300 Fahrtenbucheinträge durch zeilenweises Kopieren in Excel zu pflegen und komplett als Nachtrag zu importieren, statt dass jeder der Teilnehmerinnen und Teilnehmer ihre/seine 14 Tagesetappen einzeln als Nachtrag erfasst. Die Pflege der Excel-Datei kann ein Mitglied der Fahrtengruppe übernehmen. Unser Fahrtenbuch ist nun für diesen Weg bereit....

Bisher haben in der laufenden Saison - der ersten mit efa - 168 Paddlerinnen und Paddler 1.780 Fahrtenbucheinträge mit zusammen 33.244 Kilometern erfasst...
Das freut mich!
Dann noch frohes Paddeln!!

Gruß,
Nick

iww-martin
Beiträge: 266
Registriert: Fr 24. Feb 2012, 15:42
Wohnort: Itzehoe
Kontaktdaten:

Re: Probleme beim Import von Fahrtenbucheinträgen

Beitrag von iww-martin » Fr 13. Jul 2012, 08:09

Hallo Nick,
Nick hat geschrieben:
...das ist etwas, was efa nicht leisten kann - ich müßte ja dann für jedes Feld eine Sonderbehandlung einführen, und der schöne generische Ansatz wäre weg.
Nein, das muss nicht sein. Ich werde einfach das Attribut <Boatvariant> weglassen und das Attribut <BoatCaptain> nur in die xml-Datei schreiben, wenn ein Wert angegeben ist. Das ist kein Problem...

Viele Grüße
Martin

Itzehoer Wasser-Wanderer e.V.

Antworten