Liebe Profis hier
Ich habe Google und das Forum hier schon reichlich durchsucht und verschiedene Ansätze ausprobiert, aber leider funktioniert nichts davon. Wahrscheinlich bin ich nur zu doof.
Folgendes Problem:
Aus einer externen Quelle (csv) muss ich aus Zahlenkolonnen ein Datumsformat erstellen, um damit Auswertungen erstellen zu können.
Probiert habe ich in einer Abfrage:
Datum: ZDate(Links([MeinFeld];2) & "." & Rechts(Links([MeinFeld];4);2) & "." & Rechts([MeinFeld];4))
Bei den Zahlenreihen mit 8 Stellen funktioniert das auch. Bei den mit 7 Ziffern (also ohne führende Null) wird "Fehler" ausgegeben.
Allerdings sind in der mit der csv Quelldatei verknüpften Tabelle die führenden Nullen enthalten. Habe auch schon versucht, mit der Vorgabe in Format "00000000" für das Feld die 8 Stellen zu erzwingen ... bringt auch nichts.
Der Versuch, beim Verknüpfen der Quelldatei csv mit der Accesstabelle direkt beim Erstellen der Verknüpfung das Format des Feldes auf "Datum" zu setzen scheitert daran, dass ich in der Auswahl nur "Datum mit Uhrzeit" zur Verfügung habe. Da komme ich also auch nicht weiter.
Freue mich auf Tipps. Und leider kennne ich mich in der Programmierwelt (VBA etc.) überhaupt nicht aus.
Hallo,
der Ausdruck in der Abfrage muß lauten:
Datum: DatSeriell(Rechts([MeinFeld];4);Rechts(Links([MeinFeld];4);2);Links([MeinFeld];2))
Gruß, Thomas
Super! Danke! So funktioniert das nun.
Lieben Dank und schönes Wochenende
Christian
Habe leider ein ähnliches Problem. Z.B. wird ohne führende Null in der Abfrage aus 9042020 das Datum 29.08.2023 statt 09.04.2020
Hallo,
Zitat von: undefinedHabe leider ein ähnliches Problem.
Was heist Du hast ein ähnliches Problem, das ist doch Dein eigenes Thema vom Juni 19, 2020, 10:45:18.
Zu Deinem Problem: Was ist mit dem Monat ?
Ist sichergestellt, dass der
immer 2 stellig ist ?
Wenn nicht, hast Du ein echtes Problem.
Z.B.
2122022 ist das jetzt der 21.02.2022 oder der 02.12.2022 ?
Ähnlichkeit worin?
Eine CSV ist eine Textdatei, die ändert von sich aus gar nichts. Wenn man den Inhalt, also auch einzelne Spalten, als Text liest, verschwindet auch keine führende 0, weil Text bleibt Text.
Also analysiere, was Du genau machst, ehe da mit Workarounds Fehler behoben werden, die Du selbst einbaust.
Das ist richtig, dass ich das Thema schonmal hatte. Das ganze Projekt ist dann aber aus verschiedenen Gründen liegen geblieben und kommt jetzt wieder nach vorn. Da ich sonst mit Access keine Berührungspunkte habe, fange ich quasi von vorn an ... sorry, falls ich belästigt habe.
Zitat von: MzKlMu am Januar 27, 2022, 17:08:59Hallo,
Zitat von: undefinedHabe leider ein ähnliches Problem.
Was heist Du hast ein ähnliches Problem, das ist doch Dein eigenes Thema vom Juni 19, 2020, 10:45:18.
Zu Deinem Problem: Was ist mit dem Monat ?
Ist sichergestellt, dass der immer 2 stellig ist ?
Wenn nicht, hast Du ein echtes Problem.
Z.B.
2122022 ist das jetzt der 21.02.2022 oder der 02.12.2022 ?
Ich werde versuchen, den Lieferanten der csv zu überzeugen, führende Nullen mitzuliefern ...
Danke
Zitat von: ebs17 am Januar 27, 2022, 17:25:32Ähnlichkeit worin?
Eine CSV ist eine Textdatei, die ändert von sich aus gar nichts. Wenn man den Inhalt, also auch einzelne Spalten, als Text liest, verschwindet auch keine führende 0, weil Text bleibt Text.
Also analysiere, was Du genau machst, ehe da mit Workarounds Fehler behoben werden, die Du selbst einbaust.
ZitatAllerdings sind in der mit der csv Quelldatei verknüpften Tabelle die führenden Nullen enthalten
Wenn das nicht mehr stimmt, sollte man es auch klar und verständlich ausdrücken.
Genauer sollte man in der originalen CSV, geöffnet mit Texteditor, nachsehen.
Möglichkeiten einer eigenen Reaktion:
Sub aufruf_ConvertDate_X()
Debug.Print 1, ConvertDate_X("1022020")
Debug.Print 2, ConvertDate_X("01022020")
End Sub
Function ConvertDate_X(ByVal AnyString As String) As Date
Dim sStep As String
sStep = Right(String(1, "0") & AnyString, 8)
' ' unsicher, weil von eingestellter Ländereinstellung abhängig
' ConvertDate_X = CDate(Format(sStep, "@@.@@.@@@@"))
ConvertDate_X = DateSerial(Mid(sStep, 5), Mid(sStep, 3, 2), Left(sStep, 2))
End Function