Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2
Hmmm.... Zou toch moeten werken? Of begrijp ik je verkeerd?When interval is Weekday ("w"), DateDiff returns the number of weeks between the two dates. If date1 falls on a Monday, DateDiff counts the number of Mondays until date2. It counts date2 but not date1.
@P_de_B:
Jij hebt het over de Weekday functie...
[ Voor 31% gewijzigd door RobIII op 02-09-2004 11:59 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
@Rob: heb ik net ge-edit ga jij mij nog verbeteren
[ Voor 48% gewijzigd door P_de_B op 02-09-2004 11:59 ]
Oops! Google Chrome could not find www.rijks%20museum.nl
• Bereken het aantal dagen dat er tussen date1 en date2 zit.
• Tel daar het aantal weken tussen date1 en date2 * 2 (=weekends) van af
...of iets in die richting...
Lijkt mij 't snelst... Niet rekening houdende met vakanties e.d. dan.
/edit/
Heb 'm effe geprobeerd:
1
2
3
| Public Function WorkDays(ByVal date1 As Date, ByVal date2 As Date) As Long WorkDays = DateDiff("d", date1, date2) - (DateDiff("ww", date1, date2) * 2) End Function |
Zolang je er geen weekends in stopt werkt 'ie prima
[ Voor 65% gewijzigd door RobIII op 02-09-2004 12:48 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Ik ben alleen niet zo'n VBA koning. Hoe zorg ik ervoor dat ik een functie vanuit SQL kan aanroepen. Ik heb nu een functie aangemaakt maar SQL zegt hem niet te herkennen!
Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2
Ik doe nooit geen ene r*k met Access, dus daar kan ik je helaas dan weer niet mee verder helpenDeddiekoel schreef op 02 september 2004 @ 12:30:
Ok, thanks!
Ik ben alleen niet zo'n VBA koning. Hoe zorg ik ervoor dat ik een functie vanuit SQL kan aanroepen. Ik heb nu een functie aangemaakt maar SQL zegt hem niet te herkennen!
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Dan zou 't moeten werken hoor...
The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.
ow, wacht...maak er eens een Public Function i.p.v. een Private Function van?Boss schreef op 02 september 2004 @ 12:34:
IS het een functie (Function) en staat hij gewoon in een module?
Dan zou 't moeten werken hoor...
Werkt het dan wel?
[ Voor 18% gewijzigd door RobIII op 02-09-2004 12:53 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
| Option Explicit
Function Work_Days(BegDate As Variant, EndDate As Variant) As Variant
' Note that this function does not account for holidays.
Dim WholeWeeks As Variant
Dim DateCnt As Variant
Dim EndDays As Integer
On Error GoTo Err_Work_Days
BegDate = DateValue(BegDate)
EndDate = DateValue(EndDate)
WholeWeeks = DateDiff("w", BegDate, EndDate)
DateCnt = DateAdd("ww", WholeWeeks, BegDate)
EndDays = 0
Do While CLng(DateCnt) <= CLng(EndDate)
If Format(DateCnt, "ddd") <> "Sun" And _
Format(DateCnt, "ddd") <> "Sat" Then
EndDays = EndDays + 1
End If
DateCnt = DateAdd("h", 24, DateCnt)
Loop
'Work_Days = WholeWeeks * 5 + EndDays
Work_Days = DateCnt
Exit Function
Err_Work_Days:
' If either BegDate or EndDate is Null, return a zero
' to indicate that no workdays passed between the two dates. '
If Err.Number = 94 Then
Work_Days = 0
Exit Function
Else
' If some other error occurs, provide a message.
MsgBox "Error " & Err.Number & ": " & Err.Description
End If
End Function |
Deze werkt op zich prima alleen is er een ding dat me niet bevalt. Ik zou graag de verschillen tussen de data op het uur nauwkeurig hebben. Maar in bovenstaande functie gaat de tijd informatie verloren. Hoe kan ik deze functie zo nauwkeurig maken?
Edit: De invoer gegevens hebben beide tijd informatie!
[ Voor 9% gewijzigd door Deddiekoel op 02-09-2004 16:15 ]
Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2
Hey, open je eigen topicP_de_B schreef op 02 september 2004 @ 15:14:
en feestdagen enzo?
Je zou de feestdagen in een Array kunnen gooien, dan voordat je de werkdagen uittelt effe door die array lussen en kijken of die feestdagen in het bereik liggen. Zo ja, dan hoog je een tellertje op en die trek je uiteindelijk af van het totaal
Dan kom je wel weer tegen andere problemen aan, zoals feestdagen die soms wel in weekends vallen en dan weer niet enzo... (kan er overigens zo snel geen bedenken
Ikzelf hou overigens nooit rekening met deze onzin. Want je hebt lui die tellen de ene feestdag wel, en anderen weer niet. "Werkdagen" houdt bij mij gewoon altijd ma-vr in, f*ck the holidays
Als het je niet bevalt pas je het maar aan. De laatste keer dat ik de P&W FAQ las stond er toch echt iets in in de trend van "zélf programmeren". We gaan je hier echt niet alles voorkauwen. Je kent nu de DateDiff, DateAdd enz. functies, en daarmee moet je een heel eind kunnen komen.Deddiekoel schreef op 02 september 2004 @ 16:14:
Ik ben nu bezig met een functie van MS zelf, andere functies boden me niet wat ik wilde.
<knip>
Deze werkt op zich prima alleen is er een ding dat me niet bevalt. Ik zou graag de verschillen tussen de data op het uur nauwkeurig hebben. Maar in bovenstaande functie gaat de tijd informatie verloren. Hoe kan ik deze functie zo nauwkeurig maken?
Edit: De invoer gegevens hebben beide tijd informatie!
En dan krijg je overigens meteen nog een vraag van me mee: Werkuren of "hele dagen uren"? Suc6!
En nog een laatste opmerking: Wat een ranzige code van MS
1
| If Format(DateCnt, "ddd") <> "Sun" And Format(DateCnt, "ddd") <> "Sat" Then... |
Daar heb je toch de WeekDay functie voor? Dit gaat dus mega fout op systemen met een andere taal dan EN. Verder zie ik dat ze een CLNG van een datum pakken, en hoewel dat best zal werken is dat IMO ook behoorlijk ranzig. En dan heb ik het nog niet gehad over het feit dat deze functie, dankzij de loop die erin zit, sneller/langzamer is naar gelang het verschil tussen de 2 datums. Reken voor de gein eens het vershil uit tussen 1/1/1920 en 1/1/2350
En waarom geeft die functie een Variant terug (en accepteert 2 variant parameters), en niet een Long (aantal dagen) of desnoods een Date ofzo? Access kent toch zeker wel een Long of Date data type?
Enniewee, ik vind het een enorm blok overbodige code. Dan vind ik mijn one-liner (hoewel weekends er +/- 1 dag ernaast zitten) toch echt wel mooier/efficiënter/sneller.
Daarmee wil ik verder trouwens niet zeggen dat we dit topic maar moeten laten verzanden in compleet offtopic gezever over hoe ranzig dit stukje MS broddelwerk wel/niet is. Nogmaals: Niks tegen MS, het verbaast me alleen dat dit van hun zelf af komt.
[ Voor 117% gewijzigd door RobIII op 02-09-2004 16:37 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2
nou, ik gaf alleen aan waar ik tegenaan gelopen ben toen ik een soortgelijke functie voor Crystal Reports heb gemaakt
Oops! Google Chrome could not find www.rijks%20museum.nl
Ik heb die DateValue dingen weggegooid en een controle erin gezet die kijkt of het restant minder is dan 24 uur.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| Function Work_Days(BegDate As Variant, EndDate As Variant) As Variant
' Note that this function does not account for holidays.
Dim WholeWeeks As Variant
Dim DateCnt As Variant
Dim EndDays As Integer
On Error GoTo Err_Work_Days
'BegDate = DateValue(BegDate)
'EndDate = DateValue(EndDate)
WholeWeeks = DateDiff("w", BegDate, EndDate)
DateCnt = DateAdd("ww", WholeWeeks, BegDate)
EndDays = 0
Do While DateCnt <= EndDate
If Format(DateCnt, "ddd") <> "Sun" And _
Format(DateCnt, "ddd") <> "Sat" Then
EndDays = EndDays + 1
End If
If DateDiff("h", DateCnt, EndDate) < 24 Then
Work_Days = WholeWeeks * 5 + EndDays
Exit Function
Else
DateCnt = DateAdd("d", 1, DateCnt)
End If
Loop
Work_Days = WholeWeeks * 5 + EndDays
Exit Function
Err_Work_Days:
' If either BegDate or EndDate is Null, return a zero
' to indicate that no workdays passed between the two dates. '
If Err.Number = 94 Then
Work_Days = 0
Exit Function
Else
' If some other error occurs, provide a message.
MsgBox "Error " & Err.Number & ": " & Err.Description
End If
End Function |
Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2
Just to be sure: Heb je mijn edit gezien waarin ik je wijs op allerlei potentiële problemen en ranzigheid in die functie?Deddiekoel schreef op 02 september 2004 @ 16:37:
Ik ben eruit!
Ik heb die DateValue dingen weggegooid en een controle erin gezet die kijkt of het restant minder is dan 24 uur.
• Taal afhankelijk
• Werken met Varianten i.p.v. Strong Typed vars
• Clng(datevar)
• ...
[ Voor 17% gewijzigd door RobIII op 02-09-2004 16:40 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
't Zal niet de eerste keer zijn. Ik ben eens een VB tutorial tegengekomen die bomvol stond met Goto's. Alsof beginners niet genoeg spaghetti code schrijvenRobIII schreef op 02 september 2004 @ 16:16:
Daarmee wil ik verder trouwens niet zeggen dat we dit topic maar moeten laten verzanden in compleet offtopic gezever over hoe ranzig dit stukje MS broddelwerk wel/niet is. Nogmaals: Niks tegen MS, het verbaast me alleen dat dit van hun zelf af komt.
Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.
Ik zie die zaken net pas en ze waren meer dan terecht. Pas met deze aanpassing werkt het echt!RobIII schreef op 02 september 2004 @ 16:39:
[...]
Just to be sure: Heb je mijn edit gezien waarin ik je wijs op allerlei potentiële problemen en ranzigheid in die functie?
• Taal afhankelijk("Sat" en "Sun")
• Werken met Varianten i.p.v. Strong Typed vars
• Clng(datevar)
• ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| Function Work_Days(BegDate As Date, EndDate As Date) As Integer
' Note that this function does not account for holidays.
Dim WholeWeeks As Integer
Dim DateCnt As Date
Dim EndDays As Integer
On Error GoTo Err_Work_Days
'BegDate = DateValue(BegDate)
'EndDate = DateValue(EndDate)
WholeWeeks = DateDiff("w", BegDate, EndDate)
DateCnt = DateAdd("ww", WholeWeeks, BegDate)
EndDays = 0
Do While DateCnt <= EndDate
If Weekday(DateCnt) <> 1 And _
Weekday(DateCnt) <> 7 Then
EndDays = EndDays + 1
End If
If DateDiff("h", DateCnt, EndDate) < 24 Then
Work_Days = WholeWeeks * 5 + EndDays
Exit Function
Else
DateCnt = DateAdd("h", 24, DateCnt)
End If
Loop
Work_Days = WholeWeeks * 5 + EndDays
Exit Function
Err_Work_Days:
' If either BegDate or EndDate is Null, return a zero
' to indicate that no workdays passed between the two dates. '
If Err.Number = 94 Then
Work_Days = 0
Exit Function
Else
' If some other error occurs, provide a message.
MsgBox "Error " & Err.Number & ": " & Err.Description
End If
End Function |
[ Voor 14% gewijzigd door Deddiekoel op 02-09-2004 17:29 ]
Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2
http://support.microsoft.com/?kbid=210562
Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2
Dat had ik al gezien, iedereen kan GooglenDeddiekoel schreef op 02 september 2004 @ 17:31:
Trouwens, ik heb de originele functie hier vandaan:
http://support.microsoft.com/?kbid=210562
Waarom geeft je functie nu een Integer terug? Waarom geen Long (of desnoods een Currency ofzo)? Tevens zie ik niet waar je functie nu uren teruggeeft (geeft nog steeds dagen terug
/edit/
[ Voor 22% gewijzigd door RobIII op 02-09-2004 18:15 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
Daarnaast is dit bijna mijn eerst VB ervaring dus ik zal nog wel verder gaan tweaken.
Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2