dekirch 10 Geschrieben 13. Mai 2009 Melden Teilen Geschrieben 13. Mai 2009 Hallo ich versuche gerade eine Zeitberechnung zu schreiben, die mir die Tage berechnet vom aktuellen Zeitpunkt, bis zu einem Zeitpunkt X außgenommen der dazwischenliegenden Samstage und Sonntage. Ich möchte mir damit das stressige Rumrechnen bei Restores ersparen und will das jetzt mit VBS lösen. Ich unterscheide zwischen 2 Bereichen. In einem wird 24/7 gesichert (da is es kein Thema) und dem Bereich in dem nur weekdays gesichert wird. Aber bei dem rausrechnen der Sams- und Sonntage komm ich grad nich weiter... On Error Resume Next OU = Inputbox ("Geben Sie an ob es sich um ein YYY oder XXX-Projekt handelt. Mögliche Eingaben sind: YYY oder XXX") If OU = "XXX" then DateRestore = InputBox ("Geben Sie das gewünschte Restoredatum im Format DD.MM.YYYY ein") Today = Now DateToday = FormatDateTime (Today, vbShortDate) MsgBox DateToday ElseIf OU = "YYY" then DateRestore = InputBox ("Geben Sie das gewünschte Restoredatum im Format DD.MM.YYYY ein") Today = Now DateToday = FormatDateTime (Today, vbShortDate) Diff = DateDiff ("d", DateRestore, DateToday) nightly = (Diff) Text = "Bitte sichern Sie den Stand sv.nightly." & nightly & " zurück" MsgBox Text End if Zitieren Link zu diesem Kommentar
dekirch 10 Geschrieben 13. Mai 2009 Autor Melden Teilen Geschrieben 13. Mai 2009 Der "Problembereich" ist der in Bereich der OU XXX Zitieren Link zu diesem Kommentar
d.stegemann 10 Geschrieben 13. Mai 2009 Melden Teilen Geschrieben 13. Mai 2009 Hallo, als kleiner Denkanstoß könnte das folgende dienen.... Day of Week Function Gruß Dirk Zitieren Link zu diesem Kommentar
dekirch 10 Geschrieben 13. Mai 2009 Autor Melden Teilen Geschrieben 13. Mai 2009 Ne komm damit irgendwie nich so recht klar, hab mittlerweile aber mal weitergeschrieben... On Error Resume Next 'Abfrage für welchen Bereich gerechnet werden soll OU = Inputbox ("Geben Sie an ob es sich um ein YYY oder XXX-Projekt handelt. Mögliche Eingaben sind: YYY oder XXX") 'Abfrage für XXX If OU = "XXX" then DateRestore = InputBox ("Geben Sie das gewünschte Restoredatum im Format DD.MM.YYYY ein") Today = Date Diff = DateDiff ("d", DateRestore, Today) nightly = (Diff) 'Vorbereitung für Loop DateRandom = Today 'Initialisiere Variablen SunSaturdays = 0 'Initialisiere Variablen Do DateCheck = weekday (DateRandom) 'lese die RandomVaraible aus und übergebe an DateCheck if DateCheck = 1 then 'Prüfe ob es sich um einen Sonntag handelt SunSaturdays + 1 'Erhöhe den Zähler ElseIf DateCheck = 7 then 'Prüfe ob es sich um einen Samstag handelt SunSaturdays + 1 'Erhöhe den Zähler DateRandom = DateAdd ("d", -1, DateRandom) 'Zähle um einen Tag zurück End If Loop Until DateCheck = DateRestore FinalRestoreDate = nightly - SunSaturdays Text = "Bitte sichern Sie den Stand sv.nightly." & FinalRestoreDate & " zurück" MsgBox text ElseIf OU = "YYY" then DateRestore = InputBox ("Geben Sie das gewünschte Restoredatum im Format DD.MM.YYYY ein") Today = Now DateToday = FormatDateTime (Today, vbShortDate) Diff = DateDiff ("d", DateRestore, DateToday) nightly = (Diff) Text = "Bitte sichern Sie den Stand sv.nightly." & nightly & " zurück" MsgBox Text End if Zitieren Link zu diesem Kommentar
d.stegemann 10 Geschrieben 17. Mai 2009 Melden Teilen Geschrieben 17. Mai 2009 Ne komm damit irgendwie nich so recht klar, hab mittlerweile aber mal weitergeschrieben... Hallo, hat ein wenig länger gedauert, aber heute hatte ich auf der Zugfahrt ein wenig Zeit... wie wärs mit folgendem... 'Abfrage für welchen Bereich gerechnet werden soll OU = Inputbox ("Geben Sie an ob es sich um ein YYY oder XXX-Projekt handelt. Mögliche Eingaben sind: YYY oder XXX") 'Auswahl Select Case UCase(OU) Case "XXX" DateRestore = InputBox ("Geben Sie das gewünschte Restoredatum im Format DD.MM.YYYY ein") Today = Date 'Jetzt müssen wir erstmal das Restoredate verschieben, wenn es sich um einen Sa oder So handelt. Select Case Weekday(Daterestore, vbSaturday) Case 2 Daterestore = DateDiff("d", 3, Daterestore) Case 1 Daterestore = DateDiff("d", 2, Daterestore) Case Else End select Diff = DateDiff ("d", DateRestore, Today) 'msgbox cDate(DateRestore) DateRandom = Today 'Initialisiere Variablen SunSaturdays = Fix(Diff/7) * 2 ' Ganze Wochen enthalten immer einen Sa + So 'MsgBox SunSaturdays &" Sa +So durch komplette Wochen" Rest_Tage = Diff Mod 7 'Wie sieht es mit Sa +So in der nicht kompletten Woche aus 'MsgBox Rest_Tage &" Tage nach Modulo" Tag_heute = Weekday(DateRandom, vbSaturday) If Rest_Tage - Tag_heute >= 0 Then SunSaturdays = SunSaturdays + 2 FinalRestoreDate = diff - SunSaturdays Text = "Bitte sichern Sie den Stand sv.nightly." & FinalRestoreDate & " zurück" MsgBox text Case "YYY" DateRestore = InputBox ("Geben Sie das gewünschte Restoredatum im Format DD.MM.YYYY ein") Today = Now DateToday = FormatDateTime (Today, vbShortDate) Diff = DateDiff ("d", DateRestore, DateToday) nightly = (Diff) Text = "Bitte sichern Sie den Stand sv.nightly." & nightly & " zurück" MsgBox Text Case Else End Select Gruß Dirk Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.