Jump to content
  • 0

verschil tussen twee data


Michel

Question

Posted

Ik dien het verschil tussen 2 data te berekenen. Op zich geen enkel probleem. Echter, de zon- en feestdagen tellen NIET mee.

 

Kan iemand me een tip geven? Alvast bedankt! :wink:

Recommended Posts

  • 0
Posted

Creëer een kalenderbestand voor de volgende 10 of 20 jaar en zet daar in een calcfield een telling bij die de zaterdagen en zondagen uitsluit. Op die manier krijg je voor elke dag een nummer (behalve dus voor de zaterdagen en de zondagen). Tel je bij dat nummer een aantal dagen bij, dan krijg je een nieuw nummer dat in je kalenderbestand overeenstemt met een bepaalde datum. Op die manier kan je bijvoorbeeld ook feestdagen zoals Kerstmis, Pasen enzovoort uitschakelen.

  • 0
Posted

Een bestand met één record per dag. Bevat een veld datum, een veld opmerkingen, een calc veld met de naam van de dag, een veld voor de nummering doorlopend (niet altijd nodig), een veld met je eigen nummering waarbij bepaalde dagen overgeslagen worden.

  • 0
Posted

Ik vind het persoonlijk niet zo'n mooie oplossing omdat je voor iedere dag een record aan gaat maken. Het lijkt mij mooier om een db met alle feestdagen te maken en dan met een relatie die aan de echte agenda te verbinden. Dan kun je ook meerdere evenementen op een dag maken enzovoorts. Dit is gewoon net wat beter uitgenormaliseerd. Verder hoef je ook niet om de x jaar de nieuwe records bij te maken en dus ook geen problemen daarmee te verwachten. Tenzij je natuurlijk dat iedere keer met een startscript controleert.

  • 0
Posted

Als ik het goed begrijp wil je een kalender maken waarbij je elke dag invoert voor de komende pakweg 10 jaar.

Dat is veel werk.

Ik denk even hardop aan een alternatief....

Is het geen idee om een bestandje te maken met alleen de uitgesloten datums.

Middels een calculatie: if(omitdate<=enddate and omitdate>=startdate; 1 ;0)

waarin je van elke record checkt of een omitdate er 'bij' zit kan je middels een selfjoin met count toch direct te weten komen hoeveel dagen er in mindering gebracht moeten worden.

De calculatie wordt dan zoiets: enddate-startdate-count(::selfjoin:omitdate)

Zou dat wat zijn?

  • 0
Posted (edited)

Hij is toch echt van mezelf hoor Luc!! :wink:

Ik was met het typen van de posting begonnen en toen aan het testen geslagen en dus heb ik jouw posting gemist.

Enfin, het werkt wat WIJ denken. :lol:

Ik krijg het alleen voor elkaar om de de check in het kalenderbestand uit te voeren indien er een 1 to many relatie gelegd is met het moederbestand.

Dus de aktieve record in het moederbestand krijgt een bij mij een 1.

Edited by Guest
  • 0
Posted (edited)
Als ik het goed begrijp wil je een kalender maken waarbij je elke dag invoert voor de komende pakweg 10 jaar.

Dat is veel werk.

Helemaal geen werk.

Dat is zo gepiept met een loopscriptje: in luttele seconden maak je twintig jaar aan. Zo'n bestand is ook niet groot (1400 Kb, dus niet eens anderhalve mega) en bevat evenmin een abnormaal aantal records. We gebruiken het default voor de agenda's zodat de klanten hun eigen bedrijfsvakantiedagen, opendeurdagen, enzovoort kunnen invoeren, wat natuurlijk niet kan als je enkel de officiële feestdagen opneemt.

Op die manier houd je de telling van alle dagen naast die van alle werkdagen. Het verschil tussen die twee hebben we nodig in heel wat calculaties.

Samengevat:

is snel gemaakt

neemt geen ruimte in

kost geen moeite

werkt in alle omstandigheden

kan default ingepast worden in alle solutions met agenda, events en dergelijke, en

last but not least: komt uit de Stefs Factories!!

Edited by Guest
  • 0
Posted (edited)
Het lijkt mij mooier om een db met alle feestdagen te maken en dan met een relatie die aan de echte agenda te verbinden. Dan kun je ook meerdere evenementen op een dag maken enzovoorts. Dit is gewoon net wat beter uitgenormaliseerd.

Sorry dat dit niet duidelijk was: het kalenderbestand staat inderdaad als een apart bestand naast het agenda- of het events-bestand.

Verder hoef je ook niet om de x jaar de nieuwe records bij te maken en dus ook geen problemen daarmee te verwachten. Tenzij je natuurlijk dat iedere keer met een startscript controleert.

Hier hoef je je zeker geen zorgen te maken: we gebruiken altijd een calendar van 20 jaar, die zal dus zeker voldoen en de EOL van de software zelf ruim overstijgen!

Edited by Guest
  • 0
Posted

Ben het helemaal met bovenstaande oplossing eens, maar als het alleen om het filteren van weekenden gaat kan het met een berekening.

 

Stel je hebt een veld start en stop van het type datum

 

(Int((stop-6)/7)-Int((start-6)/7))*5+
If(Mod(stop-6;7)-2>0;Mod(stop-6;7)-2;0)-
If(Mod(start-6;7)-2>0;Mod(start-6;7)-2;0)

 

Dit in een berekening met resultaat number en je hebt je aantal werkdagen.

  • 0
Posted

Niet eens aan gedacht zo'n simpel scriptje. :oops:

Voordeel is inderdaad dat het altijd werkt, ik moet steeds de key van de aktieve record 'setten'.

Het voordeel dat ik dacht te hebben om alleen de weg te laten records in de db op te nemen is eigenlijk een nadeel: het overzicht gaat verloren, want je hebt geen agenda.

Maar toch leuk dat het ook 'moeilijk' kan. :D

  • 0
Posted

Ik ben inderdaad op zoek geweest naar zo'n berekening, maar heb uiteindelijk de oplossing gevonden zoals AvD die voorstelt.

 

Bij mij ging het nog verder met het berekenen van werkuren, maar dat is daarna eigenlijk as easy as eating pancakes :wink:

  • 0
Posted

Sorry dat dit niet duidelijk was: het kalenderbestand staat inderdaad als een apart bestand naast het agenda- of het events-bestand.

Ja, alleen staat er bij jouw oplossing voor iedere dag een record in wat ik niet een nette oplossing vind. Zeker als je meerdere items per dag wilt hebben kun je beter alleen de uitzonderingen in die tabel zetten zoals beschreven in mijn, oke arnoud zegt dat het ook een beetje zijn idee is ;) Ik heb pas nog een fm applicatie aan moeten passen die op dezelfde manier werkt. Ook wilde ik de ingevulde applicatie legen, dan moet ik dus die velden allen leeg maken want ik mag ze niet verwijderen. Gewoon niet handig vind ik, maargoed daar is gelukkig iedereen vrij in.
Hier hoef je je zeker geen zorgen te maken: we gebruiken altijd een calendar van 20 jaar, die zal dus zeker voldoen en de EOL van de software zelf ruim overstijgen!
Ik vind dat persoonlijk een beetje een slechte insteek, maargoed als je goedkoop en snel wilt produceren kan ik me de keuze voor een techniek als deze wel voorstellen.

 

Waar ik eigenlijk een beetje op doel is dat je de database normalisatie aan gaat passen om zo een beetje gemakkelijker de gegevens er uit te kunnen halen. Dat is neit een manier die ik graag zie en ook zeker niet graag toe zou gaan passen.

  • 0
Posted

Ook wilde ik de ingevulde applicatie legen, dan moet ik dus die velden allen leeg maken want ik mag ze niet verwijderen.

 

"Save as.... Kloon van actief bestand (geen records)" is geen optie? :idea:

  • 0
Posted

Al dat gepalaver…geen woorden maar daden aub! :twisted:

Wil er iemand eens met een concreet voorbeeld afkomen dat werkt ZONDER scripting, d.w.z. dat een gebruiker 2 data invult dat er DIRECT het aantal werkdagen verschijnt, dit met een bestandje waar verlofdagen ingevuld kunnen worden en ZONDER een bestand met alle dagen zoals AvD het beschrijft? Dus niet met een vervelend knopje dat het aantal dagen moet gaan opzoeken via een script?

 

MVG

Stef

  • 0
Posted

Ook wilde ik de ingevulde applicatie legen, dan moet ik dus die velden allen leeg maken want ik mag ze niet verwijderen.

"Save as.... Kloon van actief bestand (geen records)" is geen optie? :idea:

Volgens mij niet, want dan heb ik weer neit al die records voor de dagen, en ik was te lui om een scriptje voor nieuwe dagen te gaan schrijven.
Al dat gepalaver…geen woorden maar daden aub!

Wil er iemand eens met een concreet voorbeeld afkomen dat werkt ZONDER scripting, d.w.z. dat een gebruiker 2 data invult dat er DIRECT het aantal werkdagen verschijnt, dit met een bestandje waar verlofdagen ingevuld kunnen worden en ZONDER een bestand met alle dagen zoals AvD het beschrijft? Dus niet met een vervelend knopje dat het aantal dagen moet gaan opzoeken via een script?

Ik vind het opzich wel goed dat er eens een topic is dat niet meteen vol wordt gezet met allerlei voorbeeldbestanden maar waar echt gediscussieerd wordt over de verschillende mogelijkheden. Ik heb overigens al enkele maanden geen FM meer op mijn systeem staan dus ik kan je geen voorbeeldbestandje geven.
  • 0
Posted

Okee ik heb er eentje gemaakt, maar het is nog niet helemaal okee. Het werkt goed, maar nog niet als 1 van de 2 data een weekenddag is....... Ik kan het vast posten, maar werk liever die fout er nog even uit. :roll:

 

Bovendien is het vereist dat de 2e datum NA de eerste ligt..... maar ook daar is wel wat op te verzinnen. En het mag niet met scripts, en niet met relaties, toch? Nou okee ik doe m'n best....

  • 0
Posted

:( Nou ik krijg het niet voor elkaar. Ik heb wel iets dat werkt als beide data gewone werkdagen zijn, maar dat geklooi met die weekends... :twisted:

 

Ik heb voor die weekends geprobeerd te corrigeren zo van "Als een datum op een zaterdag of een zondag valt, ga dan rekenen met de erop volgende maandag" uitgaande van het feit dat het voor werkdagen wel klopt. Dit moet op te lossen zijn, maar misschien kan iemand iets met mijn beginnetje?

Werkdagen.fp5

  • 0
Posted

Hi Doc,

 

Die weekends zijn het probleem niet, daar bestaat een formuletje voor (denk aan de funtie "DayofWeek").

 

Het gaat hem om die feestdagen. Dit is scriptable, maar daar ben ik geen voorstander van (maar misschien is dit persoonlijk).

  • 0
Posted

Ik snap dit ongeveer maar wie helpt mij even:

(Int((stop-6)/7)-Int((start-6)/7))*5+ 

Dit deel snap ik, hij kijkt naar het aantal hele weken en vermenigvuldigd het met de 5 werkdagen. Toch?

 

Maar dit deel wat er bij opgeteld wordt is ingewikkelder.

If(Mod(stop-6;7)-2>0;Mod(stop-6;7)-2;0)- 
If(Mod(start-6;7)-2>0;Mod(start-6;7)-2;0) 

Wat doet dit precies? En is er bv verschil tussen (stop-6)/7 en (stop-6;7)? Is ; en / niet allebei delen door?

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...