Access 2002 - nur Arbeitstage zählen lassen
Guten Tag zusammen
Ich besitze momentan eine Access 2002 Datenbank und möchte sie gerne erweitern.
In einem Formular erfasse ich jeweils meine Pendenzen.
Wenn ich jetzt die Priorität auf hoch setzte, dann rechnet mir Access aus, bis wann die Pendenz fertig sein muss (siehe VBS Code).
Jetzt ist mein Problem folgendes:
Wenn der Tag der Fertigstellung auf einem Samstag/Sonntag gesetzt wird ist das schlecht.
Kann man irgendwie definieren, dass man nur die Arbeitstage (Mo. - Fr.) berücksichtigt, oder das Wochenende auslässt?
Sub Priorität_AfterUpdate()
Select Case Me.Priorität
Case "hoch"
Me.Termin.Value = Date + 5
Case "mittel"
Me.Termin.Value = Date + 15
Case "tief"
Me.Termin.Value = Date + 25
Case Else
Me.Termin.Value = ""
Me.Termin.SetFocus
End Select Me.Termin.Requery
End Sub
Vielen Dank im Voraus für eure Antworten.
LG
Doran
Ich besitze momentan eine Access 2002 Datenbank und möchte sie gerne erweitern.
In einem Formular erfasse ich jeweils meine Pendenzen.
Wenn ich jetzt die Priorität auf hoch setzte, dann rechnet mir Access aus, bis wann die Pendenz fertig sein muss (siehe VBS Code).
Jetzt ist mein Problem folgendes:
Wenn der Tag der Fertigstellung auf einem Samstag/Sonntag gesetzt wird ist das schlecht.
Kann man irgendwie definieren, dass man nur die Arbeitstage (Mo. - Fr.) berücksichtigt, oder das Wochenende auslässt?
Sub Priorität_AfterUpdate()
Select Case Me.Priorität
Case "hoch"
Me.Termin.Value = Date + 5
Case "mittel"
Me.Termin.Value = Date + 15
Case "tief"
Me.Termin.Value = Date + 25
Case Else
Me.Termin.Value = ""
Me.Termin.SetFocus
End Select Me.Termin.Requery
End Sub
Vielen Dank im Voraus für eure Antworten.
LG
Doran
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 233568
Url: https://administrator.de/forum/access-2002-nur-arbeitstage-zaehlen-lassen-233568.html
Ausgedruckt am: 22.04.2025 um 04:04 Uhr
20 Kommentare
Neuester Kommentar
Hallo Doran,
könntest du so machen:
Grüße Uwe
könntest du so machen:
Sub Priorität_AfterUpdate()
dim d
Select Case Me.Priorität
Case "hoch"
d = Date + 5
Case "mittel"
d = Date + 15
Case "tief"
d = Date + 25
Case Else
d = ""
End Select
If d <> "" Then
Select Case Weekday(d)
Case 7
d = d + 2
Case 1
d = d + 1
End Select
End If
Me.Termin.SetFocus
Me.Termin.Value = d
End Sub

Hallo!
und was ist mit den Feiertagen?
Grüße
Der Ratsuchende
und was ist mit den Feiertagen?
Grüße
Der Ratsuchende
Zitat von @DoranB:
Aber meine Frage wäre jetzt, wie kann ich eine Abfrage erstellen?
Sorry, kenne mich echt nicht gut aus mit VBS.
mache dir gerade ein Beispiel.... bin noch anderweitig beschäftigt, kann etwas dauernAber meine Frage wäre jetzt, wie kann ich eine Abfrage erstellen?
Sorry, kenne mich echt nicht gut aus mit VBS.
Zitat von @DoranB:
Aber meine Frage wäre jetzt, wie kann ich eine Abfrage erstellen?
Sorry, kenne mich echt nicht gut aus mit VBS.
So, eine Abfrage könntest du folgendermaßen machen (Funktion getestet mit Outlook 2010). Ich gehe jetzt davon aus das deine Feiertage mit der Kategorie Feiertag in Outlook versehen sind (Standard, wenn man Outlook die Feiertage eintragen lässt) und diese im Standardkalender eingetragen sind. Die Funktion sucht so lange das nächste Datum bis es nicht mehr auf ein Wochenende oder einen Feiertag fällt.Aber meine Frage wäre jetzt, wie kann ich eine Abfrage erstellen?
Sorry, kenne mich echt nicht gut aus mit VBS.
Sub Priorität_AfterUpdate()
dim mydate
Select Case Me.Priorität
Case "hoch"
mydate = Date + 5
Case "mittel"
mydate = Date + 15
Case "tief"
mydate = Date + 25
Case Else
mydate = ""
End Select
If mydate <> "" Then
mydate = getNextWorkday(mydate)
End If
Me.Termin.SetFocus
Me.Termin.Value = mydate
End Sub
Function getNextWorkday(ByVal d As Date) As Date
set objOL = CreateObject("Outlook.Application")
Set cal = objOL.GetNamespace("MAPI").GetDefaultFolder(9)
Do
isHoliday = False
Select Case Weekday(d)
Case 7
d = d + 2
Case 1
d = d + 1
End Select
For Each itm In cal.Items
If itm.start = d Then
If itm.AllDayEvent And itm.Categories = "Feiertag" Then
isHoliday = True
Exit For
End If
End If
Next
If isHoliday Then
d = d + 1
End If
Loop Until isHoliday = False
getNextWorkday = d
set objOL = Nothing
set cal = Nothing
End Function
Grüße Uwe
Zitat von @DoranB:
Ich danke dir 1000mal!!!
Aber noch eine Verständnisfrage Uwe.
Von wo aus weiss der Funktionsbereich, wo es das anwenden soll?
Verstehe deine Frage nicht ? An die Funktion wird das Datum übergeben, die Funktion sucht den nächsten Tag der kein Wochenende oder Feiertag ist und gibt es zurück.Ich danke dir 1000mal!!!
Aber noch eine Verständnisfrage Uwe.
Von wo aus weiss der Funktionsbereich, wo es das anwenden soll?
Zitat von @DoranB:
Achso ok, ne alles klar.
Jetzt funktioniert aber das Ganze nicht mehr. Er kann schon keinen Termin setzten.
Das ganze im VBA-Editor im Einzelschrittmodus durchlaufen lassen .... und Breakpoints setzen dann lässt sich der Fehler bei Dir aufspüren, hier geht's soweit einwandfrei.Achso ok, ne alles klar.
Jetzt funktioniert aber das Ganze nicht mehr. Er kann schon keinen Termin setzten.
Zitat von @DoranB:
Wenn ich das Ganze im Einzelschrittmodus (F8) durchlaufen lasse, geschieht nichts.
Wie setzt man den breakpoints ? Also meinste einen Teil auskommentieren?
Och nö.... muss ich das ganze jetzt hier runterbeten ? Setze in der Funktion einen Breakpoint indem du links neben dem Code ganz am Rand in die graue Randleiste klickst (es erscheint ein roter Punkt), dann gehst du in dein Formular und machst ein Update deines Textfeldes so dass die Funktion aufgerufen wird, dann wird der Debugger an der Stelle an der du den Breakpoint gesetzt hast stoppen und du kannst mit F8 die Schritte durchlaufen. Die Variablen lassen sich dann auch mit Überwachungsausdrücken kontrollieren. Sorry das sind Debugging-Grundlagen die ich jetzt hier nicht alle aufzählen werde.Wenn ich das Ganze im Einzelschrittmodus (F8) durchlaufen lasse, geschieht nichts.
Wie setzt man den breakpoints ? Also meinste einen Teil auskommentieren?
Grüße Uwe
erstens würde ich den Namen des Textfeldes Pendenz_Priorität ändern so dass kein Umlaut darin vorkommt, damit gibt es immer mal wieder Probleme im VBA-Code, und zweitens auch mal im Select Case die Value Eigenschaft verwenden:
Ansonsten wäre die letzte Chance eine TeamViewer-Session.
Select Case Me.Pendenz_Prioritaet.Value

Hallo!
Hatte in Excel mal eine Feiertags-Tabelle erstellt, die die Feiertage (Rot) automatisch in Abhängigkeit der Jahreszahl und des betreffenden Bundeslandes festlegt.
Es muss nur die Zelle B34 mit der Jahreszahl eines Datums und die Zelle B35 mit dem Bundesland in irgendeiner Form initialisiert werden. Der Rest wird durch entsprechende Formeln berechnet.
In Zelle C3 wird der Ostersonntag eines Jahres mit folgender Formel berechnet:
In Zelle C26 wird der letzte Sonntag (4. Advent) vor dem 24.12. mit folgender Formel berechnet:
Im Bereich C4:C12 stehen die Tage (+/-) auf den Ostersonntag bezogen und im Bereich C24:C33 die Tage auf den 4.Advent bezogen
Die Formel für den Bereich D4:D12 (D4 Abwärtskopie) lautet:
Die Formel für den Bereich D27:D33 (D27 Abwärtskopie) lautet:
Enthält ein Bundesland bei einem der Feiertage kein 'x', dann bleibt die dazugehörigen Zelle im Bereich D4:D33 Leer.
Bin in Access nicht so der Hecht, aber evenmtuell könnt ihr ja damit etwas anfangen?
Die Tabelle für die VBA-Abfrage sieht so aus:
Grüße
Der Ratsuchende
Hatte in Excel mal eine Feiertags-Tabelle erstellt, die die Feiertage (Rot) automatisch in Abhängigkeit der Jahreszahl und des betreffenden Bundeslandes festlegt.
Es muss nur die Zelle B34 mit der Jahreszahl eines Datums und die Zelle B35 mit dem Bundesland in irgendeiner Form initialisiert werden. Der Rest wird durch entsprechende Formeln berechnet.
In Zelle C3 wird der Ostersonntag eines Jahres mit folgender Formel berechnet:
=RUNDEN(DATUM($B$34;4;TAG(MINUTE($B$34/38)/2+55))/7;0)*7-6 |
In Zelle C26 wird der letzte Sonntag (4. Advent) vor dem 24.12. mit folgender Formel berechnet:
=DATUM($B$34;12;25)-WOCHENTAG(DATUM($B$34;12;25);2) |
Im Bereich C4:C12 stehen die Tage (+/-) auf den Ostersonntag bezogen und im Bereich C24:C33 die Tage auf den 4.Advent bezogen
Die Formel für den Bereich D4:D12 (D4 Abwärtskopie) lautet:
=WENN(INDIREKT("$E" & ZEILE($E4) + VERGLEICH($B$35;$E$34:$T$34;0)-1;1)="x";$C$3+$C4;"") |
Die Formel für den Bereich D27:D33 (D27 Abwärtskopie) lautet:
=WENN(INDIREKT("$E" & ZEILE($E27) + VERGLEICH($B$35;$E$34:$T$34;0)-1;1)="x";$C$26+$C27;"") |
Enthält ein Bundesland bei einem der Feiertage kein 'x', dann bleibt die dazugehörigen Zelle im Bereich D4:D33 Leer.
Bin in Access nicht so der Hecht, aber evenmtuell könnt ihr ja damit etwas anfangen?
Die Tabelle für die VBA-Abfrage sieht so aus:
Grüße
Der Ratsuchende