alfashirt Posted September 9, 2008 Posted September 9, 2008 in het veld telefoonnummer heb ik graag volgende notatie: 050/31.81.18 of 09/123.34.56 de verschillende gebruikers die gegevens kunnen invullen in dit veld zijn soms verstrooid. daarom laat ik dit controleren via een script. ik controleer eerst als het veld leeg is via een if.... vervolgens controleer ik als er enkels cijfers gebruikt worden eveneens via een if.... vervolgens een controle dat de notatie goed is, eveens via een if.... en eveneens als het aantal cijfers klopt nl 9 cijfers via een if.... dit is 4 x een if.... kan dit efficienter, of laat ik het zoals het is. Quote
0 Stardust Posted September 9, 2008 Posted September 9, 2008 Wat jij nodig hebt m.i. is de case functie ... Meer info op: http://www.filemaker.nl/help/FunctionsRef-32.html Greetz, Danny Quote
0 Maarten Witberg Posted September 9, 2008 Posted September 9, 2008 probeer deze eens als automatisch invoeren berekening vervangt bestaande waarde: Let ( [ input = GetAsText ( Filter ( telefoonnummer ; "0123456789" ) ) ; chk = Length ( input ) = 9 ; gsm = Left ( input ; 2 ) = "09" ]; Case ( not chk ; TextColor ( telefoonnummer ; RGB ( 220 ; 0 ; 0 ) ) ; //geen negencijferig nummer, druk af in rood Left ( input ; 3 - gsm ) & "/" & //als gsm, dan de eerste twee cijfers nemen, anders de eerste 3 Middle ( input ; 4 - gsm ; 2 + gsm ) & "." & //als gsm, dan vanaf het derde getal, drie cijfers, anders vanaf het vierde getal, twee cijfers Middle ( input ; 6 ; 2 ) & "." & // altijd 2 cijfers Middle ( input ; 8 ; 2 ) //altijd 2 cijfers ) ) Quote
0 Stardust Posted September 9, 2008 Posted September 9, 2008 probeer deze eens als automatisch invoeren berekening vervangt bestaande waarde: Let ( [ ... ] Tegen zoveel geweld kan ik (helaas) niet op! Ik zou zeggen, 'meer van dat!' Danny Quote
0 JeanWM Posted September 9, 2008 Posted September 9, 2008 ...Tegen zoveel geweld kan ik (helaas) niet op! Danny Toch even bedenken Danny dat dat geweld wel voor problemen kan zorgen in Search/Find routines. Quote
0 Maarten Witberg Posted September 9, 2008 Posted September 9, 2008 ik herinner me zo'n waarschuwing maar het is niet beklijfd. Waar ging het ook al weer om? Het resultaat van deze auto-enter is een tekststring van cijfers en punten. De gebruiker zoekt op een nummer en dan? Tja. Als je dat mogelijk wilt maken kun je het zoeken scripten. Want je wilt dan ook dat een gebruiker kan zoeken met een geformatteerde string... Doel je daarop? Quote
0 alfashirt Posted September 10, 2008 Author Posted September 10, 2008 heb het een beetje aangepast zodat het per zonenummer in Belgie als volgt uitziet: Let ( [ input = GetAsText ( Filter ( fax ; "0123456789" ) ) ; chk = Length ( input ) = 9 ] ; Case ( not chk ; TextColor ( fax ; RGB (225; 0 ; 0 ) ) ; ( Left ( input ; 2 ) = "02" or Left ( input ; 2 ) = "03" or Left ( input ; 2 ) = "04" or Left ( input ; 2 ) = "09") and (Land = ""); TextColor ( Left ( input ; 2 ) & "/" & Middle ( input ; 3 ; 3 ) & "." & Middle ( input ; 6 ; 2 ) & "." & Middle ( input ; 8 ; 2 ) ; RGB ( 0 ; 0 ; 0 ) ) ; ( Left ( input ; 2 ) = "01" or Left ( input ; 2 ) = "05" or Left ( input ; 2 ) = "06" or Left ( input ; 2 ) = "07" or Left ( input ; 2 ) = "08") and (Land = ""); TextColor ( Left ( input ; 3 ) & "/" & Middle ( input ; 4 ; 2 ) & "." & Middle ( input ; 6 ; 2 ) & "." & Middle ( input ; 8 ; 2 ) ; RGB ( 0 ; 0 ; 0 ) ) ) ) Hiermee is er telkens een éénduidige aanduiding, wat het zoeken uniform maakt, naar gelang de zone. voor bijvoorbeeld zones Brussel : 02/123.45.68 voor bijvoorbeeld zone West vlaanderen: 050/12.34.56 Quote
0 alfashirt Posted September 10, 2008 Author Posted September 10, 2008 en zo heb ik het aangepast voor notatie van gsm of gewone telefoon in hetzelfde veld , daar er tegenwoordig veel mensen geen gewone tel meer hebben. Let ( [ input = GetAsText ( Filter ( tel ; "0123456789" ) ) ; chk9 = Length ( input ) = 9 ; chk10 = Length ( input ) = 10 ]; Case ( ((not chk9 and not chk10) or ( Left (input ; 2 ) ≠ "02" and Left (input ; 2) ≠ "03" and Left (input; 2 ) ≠ "04" and Left (input ; 2) ≠ "09" and Left (input ; 2 ) ≠ "01" and Left (input ; 2) ≠ "05" and Left (input; 2 ) ≠ "06" and Left (input ; 2) ≠ "07" and Left (input ; 2) ≠ "08") ); TextColor ( tel ; RGB ( 220 ; 0 ; 0 ) ) ; (Left (input ; 2 ) = "02" or Left (input ; 2) = "03" or Left (input; 3 ) = "042" or Left (input; 3 ) = "043" or Left (input ; 2) = "09") and (Land = "") and chk9 ; TextColor (Left ( input ; 2 ) & "/" & Middle ( input ; 3 ; 3 ) & "." & Middle ( input ; 6 ; 2 ) & "." & Middle ( input ; 8 ; 2 ) ; RGB (0;0;0)); (Left (input ; 2 ) = "01" or Left (input ; 2) = "05" or Left (input; 2 ) = "06" or Left (input ; 2) = "07" or Left (input ; 2) = "08") and (Land = "") and chk9; TextColor (Left ( input ; 3 ) & "/" & Middle ( input ; 4 ; 2 ) & "." & Middle ( input ; 6 ; 2 ) & "." & Middle ( input ; 8 ; 2 ) ; RGB (0 ; 0 ; 0 )); (not chk10 or ( Left ( input ; 3 ) ≠ "047" and Left ( input ; 3 ) ≠ "048" and Left ( input ; 3 ) ≠ "049" ) ); TextColor ( tel ; RGB ( 220 ; 0 ; 0 ) ); ( Left ( input ; 3 ) = "047" or Left ( input ; 3 ) = "048" or Left ( input ; 3 ) = "049" ) and (Land = "") and chk10 ; TextColor (Left ( input ; 4 ) & "/" & Middle ( input ; 5 ; 2 ) & "." & Middle ( input ; 7 ; 2 ) & "." & Middle ( input ; 9 ; 2 ) ; RGB (0; 0; 0)); TextColor ("000 000 000" ; RGB (225 ; 0 ; 0 )) ) ) resultaat: zone 050/12.34.56 zone 02/123.45.67 zone Luik: 04/312.12.12 en gsm: 0476/12.12.12 opmerkingen steeds welkom. Quote
0 Maarten Witberg Posted September 11, 2008 Posted September 11, 2008 ik dacht dat 09 gsm was.... net zoals in NL alle mobiele nummers met 06 beginnen. afijn.... er wordt wel erg veel gehardcodeerd zo. Als dit werkt is het ook goed. Maar je hebt wel een hoop gedoe als er bijv. een omschakelmoment komt naar tiencijferige nummers voor alle aansluitingen of als de systematiek anderszins wijzigt. je zou kunnen overwegen om in een utility tabel lijstjes aan te leggen met nummergroepen en dan met patterncount() te kijken of je beginreeks eronder valt. Dit is een wild idee, zal er eens over nadenken. Quote
0 alfashirt Posted September 11, 2008 Author Posted September 11, 2008 in Belgie beginnen alle Gsm nummers met 047 of 048 of 049 maar in de provincie Luik is het beginnummer 04. vandaar de opsplitsing. gsm nummers is 10 cijfers, gewone telefoonnummers 9. misschien veel werk, maar door de uniformiteit van schrijfwijze, kunnen we gemakkelijk opzoeken wie gebeld heeft (bv gemiste oproepen buiten kantooruren) Quote
0 Rony Rabijns Posted September 11, 2008 Posted September 11, 2008 ... maar door de uniformiteit van schrijfwijze, kunnen we gemakkelijk opzoeken wie gebeld heeft (bv gemiste oproepen buiten kantooruren) Dat doe ik anders. Ik laat ze zoeken/ingeven op een "gepoetst" veld: auto-enter Filter(telefoon;"0123456789") Op die manier kan je het telefoonnummer cijfermatig intikken en moet je niets afweten van formattering of geplogendheden. Quote
0 Stardust Posted September 11, 2008 Posted September 11, 2008 Dat doe ik anders. Ik laat ze zoeken/ingeven op een "gepoetst" veld: Soms zijn de eenvoudigste zaken, de meest wonderbaarlijke! Ik sta verstomd! Danny Quote
Question
alfashirt
in het veld telefoonnummer heb ik graag volgende notatie:
050/31.81.18 of 09/123.34.56
de verschillende gebruikers die gegevens kunnen invullen in dit veld zijn soms verstrooid. daarom laat ik dit controleren via een script.
ik controleer eerst als het veld leeg is via een if....
vervolgens controleer ik als er enkels cijfers gebruikt worden eveneens via een if....
vervolgens een controle dat de notatie goed is, eveens via een if....
en eveneens als het aantal cijfers klopt nl 9 cijfers via een if....
dit is 4 x een if....
kan dit efficienter, of laat ik het zoals het is.
12 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.