Bruno Posted July 17, 2007 Share Posted July 17, 2007 Ik heb een tof bestandje dat iedereen goed kan gebruiken. Het bestand geeft een tabel met de landcode, de landnaam, telefoonprefix, vlag en uurverschil weer. Met dit uurverschil wil ik de tijd in het land berekenen in het veld Time. Al deze gegevens kan je goed gebruiken in een klantenbestand. Wanneer je bvb. een Griekse klant ingeeft dan kan je via een relatie of script al de bovenstaande gegevens tevoorschijn toveren. Enkel met de formule van het veld "Time" is iets mis. Misschien kan iemand dit verbeteren. Het gaat goed totdat je rond middernacht komt. landcodes.rar Quote Link to comment
0 Peter Wagemans Posted July 18, 2007 Share Posted July 18, 2007 OK, laten we de formule eens bekijken: Time( Case(Hour(Get(CurrentTime))+( HourDifference)>24;Hour(Get(CurrentTime))+( HourDifference)-24;Hour(Get(CurrentTime))+( HourDifference)); Minute(Get(CurrentTime)); Seconds(Get(CurrentTime)) ) Da's wel leuk, maar niet erg leesbaar. Probeer eens je code zo te formatteren: Time ( Case ( Hour (Get ( CurrentTime ) ) + ( HourDifference ) > 24 ; Hour ( Get( CurrentTime ) ) + ( HourDifference ) - 24 ; Hour ( Get ( CurrentTime ) ) + ( HourDifference ) ) ; Minute ( Get ( CurrentTime ) ) ; Seconds ( Get( CurrentTime ) ) ) Vervolgens gaan we een beetje vereenvoudigen, dat kunnen we vanaf versie 7: Let ( [ deLocaleTijd = Get ( CurrentTime ) ; hetLocaleUur = Hour ( deLocaleTijd ) ; hetUur = hetLocaleUur + CountryCodes::HourDifference ] ; Time ( Case ( hetUur > 24 ; hetUur - 24 ; hetUur ) ; Minute ( deLocaleTijd ) ; Seconds ( deLocaleTijd ) ) ) Je zegt dat het fout gaat rond middernacht. Ik zie nu duidelijk waarom: 24 uur is nog steeds goed, en da kan ni. Let ( [ deLocaleTijd = Get ( CurrentTime ) ; hetLocaleUur = Hour ( deLocaleTijd ) ; hetUur = hetLocaleUur + CountryCodes::HourDifference ] ; Time ( Case ( hetUur > 23 ; hetUur - 24 ; hetUur ) ; Minute ( deLocaleTijd ) ; Seconds ( deLocaleTijd ) ) ) Quote Link to comment
0 Bruno Posted July 18, 2007 Author Share Posted July 18, 2007 Inderdaad, je hebt gelijk . Het duurt allemaal wat langer om met die let-functie alles te verklaren maar het maakt het detecteren van fouten wel een stuk eenvoudiger. Merci. Proper werk. 6 keer gedownload...gene vette. Quote Link to comment
0 Stardust Posted July 18, 2007 Share Posted July 18, 2007 Bruno, Mooi werkstuk hoor en het is zomer hé ... daarom is de downloadwoede bij de meerderheid der bevolking niet zo groot Doe daar nog eens het advies van Peter bij en het is om het op z'n 'Walliaans' te zeggen in één woord ... Geweldig Danny Quote Link to comment
0 Peter Wagemans Posted July 18, 2007 Share Posted July 18, 2007 Inderdaad. Onze Clarify Smurf weet waarom. We zitten volop in de pruimentijd, en de enige reden waarom ik zoveel aanwezig ben is omdat ik een job heb voor een klant die... in bouwverlof is, dus ik zit heel de dag thuis te werken, en heb af en toe wat afleiding nodig. Inderdaad mooi werk Bruno, we zouden meer van die filetjes moeten hebben. Kijk, ik zal het goedmaken... zal een paar keer op "download" klikken. Voila Quote Link to comment
0 Bruno Posted July 18, 2007 Author Share Posted July 18, 2007 Bij bovenstaande formule ging toch nog iets mis en dit kwam door het volgende: Als hetUur>23 dan worden er 24 afgetrokken. Om 23:54 (Afghanistan) kreeg ik dus -0:06 want 23:54 - 24 = -0:06. Er moet dus rekening gehouden worden met dePlaatselijkeTijd. Als die >23:59:59 dan mogen er 24 afgetrokken worden. Moraal van het verhaal: Die Let-functie is onontbeerlijk bij moeilijke berekeningen. Het brengt het redeneren terug naar mensentaal. Nu ik weet dat het bouwverlof is, zal ik de volgende dagen nog wat eten op het forum plaatsen. Let ( [ deLocaleTijd = Get ( CurrentTime ) ; hetLocaleUur = Hour ( deLocaleTijd ) ; hetUur = hetLocaleUur + CountryCodes_HourDifference ; dePlaatselijkeTijd=Time(hetUur;Minute ( deLocaleTijd ) ;Seconds ( deLocaleTijd ) ) ] ; Time ( Case ( dePlaatselijkeTijd > Time(23;59;59) ; hetUur - 24 ; hetUur ) ; Minute ( deLocaleTijd ) ; Seconds ( deLocaleTijd ) ) ) Quote Link to comment
0 Peter Wagemans Posted July 18, 2007 Share Posted July 18, 2007 Schitterend. En bedankt, want de muizen liggen hier dood in de kast. Quote Link to comment
0 Bruno Posted July 18, 2007 Author Share Posted July 18, 2007 Er zat nog een fout in. Dit zou het moeten zijn. Ik heb nu reeds 15 uur en 57seconden nagekeken. Nog een kleine 8 te gaan Let ( [ deLocaleTijd = Get ( CurrentTime ) ; hetLocaleUur = Hour ( deLocaleTijd ) ; hetUur = hetLocaleUur + CountryCodes_HourDifference ; dePlaatselijkeTijd=Time(hetUur;Minute ( deLocaleTijd ) ;Seconds ( deLocaleTijd ) ) ] ; Time ( Case ( dePlaatselijkeTijd > Time(23;59;59) ; hetUur - 24 ; dePlaatselijkeTijd < Time(0;0;0) ; hetUur + 24 ; hetUur ) ; Minute ( deLocaleTijd ) ; Seconds ( deLocaleTijd ) ) ) Quote Link to comment
0 Stardust Posted July 19, 2007 Share Posted July 19, 2007 Nu ik weet dat het bouwverlof is, zal ik de volgende dagen nog wat eten op het forum plaatsen. Mooi zo Bruno, de hongerigen spijzen is een werk van barmhartigheid Hungry Danny (wanneer men tracht met roken te stoppen, heeft men altijd trek ) Quote Link to comment
Question
Bruno
Ik heb een tof bestandje dat iedereen goed kan gebruiken.
Het bestand geeft een tabel met de landcode, de landnaam, telefoonprefix, vlag en uurverschil weer.
Met dit uurverschil wil ik de tijd in het land berekenen in het veld Time.
Al deze gegevens kan je goed gebruiken in een klantenbestand.
Wanneer je bvb. een Griekse klant ingeeft dan kan je via een relatie of script al de bovenstaande gegevens tevoorschijn toveren.
Enkel met de formule van het veld "Time" is iets mis.
Misschien kan iemand dit verbeteren. Het gaat goed totdat je rond middernacht komt.
landcodes.rar
Link to comment
8 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.