Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Zahlenreihe z.B. 01022020 in Datum umwandeln

Begonnen von Christian1962, Juni 19, 2020, 11:45:18

⏪ vorheriges - nächstes ⏩

Christian1962

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.

ShenTo19

Hallo,
der Ausdruck in der Abfrage muß lauten:
Datum: DatSeriell(Rechts([MeinFeld];4);Rechts(Links([MeinFeld];4);2);Links([MeinFeld];2))
Gruß, Thomas

Christian1962

Super! Danke! So funktioniert das nun.

Lieben Dank und schönes Wochenende
Christian

Christian1962

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

MzKlMu

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 ?
Gruß Klaus

ebs17

Ä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.
Mit freundlichem Glück Auf!

Eberhard

Christian1962

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 ?

Christian1962

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.

ebs17

#8
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
Mit freundlichem Glück Auf!

Eberhard