text einer importierten .csv datei in zahlenwert konvertieren
Hallo liebe experten,
in meiner access db müsste ich eine .csv datei importieren, welche die resultate eines analysegeräts enthält. die daten sehen wie folgt aus:
"Echantillon";"Test";"Dilution (1/)";"Date de préparation";"Etat";"UFC/g"
"80535";"EC";"40";"mer. 03/09/2008 14:05";"OK";" <10.0"
Die erste zeile enthält die spaltenüberschriften, die zweite die eigentlichen daten.
Mein Problem liegt jetzt bei dem wert UFC/g welcher leider nicht nur zahlen, sondern auch sonderzeichen enthält: >,<, oder =.
Ich importiere diese daten in eine Tabelle [Tempo] danach wird der wert UFC/g in eine Tabelle [Resultate] per update-abfrage eingefügt.
Idealerweise würde access während dieser update-abfrage den wert UFC/g aufspalten in zwei werte und zwar einmal eine spalte für die sonderzeichen, und einmal eine spalte für den numerischen wert.
Ich hoffen ich habe meine anfrage deutlich genug formuliert, mit freundlichen grüssen:
Laborratte
Antwort schreiben
Antwort 1 von lorf55 vom 20.09.2020, 17:54 OptionsLösung
Hallo Laborratte,
ich habe dazu mal ein Makro zusammengestellt.
Es holt aus D:\Daten die Labor.CSV mit deinen Werten und erzeugt damit die neue Datei Tempo. Falls schon eine da ist gibt es eine Fehlermeldung. Es wird angenommen, dass in [UFC/g] als erstes, wenn es eines gibt, das Sonderzeichen steht und danach der Wert. In Resultate werden neue Zeilen eingefügt, die in Spalte sz und UFC die aufgespaltenen Werte von UFC/g enthalten.
Sub ImportLabor_1()
CurrentDb.Execute _
"SELECT * INTO Tempo " + _
"FROM [Text;FMT=Delimited(;);HDR=Yes;DATABASE=D:\Daten;].[Labor.CSV];", dbFailOnError
CurrentDb.TableDefs.Refresh
CurrentDb.Execute _
"INSERT INTO Resultate ( sz, UFC )" + _
"SELECT IIf(IsNumeric(Left([UFC/g],1)),'',Left([UFC/g],1)),
Mid([UFC/g],2,Len([UFC/g]))" + _
"FROM TEMPO;", dbFailOnError
End Sub
Ich hoffe das passt so.
Gruß
lorf
Antwort 2 von Laborratte vom 22.09.2020, 10:40 Options
hi lorf,
funktioniert super, vielen dank!