Option Compare Database
Option Explicit
Sub Jahreszeiten_berechnen()
'***** Jahreszeiten berechnen und in neues feld schreiben (dzt. in Feld bemerkung)
'***** Variablen deklarieren
Dim Datumsstring As String
Dim Suchdat As String
'Dim Jahreszeit As String
Dim Ergebnis As String
'***** Verbindung zur DB
Dim db As Database
Set db = CurrentDb
'***** Recordset deklarieren
Dim rcsSport As Recordset
'***** Recordset als Dynaset definieren
Set rcsSport = db.OpenRecordset("A_Tagebuch_alles", dbOpenDynaset)
rcsSport.MoveLast 'finde letzten Datensatz
'***** Loop
Do Until rcsSport.BOF 'Schleife bis zum Ende des Recordset
Debug.Print rcsSport.Fields("Id") _
& " - " & rcsSport.Fields("Datum") _
& " - " & rcsSport.Fields("Zeit") _
& " - " & rcsSport.Fields("Bemerkung") 'Kontrolle ob überhaupt etwas gefunden wird
Datumsstring = Format(CStr(Day(rcsSport.Fields("Datum"))) _
+ "." + CStr(Month(rcsSport.Fields("Datum"))) _
+ "." + CStr(Year(rcsSport.Fields("Datum"))), "dd.mm.yyyy") 'Übergabe an Variable und Format tt.mm.yyyy
Debug.Print "Datumsstring: " & Datumsstring 'Kontrolle Variable Datumsstring
rcsSport.Edit 'Änderung vornehmen
rcsSport.Fields("Bemerkung") = "Bemerkung neu: " & Datumsstring 'schreibt die Variable Datumstring in das Feld Bemerkung
Debug.Print rcsSport.Fields("Bemerkung") 'Kontrolle Inhalt Feld Bemerkung
Let Suchdat = Datumsstring
Debug.Print "Suchdat: " & Suchdat
'***** Function aufrufen
Let Ergebnis = Jahreszeit(Suchdat)
Debug.Print Ergebnis
rcsSport.Fields("Jahreszeit") = Ergebnis 'Datenfelder ergänzen
rcsSport.Update 'Aktualisierung durchführen
rcsSport.MovePrevious 'vorheriger Datensatz
Loop
rcsSport.Close
End Sub
'***** Function zur Umrechnung des Datums in einen Jahreszeit
Public Function Jahreszeit(Suchdat As String) As String 'Eingabe gültiges Datum als String "tt.mm.jjjj"
Dim mmtt As Integer
Dim jjjj As Integer
mmtt = Val(Mid(Suchdat, 4, 2)) * 100 + Val(Mid(Suchdat, 1, 2))
jjjj = Val(Mid(Suchdat, 7, 4))
Debug.Print "Monat: " & Val(Mid(Suchdat, 4, 2))
Debug.Print "Tag: " & Val(Mid(Suchdat, 1, 2))
Debug.Print "Jahr: " & Val(Mid(Suchdat, 7, 4))
Debug.Print "mmtt: " & mmtt
Debug.Print "jjjj: " & jjjj
Select Case mmtt
Case 301 To 531
Jahreszeit = "Frühling" & Str(jjjj)
Case 601 To 831
Jahreszeit = "Sommer" & Str(jjjj)
Case 901 To 1130
Jahreszeit = "Herbst" & Str(jjjj)
Case 1201 To 1231
Jahreszeit = "Winter" & Str(jjjj) & " /" & Str(jjjj + 1)
Case 101 To 229
Jahreszeit = "Winter" & Str(jjjj - 1) & " /" & Str(jjjj)
Case Else
Jahreszeit = "Fehler in der Jahreszeitermittlung"
End Select
End Function