Hallo,
Voor mijn stage moet ik een opdracht maken, een Backup administratie in access.
Ik zal even uitleggen wat het probleem is.
Ik heb een database gemaakt en alles loopt prima.
Nu heb ik een table met Servernaam, ip, BackupFrequentie, BackupMedium, BackupSoort, Tapenummer, PlanDatum
Nu wil ik als ik bij BackupFrequentie Dagelijks/Wekelijks/Maandelijks invoer er bij PlanDatum voor 1 jaar wordt ingevuld dus.
BackupFrequentie Wekelijks
PlanDatum 11-11-2004, 18-11-2004, 25-11-2004.
Nu heb ik al het 1 en ander in VBA gemaakt.
Alleen het toevoegen lukt nog niet echt. Ik krijg wel als ik Wekelijks invoeren dat ik de Module dan open maar dat is niet echt wat ik wil.
Hier onder is de Code:
--------------------------------------------------------------------------------------------------------
Option Compare Database
Option Explicit
Function SetDatum7DagenVooruit()
'
' SetDatum7DagenVooruit Macro
' Macro gemaakt op 03-11-04 door Tiels00
'
Dim SysteemJaar As Integer
Dim SysteemMaand As Integer
Dim SysteemDag As Integer
Dim Rest1 As Integer
Dim Rest2 As Integer
Dim SchrikkelJaar As Boolean
'Vraag met de functies Year, Month en Day de huidige
'systeemdatum (Now) op.
SysteemJaar = Year(Now)
SysteemMaand = Month(Now)
SysteemDag = Day(Now)
SchrikkelJaar = False
'We gaan eerst kijken of het een schrikkeljaar is. Dat is
'natuurlijk alleen van belang als het februari is, dus als
'Systeemmaand = 2. Een jaar is een schrikkeljaar in de volgende
'situatie: Als het deelbaar is door 4, maar niet door 100 tenzij
'het jaar deelbaar is door 400.
If SysteemMaand = 2 Then
'bepaal de rest bij deling van het systeemjaar door 4
Rest1 = SysteemJaar Mod 4
'Bekijk of de rest 0 is (volledig deelbaar door 4 dus)
If Rest1 = 0 Then
'Bepaal dan de rest bij deling door 100 en 400
Rest1 = SysteemJaar Mod 100
Rest2 = SysteemJaar Mod 400
'Als de rest bij deling door 100 nu niet 0 is, dan is het
'een schrikkeljaar. Is de rest bij deling door 100 wél 0,
'én de deling door 400 is ook 0, dan is ook een schrikkeljaar.
'anders niet.
If (Rest1 = 0 And Rest2 = 0) Or Not Rest1 = 0 Then
SchrikkelJaar = True
End If
End If
End If
'Start met het berekenen van de datum 7 dagen vooruit.
'Eerst tellen we 7 op bij de systeemdag:
SysteemDag = SysteemDag + 7
'Omdat de datum nu hoger kan worden dan het aantal dagen in de maand
'(immers, als je 7 optelt bij 31 december zou dat 38 december worden)
'Om dat te corrigeren gaan we van de systeemdag het maximaal aantal dagen
'aftrekken. Dat is per maand verschillend.
'Eerst gaan we kijken of SysteemDag nu groter is geworden dan het maximaal
'aantal dagen in de systeemmaand (houdt eventueel rekening met schrikkeljaar):
'De maanden 1,3,5,7,8,10 en 12 hebben 31 dagen,
'de maanden 4,6,9 en 11 hebben er 30 en maand 2 heeft er 28 of 29
'Maanden 2(februari) en 12(december) worden apart behandeld.
Select Case SysteemMaand
Case 1, 3, 5, 7, 8, 10
'is SysteemDag groter dan 31, trek er 31 van af en tel 1 op bij de
'SysteemMaand.
If SysteemDag > 31 Then
SysteemDag = SysteemDag - 31
SysteemMaand = SysteemMaand + 1
End If
Case 4, 6, 9, 11
'is SysteemDag groter dan 30, trek er 30 van af en tel 1 op bij de
'SysteemMaand.
If SysteemDag > 30 Then
SysteemDag = SysteemDag - 30
SysteemMaand = SysteemMaand + 1
End If
Case 2
'Er zijn twee situaties: schrikkeljaar en geen schrikkeljaar
'trek afhankelijk hiervan 28 of 29 af van SysteemDag (indien groter)
'en tel 1 op bij de maand
If SchrikkelJaar Then
If SysteemDag > 29 Then
SysteemDag = SysteemDag - 29
SysteemMaand = SysteemMaand + 1
End If
Else
If SysteemDag > 28 Then
SysteemDag = SysteemDag - 28
SysteemMaand = SysteemMaand + 1
End If
End If
Case 12
'als Systeemdag + 7 groter is dan 31, moet ook het
'systeemjaar met 1 worden opgehoogd:
If SysteemDag > 31 Then
SysteemDag = SysteemDag - 31
SysteemMaand = 1
SysteemJaar = SysteemJaar + 1
End If
End Select
'Je hebt nu de systeemdatum + 7 dagen vooruit. Deze kun je gebruiken
'in de applicatie.
'Ze moet echter wel worden teruggegeven (met de 'DateSerial functie):
If BackupFrequentie = Wekelijks Then SetDatum7DagenVooruit = DateSerial(SysteemJaar, SysteemMaand, SysteemDag)
End Function
Private Sub Class_Initialize()
End Sub
--------------------------------------------------------------------------------------------------------
If BackupFrequentie = Wekelijks Then SetDatum7DagenVooruit = DateSerial(SysteemJaar, SysteemMaand, SysteemDag)
If BackupFrequentie = Wekelijks Then PlanDatum to/add
SetDatum7DagenVooruit
Zo dacht ik het te kunnen toevoegen maar add/to bestaat volgens mij niet.
Ik heb alleen nog de code nodig om toe te voegen, weet iemand dat misschien.
Ik beschik ook over 3 boeken maar ik heb het niet zo snel kunnen vinden.
2. Ik heb in mijn 2e tabel een slectie vakje gemaakt, deze kan ik nu mooi filteren met Waar/Onwaar maar dit kan ik niet tellen met Count. Count kan alleen maar met getallen. Is er een mogelijk om toch deze rij te kunnen tellen?
3. Ik werk met parameters als datums, dus selecteren op datums, dat werkt super.
Echter wil ik nu met 2 parameters werken dus 1-10-2004 10-10-2004 alle datums hiertussen wil ik dan zien. Dit kan ik heel mooi instellen met Between/And maar ik wil het in een parameter hebben. Dit heb ik al gedaan maar alleen de eerste parameter schijnt dan te werken.
Voor mijn stage moet ik een opdracht maken, een Backup administratie in access.
Ik zal even uitleggen wat het probleem is.
Ik heb een database gemaakt en alles loopt prima.
Nu heb ik een table met Servernaam, ip, BackupFrequentie, BackupMedium, BackupSoort, Tapenummer, PlanDatum
Nu wil ik als ik bij BackupFrequentie Dagelijks/Wekelijks/Maandelijks invoer er bij PlanDatum voor 1 jaar wordt ingevuld dus.
BackupFrequentie Wekelijks
PlanDatum 11-11-2004, 18-11-2004, 25-11-2004.
Nu heb ik al het 1 en ander in VBA gemaakt.
Alleen het toevoegen lukt nog niet echt. Ik krijg wel als ik Wekelijks invoeren dat ik de Module dan open maar dat is niet echt wat ik wil.
Hier onder is de Code:
--------------------------------------------------------------------------------------------------------
Option Compare Database
Option Explicit
Function SetDatum7DagenVooruit()
'
' SetDatum7DagenVooruit Macro
' Macro gemaakt op 03-11-04 door Tiels00
'
Dim SysteemJaar As Integer
Dim SysteemMaand As Integer
Dim SysteemDag As Integer
Dim Rest1 As Integer
Dim Rest2 As Integer
Dim SchrikkelJaar As Boolean
'Vraag met de functies Year, Month en Day de huidige
'systeemdatum (Now) op.
SysteemJaar = Year(Now)
SysteemMaand = Month(Now)
SysteemDag = Day(Now)
SchrikkelJaar = False
'We gaan eerst kijken of het een schrikkeljaar is. Dat is
'natuurlijk alleen van belang als het februari is, dus als
'Systeemmaand = 2. Een jaar is een schrikkeljaar in de volgende
'situatie: Als het deelbaar is door 4, maar niet door 100 tenzij
'het jaar deelbaar is door 400.
If SysteemMaand = 2 Then
'bepaal de rest bij deling van het systeemjaar door 4
Rest1 = SysteemJaar Mod 4
'Bekijk of de rest 0 is (volledig deelbaar door 4 dus)
If Rest1 = 0 Then
'Bepaal dan de rest bij deling door 100 en 400
Rest1 = SysteemJaar Mod 100
Rest2 = SysteemJaar Mod 400
'Als de rest bij deling door 100 nu niet 0 is, dan is het
'een schrikkeljaar. Is de rest bij deling door 100 wél 0,
'én de deling door 400 is ook 0, dan is ook een schrikkeljaar.
'anders niet.
If (Rest1 = 0 And Rest2 = 0) Or Not Rest1 = 0 Then
SchrikkelJaar = True
End If
End If
End If
'Start met het berekenen van de datum 7 dagen vooruit.
'Eerst tellen we 7 op bij de systeemdag:
SysteemDag = SysteemDag + 7
'Omdat de datum nu hoger kan worden dan het aantal dagen in de maand
'(immers, als je 7 optelt bij 31 december zou dat 38 december worden)
'Om dat te corrigeren gaan we van de systeemdag het maximaal aantal dagen
'aftrekken. Dat is per maand verschillend.
'Eerst gaan we kijken of SysteemDag nu groter is geworden dan het maximaal
'aantal dagen in de systeemmaand (houdt eventueel rekening met schrikkeljaar):
'De maanden 1,3,5,7,8,10 en 12 hebben 31 dagen,
'de maanden 4,6,9 en 11 hebben er 30 en maand 2 heeft er 28 of 29
'Maanden 2(februari) en 12(december) worden apart behandeld.
Select Case SysteemMaand
Case 1, 3, 5, 7, 8, 10
'is SysteemDag groter dan 31, trek er 31 van af en tel 1 op bij de
'SysteemMaand.
If SysteemDag > 31 Then
SysteemDag = SysteemDag - 31
SysteemMaand = SysteemMaand + 1
End If
Case 4, 6, 9, 11
'is SysteemDag groter dan 30, trek er 30 van af en tel 1 op bij de
'SysteemMaand.
If SysteemDag > 30 Then
SysteemDag = SysteemDag - 30
SysteemMaand = SysteemMaand + 1
End If
Case 2
'Er zijn twee situaties: schrikkeljaar en geen schrikkeljaar
'trek afhankelijk hiervan 28 of 29 af van SysteemDag (indien groter)
'en tel 1 op bij de maand
If SchrikkelJaar Then
If SysteemDag > 29 Then
SysteemDag = SysteemDag - 29
SysteemMaand = SysteemMaand + 1
End If
Else
If SysteemDag > 28 Then
SysteemDag = SysteemDag - 28
SysteemMaand = SysteemMaand + 1
End If
End If
Case 12
'als Systeemdag + 7 groter is dan 31, moet ook het
'systeemjaar met 1 worden opgehoogd:
If SysteemDag > 31 Then
SysteemDag = SysteemDag - 31
SysteemMaand = 1
SysteemJaar = SysteemJaar + 1
End If
End Select
'Je hebt nu de systeemdatum + 7 dagen vooruit. Deze kun je gebruiken
'in de applicatie.
'Ze moet echter wel worden teruggegeven (met de 'DateSerial functie):
If BackupFrequentie = Wekelijks Then SetDatum7DagenVooruit = DateSerial(SysteemJaar, SysteemMaand, SysteemDag)
End Function
Private Sub Class_Initialize()
End Sub
--------------------------------------------------------------------------------------------------------
If BackupFrequentie = Wekelijks Then SetDatum7DagenVooruit = DateSerial(SysteemJaar, SysteemMaand, SysteemDag)
If BackupFrequentie = Wekelijks Then PlanDatum to/add
SetDatum7DagenVooruit
Zo dacht ik het te kunnen toevoegen maar add/to bestaat volgens mij niet.
Ik heb alleen nog de code nodig om toe te voegen, weet iemand dat misschien.
Ik beschik ook over 3 boeken maar ik heb het niet zo snel kunnen vinden.
2. Ik heb in mijn 2e tabel een slectie vakje gemaakt, deze kan ik nu mooi filteren met Waar/Onwaar maar dit kan ik niet tellen met Count. Count kan alleen maar met getallen. Is er een mogelijk om toch deze rij te kunnen tellen?
3. Ik werk met parameters als datums, dus selecteren op datums, dat werkt super.
Echter wil ik nu met 2 parameters werken dus 1-10-2004 10-10-2004 alle datums hiertussen wil ik dan zien. Dit kan ik heel mooi instellen met Between/And maar ik wil het in een parameter hebben. Dit heb ik al gedaan maar alleen de eerste parameter schijnt dan te werken.
[ Voor 8% gewijzigd door Wackmack op 04-11-2004 15:39 ]