PDA

Vollständige Version anzeigen : Import txt mit Dezimal '.' und TSD ','


Debutant
04.10.2001, 16:01
Hallo,
ich möchte gerne aus einer Textdatei mit Zahlenformat Dezimal '.' und Tausenderzeichen ',' die Werte in numerische Felder einlesen, die im deutschen Zahlenformat Dezimal ',' und TSD '.' formatiert sind. (Bsp. von "1,000,000.00" nach "1.000.000,00") Bei den Importspez. kann man mW nur das Dezimalzeichen einstellen.
Wer kann mir weiterhelfen.
Vielen Dank.

Bernd Koch
06.10.2001, 01:20
Ja, das ist nicht ohne "Handarbeit" zu lösen.

Ich weiß nicht, wie gut du programmieren kannst. Nachfolgend eine Lösung, die ganz ohne auskommt.

1.
Beim Importieren der Datei wählst du für alle Felder mit dem besagten Zahlenformat nicht den Dateityp "Double", der dir von Access angeboten wird, sondern "Text".

2.
Ist die Tabelle dann in Access, gilt es zu prüfen, ob in den sonstigen Feldern der Tabelle (z.B. Datumsfelder) noch Punkte oder Kommas vorkommen.
Ist das der Fall, erzeugst du von der Tabelle eine Abfrage und wählst nur die Felder aus, bei denen du Punkt und Komma austauschen willst. Ansonsten kannst du das Nachfolgende sofort in der Tabelle machen.

3.
Du gehst in die Normalansicht der Tabelle (oder Abfrage) und wählst im Menü Bearbeiten den Menüpunkt Ersetzen aus.
Dort entfernst du die "Häkchen" bei "Gesamten Feldinhalt vergleichen" und bei "Aktuelles Feld".

4.
Dann gibst du bei "Suchen" ein Komma ein und bei
"Ersetzen" ein beliebiges Zeichen, nur keinen Punkt; also z.B. ein Pluszeichen.

Danach drückst du auf "Alle ersetzen"

5.
Dann "Suchen" = . (Punkt)
"Ersetzen" = , (Komma)

6.
Zuletzt: "Suchen" = + (Pluszeichen)
"Ersetzen" = . (Punkt)

7.
Jetzt sind die Zahlen so, wie du sie haben möchtest.

Im Tabellenentwurf stellst du nun:
- den Dateityp auf Zahl / Double
- das Format auf Standardzahl
ein.

Nunmehr müsste alles OK sein.

Natürlich kann man das auch per VBA lösen - ich weiß ja nicht, ob solch ein Import des öfteren vorkommt oder nur einmalig.

Für "einmalig" der "selten" ist dies wohl der einfachere Weg.

Bernd

kama
06.10.2001, 08:05
Hallo
Importiere die Werte aus deiner Tabelle ganz Normal mit der der gewünschten einstellung für Zahlendatentyp. z. B. Währung

Access speichert in einem Zahlenfeld keinerlei formatierungsinformationen!

Wenn du das willst (was aber unsinnig wäre) muß du deine Werte als Text abspeichern.

Das tausender trennzeichen wird dir automatisch angezeigt.

Wenn du es als double angibst, mußt du unter format Standardzahl angeben.

Die Einstellungen wie Währungsformate aussehen sollen findest du im übrigen
in der Systemsteuerung unter Lädereinstellungen. das gilt dann Systemweit

Bernd Koch
07.10.2001, 23:55
@ Kama

Hast du das ausprobiert, was du schreibst?

Wenn du aus einer Textdatei(*.txt) die Zahl 1,000,000.00 (gemäß Beispiel von Debutant) nach Access importieren willst, lässt Access gar kein Zahlenformat zu, sondern nur das Textformat, ansonsten gibt´s einen Importfehler.

Hast du dagegen eine Zahl wie 100,000.00, kannst du im Importfilter Double angeben, doch dann kommt in der Access-Tabelle die Zahl 100 an und nicht 100000. Und mit Standardzahl wird aus 100 lediglich 100,00.

Wählst du dagegen - in beiden Fällen - den Dateityp Währung, so erhältst du - in beiden Fällen - in Access als Resultat 100,00 DM.

Ginge es bei dieser Beispielzahl um mein Gehalt, würde mich die Reduzierung um den Faktor 1.000 erheblich stören. :D

Oder habe ich da was übersehen?

Bernd

Debutant
08.10.2001, 08:57
@ Bernd

Erst mal danke für den Tip. Leider benötige ich den Import täglich, sprich um Programmierung / Makro werde ich nicht herumkommen (etwas Erfahrung in beidem ist vorhanden).
Vielleicht hast Du ja noch einen Tip parat.

@kama

Ehrlich gesagt kann ich Deinen Vorschlag auch nicht so ganz nachvollziehen!

Debutant

kama
08.10.2001, 09:18
@Hallo Bernd

Ich gebe zu etwas verworren dargestellt :(
---------------------------------------
@Debutant
Also das ganze nochmal von vorne

System/Ländereinstellungen/Zahl

Dezimaltrennzeichen .
Zifferntrennzeichen ,

Beim importieren als dezimalzeichen ebenfalls . wählen

das ist getestet und klapt.

Das klapt mit aber nur wenn das Format in der Systeneinstellung dauerhaft geändert wird. ist also für den einmaligen oder seltenen Import von Hand geeignet.

Eine Methode, wenn man die datei mehrfach importieren muß:

Komplette Zahl als Text importieren

Folgende Funktion in ein neues Modul einfügen

Function Umwandeln(Textfeld As String) As Double

Dim Länge, x As Integer
Dim NeuerWert, Übergabewert As String
Dim Wert As Double

Länge = Len(Textfeld)

For x = 1 To Länge
Übergabewert = Mid(Textfeld, x, 1)
If Übergabewert = "," Then
'Tu Nix
Else
NeuerWert = NeuerWert + Übergabewert
End If
Next x
Umwandeln = Val(NeuerWert)
End Function


Eine Abfrage auf der Basis der Importierten daten
Neues berechnetes feld

Zahlenwert:Umwandeln([DeinTextFeld])

spukt die Zahl als Double aus
Der Rest ist Formatierung

Getestet und klapt :)

Die funktion steht dir natürlich auch in Berichten und Formularen zur Verfügung

Debutant
08.10.2001, 09:45
@ kama

tja das mit der Systemeinstellung geht nicht (muß für andere Anwendungen auf Deutsch bleiben). Werde aber die Funktion testen.
Merci vielmals

Debutant