Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Währungsbeträge importieren

Begonnen von hjbartel, Dezember 02, 2021, 17:25:35

⏪ vorheriges - nächstes ⏩

hjbartel

Hallo zusammen,

ich muss eine csv-Datei importieren und die enthaltenen Beträge in einem Feld mit dem Datentyp "Währung" ablegen. Die csv sieht beispielhaft so aus:
-1.07;
33.44;
0;
167.51;
0;
3.82;
453.84;
Ich kann es leider nicht ändern, dass der Betrag mit "." statt "," geliefert wird.

Zuerst hatte ich die Importspezifikation "Währung" gewählt, aber die lief beim Import auf einen Fehler bei der Zeile 6 (3.82). Die vorigen Werte wurden korrekt importiert. Den Fehler konnte ich mir erst nicht erklären. Als ich die csv-Datei aber mal zum Schauen in Excel öffnete, kam ich auf den Verdacht, dass "man" hier versucht, daraus eine  Datumsangabe ("Mar 82") zu machen, was natürlich Unsinn ist. Der Verdacht bestätigt sich in weiteren Zeilen der Quelldatei (hier nicht mit abgebildet)

Dann habe ich das Internet durchgelesen, unter anderem auch dieses Forum, wo es die Frage schon mal gab:
https://www.access-o-mania.de/forum/index.php?topic=19658.0
Franz hat empfohlen, mit der Spezifikation "Double" zu importieren. Das hat bei dem Fragesteller geklappt, aber bei mir nicht: Ich bekomme einen Importfehler (Typumwandlung) in Zeile 6, also dieser Wert von 3.82

Schließlich habe ich als Importspezifikation "Kurzer Text" genommen. Bei der Zuweisung habe ich dann folgendes in den SQL geschrieben:
... SELECT CCUR ( REPLACE ( Importwert , '.' , ',' ) ) AS Währungswert ...Hier bekomme ich zwar keine Fehlermeldung, aber das Ergebnis stimmt noch nicht ganz. Zeile 6 (und alle anderen Zahlen, die man auch als Datum interpretieren könnte) kommen mit NULL, der Rest ist korrekt.

Was kann ich noch tun?

Vielen Dank und viele Grüße

Hans-Jürgen

markusxy

Ob Währung oder Double ist unwichtig.
Du nimmst einfach was du brauchst.
Hast du das Dezimaltrennzeichen in der Importspezifikation auf den Punkt umgestellt?

MzKlMu

Hallo,
in der Importspezi kann man auch das Dezimaltrennzeichen angeben das verwendet werden soll.
Wenn es Währung ist, so würde ich auch als Währung importieren, auf keinen Fall als Double. Double ist Fließkomma und für Währungen völlig ungeeignet.

Du kannst auch die CSV nur verknüpfen (alles als Text) und dann per Anfügeabfrage die Daten nach Access anfügen.
In der Abfrage kannst Du dann aus dem Punkt mit Ersetzen (RePlace) den Punkt in Komma tauschen.
Gruß Klaus

hjbartel

Hallo zusammen,


wow, ihr seid schnell. Vielen Dank für eure Mühe!

Ja, ich hatte als Dezimaltrennzeichen "." angegeben. Weil als Datumstrennzeichen aber auch "." vorgegeben war, hatte ich das Datumskennzeichen in einem weiteren Versuch auf "#" geändert (damit es nicht zum tragen kommt).

MzKIMu: Das mit dem Ersetzen des Punktes ins Komma hatte ich ja auch schon probiert.

Ich hatte aber eben noch ein "Erlebnis der Dritten Art": Ich dachte mir: "Machste mal einen Import mit allen Spezifikationen durch den Assistenten". Zuallererst geht es da ja um die Trennzeichen - alles andere wird später festgelegt. Dort gibt es ja auch schon eine Datenvorschau (wegen der Trennzeichen), und schon dort steht  "Mrz 82"!!!!

Wenn ich mir allerdings die Datei mit dem Windows-Editor ansehe, steht dort korrekt "3.82". Es scheint also nichts mit den Importspezifikationen zu tun zu haben, sondern schon vorher zu beginnen - Bug oder Feature?

Ich bin jetzt drauf und dran, mit "ISDATE" zu arbeiten und in diesem Falle die Ergebnisse umzurechnen. Aber das wäre ja wirklich nicht schön und sauber.

Weitere Ideen?

Hans-Jürgen

markusxy

Zitat von: hjbartel am Dezember 02, 2021, 18:19:41Weitere Ideen?


Was du beschreibst ist merkwürdig.
Also obwohl du Datentyp Währung angibst wird daraus Datentyp Datum gemacht.
Du kannst die Datei ja mal hochladen, und dazu noch den Screenshot der Konfiguration der Importspezifikation.

hjbartel

anbei. Wie ihr seht, ist das nicht die vollständige Datei, sondern nur ein Ausschnitt. Der Rest ist zu groß und auch nicht für die Öffentlichkeit.

Oben: so sieht es aus, wenn man sich die Datei im Editor ansieht
Unten: Datenvorschau beim Importassistenten - noch bevor man irgendeine Konfigurationsentscheidung getroffen hat, hier geht es eigentlich nur um die Trennzeichen.

markusxy

Nochmal, wenn du Hilfe möchtest brauche ich einige Zeilen in einer Textdatei, damit ich das einfach testen kann.
Da müssen Header und vollständige Zeilen dabei sein. Ansonsten verschwende ich hier meine Zeit.
Dazu noch das Bild der Importspezifikation.

ebs17

Zitatnur ein Ausschnitt
Der bereitet für sich auch keine Probleme bezüglich Trenner.

Sinn macht nur eine Betrachtung über ganze Zeilen.
ZitatDer Rest ist ... nicht für die Öffentlichkeit.
Inhalte kann man verfremde/anonymisieren. Das macht aber Arbeit ...
Mit freundlichem Glück Auf!

Eberhard

hjbartel

Hallo zusammen,

nochmal vielen Dank für euren Aufwand - es ist mir ein wenig peinlich, aber ich habe die Lösung gefunden... (Ansonsten hätte ich aber auch kein Problem damit, mir die Arbeit zu machen, die Daten zu verfremden. Ich weiß immer nicht, wieviel Echtdaten ihr braucht, um das Problem zu analysieren)

Wie ich festgestellt habe, gibts meine csv in zwei Varianten: Original und "mit Datumsfehler" wie im obigen Ausschnitt. Ich hatte die csv ja mal in Excel geöffnet (siehe Beschreibung oben) und ich vermute, ich habe sie versehentlich gespeichert und damit den Datumsfehler in die CSV hineingeschrieben.

Excel/Access hat also alles richtig gemacht - Change user ;-)

Nochmals vielen Dank für eure Mühe

Hans-Jürgen