W czasie jednego ze szkoleń z obszarów Access VBA pojawiło się pytanie dot. sposobu konwersji daty przekazywanej w postaci ciągu tekstowego w układzie YYYYMMDD na układ daty YYYY-MM-DD.
Pierwsze podejście, bardzo klasyczne i naturalne, to rozebranie otrzymanego tekstu na czynniki z wykorzystaniem instrukcji Left(), Right() i Mid(), a następnie wykorzystanie funkcji DateSerial() i stworzenie z tego daty. rozwiązanie to mogło by wyglądać następująco:
1 | Dim DataTekstowo As String |
2 | DataTekstowo = "20161222" |
3 | Debug.Print DateSerial(Left(DataTekstowo, 4), Mid(DataTekstowo, 5, 2), Right(DataTekstowo, 2)) |
Tymczasem okazuje się, że z pomocą funkcji Format() możemy bardzo skutecznie skrócić powyższy zapis zyskując dodatkową elastyczność. Oto przykłady:
1 | Dim DataTekstowo As String |
2 | DataTekstowo = "20161222" |
5 | Debug.Print CDate (Format(DataTekstowo, "0000-00-00" )) |
8 | DataTekstowo = "161222" |
9 | Debug.Print CDate (Format(DataTekstowo, "0000-00-00" )) |
Oczywiście zachęcam do samodzielnych dalszych eksperymentów z wykorzystaniem funkcji Format.
Brak komentarzy:
Prześlij komentarz