Private Sub cmd_eintragen_Click()
Dim txtvon As String
Dim txtbis As String
Dim vonzahl, dzahl As Long
Dim biszahl As Long
Dim datumvon As String
Dim datumbis As String
Dim dnow As String
Dim prueferdatum, prueferfeiertag As Boolean
Dim UserName2 As String
Dim sql As String
Dim rec As DAO.Recordset
Dim sql2 As String
Dim rec2 As DAO.Recordset
Dim Username3, msg As String
Dim i, vardatum As Date
Dim j_minus, j_plus, urlaubstage, n, y, i2, n2, y2 As Long
Dim zaehler As Integer
prueferfeiertag = True
prueferdatum = True
'die dnow bekommt das datum von heute zugewiesen
dnow = Date
intj_minusahr = Year(Date)
txtvon = dnow
'txtvon bekommt den wert der in von angeklickt wurde
txtvon = Me.dtp_datum_von.value
txtbis = Me.dtp_datum_bis.value
vonzahl = CDbl(CDate(txtvon))
biszahl = CDbl(CDate(txtbis))
dzahl = CDbl(CDate(dnow))
'man darf nur datentypen vom typ datum angeben
If vonzahl < dzahl Then
MsgBox "Das ist leider nicht machbar"
prueferdatum = False
End If
If vonzahl > biszahl Then
MsgBox "Das ist leider nicht machbar"
prueferdatum = False
End If
'sql befehl um den gespeicherten namen auszurufen
sql = "SELECT * FROM tbl_zwischegespeicherter_name"
Set rec = CurrentDb.OpenRecordset(sql, dbOpenSnapshot)
UserName2 = rec.Fields("Gespeicherter_name")
'j_minusetzt bekommt den name seiner dazugehörigen ID
sql2 = "SELECT * FROM tbl_Azubi WHERE Personalnummer = '" & UserName2 & "'"
Set rec2 = CurrentDb.OpenRecordset(sql2, dbOpenSnapshot)
Username3 = rec2.Fields("ID_Azubi")
mod_Datum.FeiertagDatum (intj_minusahr)
'mod_Datum.Ostern
'mod_Datum.Arbeitstag
'mod_Datum.ArbeitsTage
'Wochenenden berechnen und vom zähler subtrahieren
'zählt vom von datum bis zum bis datum
For i = vonzahl To biszahl
prueferfeiertag = True
' hier wird das aktuelle datum in eine zahle umgewandelt(die tag zahl bis zu dem tag von 1.1.1900)
i2 = CDbl(CDate(i))
'n2 bekommt den wert 7
n2 = 7
'diese schleife zählt von 7 hoch bis zum bis datum(ca. 40353(24.06.2010))
For n = 1 To biszahl
n2 = n2 + 7
'vergleicht ob der i tag ein samstag ist
If i2 = n2 Then
prueferfeiertag = False
End If
Next n
y2 = 8
'diese schleife zählt von 8 hoch bis zum bis datum(ca. 40353(24.06.2010))
For y = 1 To biszahl
y2 = y2 + 7
'vergleicht ob der i tag ein sonntag ist
If i2 = y2 Then
prueferfeiertag = False
End If
Next y
' vergleichen ob der heutige tag ein beweglicherfeiertag ist
If i = CDate("01.01." & intj_minusahr) Then
prueferfeiertag = False
End If
If i = CDate("01.05." & intj_minusahr) Then
prueferfeiertag = False
End If
If i = CDate("03.10." & intj_minusahr) Then
prueferfeiertag = False
End If
If i = CDate("24.12." & intj_minusahr) Then
prueferfeiertag = False
End If
If i = CDate("25.12." & intj_minusahr) Then
prueferfeiertag = False
End If
'der variablen FeiertagDatum bekommt das heutige jahr zu gewiesen
vardatum = FeiertagDatum(Format(Date, "yyyy"))
'der variablen FeiertagDatum wird ein tag dazu addiert
'ostermonntag
vardatum = DateAdd("d", 1, vardatum)
If i = vardatum Then
prueferfeiertag = False
End If
'karfreitag
vardatum = FeiertagDatum(Format(Date, "yyyy"))
vardatum = DateAdd("d", -1, vardatum)
If i = vardatum Then
prueferfeiertag = False
End If
'Christi Himmelfahrt
vardatum = FeiertagDatum(Format(Date, "yyyy"))
vardatum = DateAdd("d", 39, vardatum)
If i = vardatum Then
prueferfeiertag = False
End If
'Pfingstmontag
vardatum = FeiertagDatum(Format(Date, "yyyy"))
vardatum = DateAdd("d", 50, vardatum)
If i = vardatum Then
prueferfeiertag = False
End If
If prueferfeiertag = False Then
j_minus = j_minus + 1
End If
j_plus = j_plus + 1
urlaubstage = j_plus - j_minus
Next i
Set ctl = Me.lst_vorl_Urlaubsantraege
If prueferdatum = True Then
DoCmd.RunSQL ("INSERT INTO tbl_vorl_Urlaubsantraege (ID_Azubi, Start_Urlaub, End_Urlaub, gen_Urlaubstage, Bemerkungen, genehmigt) " & _
"VALUES ('" & Username3 & "' , '" & txtvon & "' , '" & txtbis & "' , '" & urlaubstage & "', '" & " " & "' , '" & " " & "')")
End If
'messagebox ob man noch was hinzufügen möchte
msg = MsgBox("Möchten Sie noch einen Eintrag vornehmen?", vbYesNo)
If msg = vbNo Then
DoCmd.Close acForm, Me.name
End If
If msg = vbYes Then
End If
End Sub