VBA, bij een datum kijken of dit een feestdag is

Status
Niet open voor verdere reacties.

dinoshop

Terugkerende gebruiker
Lid geworden
8 sep 2000
Berichten
1.100
ik werk met een formulier waarin de uren worden gesplitst naar % en uitbetalingen.
daarin heb ik nu een stuk VBA gedownload en er in gezet deze berekend feestdagen.
de vraag is als volgt hoe krijg ik dit samen gevoegd zodat als er een datum word aangemaakt de controle of dit een feestdag en dit zo is de percentages worden ingevuld als feestdag dus 200 %

hoop dat het iets duidelijk is
hierbij de link waar het een en ander te vinden is .
http://wikisend.com/download/366736/factuur_2014-09-18 final ready1.zip
 
Beste dinoshop,

Ik heb uw titel aangepast omdat "Een uitdaging" niets zegt over het probleem dat u heeft.

Succes met de vraag en een prettige dag verder :thumb:
 
Je db had nog verwijzingen naar de Calendar control.... als je die verwijdert, zijn er nog wel wat andere functies te verbeteren. Al die IF blokken kun je vervangen door één regel:
Code:
    [100].Value = Nz(DLookup("[totuur]", "100", "[PlanID]=" & [planId]), 0)
Maar ik snap niet helemaal waar je die berekening met de feestdagen wilt maken.
 
Die suggestie heb je al gekregen :). Nu nog antwoord op de vraag waar de berekening moet worden gemaakt; de functie zelf is op zich prima (zou hem alleen niet op het formulier zetten maar in een aparte module zodat je hem altijd kunt gebruiken).
 
sorry heb het gedaan werkt perfect nu .
alleen de koppeling nog
zou het zo willen zien zodra de datum een feestdag is hij dit aangeeft en meteen de uren naar 200 % zet .
heb al veel geprobeerd in query en formulier vba kom er zelf niet uit .
lijkt zo eenvoudig dus niet voor mij .
bv if IsZZFVdag =true then me.dag = feestdag
en dit programmatje heb ik even gemaakt, maar in werkelijkheid loopt dit in een heel groot programma .
en daar gebruik ik wel Functie dus dat zit snor.
het is echt de koppeling waar ik een probleem mee heb .
 
zou het zo willen zien zodra de datum een feestdag is hij dit aangeeft en meteen de uren naar 200 % zet .
heb al veel geprobeerd in query en formulier vba kom er zelf niet uit .
Dat is nog geen antwoord op de vraag; ik wil weten wanneer dat moet gebeuren. Op basis van reeds ingevoerde datums kun je de functie al in de query zetten, en op basis van dat extra veld kun je in diezelfde query ook al de bedragen laten uitrekenen. Dat hoeft allemaal niet op het formulier gedaan te worden; beter zelfs in de query.
 
snap je op het moment dat de datum word ingevuld moet hij kijken of dit een feestdag is zo ja dan moet hij dit dus op 200% uitbetaling zetten.

bv 04-04-2015 is een paasdag normaal is dit een gewone weekdag dus 100% en misschien na 19:00 120%
dit is wat er nu dus ook gebeurd de uren worden zo ingevuld maar zou dus omdat een feestdag is deze moeten aanpassen naar 200% en daar ga ik de mist in.

in query als expressie gezet Feestdag werkt niet .
in de tussen tijd probeer ik van alles om er toch zelf achter te komen maar zonder resultaat dus de hoop licht bij jouw .

je hebt het a over een query om het geheel aanpassen heb jij een voorbeeld ?
 
Laatst bewerkt:
Je huidige functie checkt behalve op feestdagen ook op weekends. Dat stuk
Code:
    If Weekday(datum, vbMonday) > 5 Then
        IsZZFVdag = True
        GoTo einde
    End If
moet je er dus uithalen als je voor de feestdagen een apart tarief hebt.
 
wat ik ook doe kom er niet uit .
als weekdag groters dan vrijdag dan iszzfdag = waar .
dat is wat de formule weer geeft
maar werkt niet .
zou zo iets moeten zijn als datum iszzfdag = dan dag is feestdag en deze moet dan wijzen naar 200%
 
Begin eens met het veld [Dag] weg te gooien; de dag haal je namelijk met een formule uit het veld [Datum]. Daar heb je tenslotte queries voor! Je vervangt het veld dan door deze formule:
Code:
Dag: IIf(IsZZFVdag([Datum])=Waar;"Feestdag";Format$([Datum];"dddd";2;2))
 
hij maakt er nu mooi feestdag van als dat zo is, voor de rest de normale dagen das dus goed.
maar hij maakt er nog steeds geen 200% van
 
Klopt, dat heb ik ook niet gemaakt :). Op basis van deze IIf kun je zelf toch wel een formule maken die de prijs berekent?
 
das waar dat kan maar zoals je ziet zit er in systeem een stukje VBA dat kijkt naar welke procenten bij de dagen hoort bv Zondag 200%
en daar zit dus de kneep feestdag zou ook 100% moeten worden en dat doet die via de aanduiding week zondag of zaterdag vergelijk deze dagen met de tijden die er bij horen en %
hoe ik wend of draai dat krijg ik dus niet voor mekaar.
 
De VBA procedure kijkt alleen of een dag een feestdag is of niet; de output ervan is een Boolean. De percentages moet je dus ergens anders vandaan halen. Bijvoorbeeld met een DLookup.
 
ik begrijp je goed maar dan zijn omwegen ik denk dat er een mogelijkheid moet zijn om dit zo te maken met de bestaande gegevens dus 100% 200% enz .
ik blijft het proberen alleen wil ik weten kijkt dit naar datum of naar week zondag en zaterdag.
zoals je ziet is weekdag redelijk normale uren en zondag van 00:00 tot 23:59 200 %
het moet toch zo kunnen zijn dat een datum feestdag is hij bv zondag neemt als berekening
ik blijf zoeken naar de oplossing maar hulp is welkom.
 
het moet toch zo kunnen zijn dat een datum feestdag is hij bv zondag neemt als berekening
Dat kan ook, als je een andere IIF gebruikt! Je maakt overigens, als ik je laatste bericht lees, onderscheid tussen de zaterdag en de zondag (en feestdagen). Da's niet handig, want je functie beschouwt elke niet-werkdag (en feestdag) als feestdag. En dan kun je niet rekenen. Ofwel alle uitkomsten die een dag als feestdag bestempelen gebruik je om het tarief * 200% te berekenen en de overige dagen als 100% (IF is dan: Als dag = feestdag, tarief * 2, anders tarief) ofwel je moet je functie aanpassen dat hij alleen die dagen als feestdag bestempelt die jij op 200% wilt laten betalen.
 
hij blijft deze fout geven
expressie.png
in vba staat toch echt deze Functie
 
Ik heb het je al eerder gezegd (berichtje #5): de functie zoals je hem nu hebt neergezet werkt alleen op je formulier. Je moet hem verplaatsen naar een algemene module wil je hem ook in queries kunnen gebruiken. Snap eerlijk gezegd ook niet waarom j ehem überhaupt op het formulier gebouwd hebt; je wint er namelijk niks mee.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan